预测等待时间的最佳建模技术?

机器算法验证 时间序列 机器学习 广义线性模型 Python
2022-03-16 14:39:00

我正在探索一些 Stack Overflow 数据。在其他变量中,我有关于提问时间和回答时间的变量。

我有兴趣根据编程语言预测提问者可能期望等待多长时间才能回答他们的问题。

我有 26k 观察结果,分为 10 种语言。在格式方面,我可以将提问和回答的问题之间的时间差格式化为整数,并根据需要通过编程语言对数据进行分组。

理想情况下,我的模型的输出将非常简单:只是一个整数/浮点数,表示用户通常希望在他们的问题得到回答之前等待的分钟数。

什么是最合适的建模/机器学习技术(最好是在 Python 中)?我在StatsModels中探索了各种 GLM 类型,但找不到明显合适的东西。由于数据既不是连续的也不是线性的,我不认为 OLS 是正确的。数据显然也不是二元的,所以逻辑回归已经出局了。由于我只是将时间差异作为整数处理,我认为这也不需要时间序列分析模型。

作为记录,这只是一个基于公开可用的 Stack Overflow 数据转储的个人项目。我与 Stack Overflow 没有任何关系。

2个回答

等待时间通常可以通过指数分布建模,但这更好地描述了相同类型的两个事件之间的时间,例如,它可能很好地模拟了两个后续问题之间的时间。

回答时间有一些更复杂的属性:

  • 很有可能永远不会被回答
  • 在实际出现答案之前会有一些延迟
  • 复杂的问题需要更长的时间(可能被有问题的#characters 大致捕获?)

由于这些原因,指数分布不会完美匹配。关于延迟的点是最严重的缺陷。生存分析可能是另一种选择,但也没有让人们“等待”时间阅读和理解问题,然后才能回答。

其他问题包括对一天中的时间和星期几的依赖。可能有垃圾邮件机器人可以非常快速地回答问题。

由于无论如何这都是探索性的,我将从绘制数据开始。从一些直方图开始,直到得到答案,看看有多少从未得到答案。按一天中的时间和一周中的一天走相同的图。看看有没有区别。然后从那里计划。

我已经接受了上面的答案,并且只是将其写为答案,因为我认为我的研究可能对其他 Python 用户有益。

上面的评论和答案有助于引导我进行生存分析。在探索了StatsModels中的建模选项后,我发现了Cameron Davidson Pilon (@Cam.Davidson.Pilon)的Lifelines库。

我可以向任何希望在 Python 中进行基于持续时间的分析的人彻底推荐 Lifelines。它在很多方面都很出色。我特别喜欢它在理论上和实践上解决审查制度概念的方式。考虑到这个库是多么优雅和有效,以及生存分析的应用范围是多么广泛,我有点惊讶 Lifelines 并没有被更多人知道。

我也可以推荐观看这个介绍性谈话它让我立即启动并运行 Lifelines。