机器学习方法在 StackExchange 网站中的应用

机器算法验证 机器学习
2022-01-19 17:53:20

我这学期有一门机器学习课程,教授要求我们找到一个现实世界的问题,并通过课堂上介绍的一种机器学习方法来解决它,例如:

我是stackoverflowstackexchange的粉丝之一,并且知道这些网站的数据库转储是向公众提供的,因为它们很棒!我希望我能找到一个关于这些数据库的好的机器学习挑战并解决它。

我的点子

我想到的一个想法是根据问题正文中输入的单词来预测问题的标签。我认为贝叶斯网络是学习问题标签的正确工具,但需要更多研究。无论如何,在用户完成输入问题的学习阶段之后,应该向他建议一些标签。

请告诉我

作为经验丰富的人,我想就 ML 向统计社区提出两个问题:

  1. 你认为标签建议至少是一个有机会解决的问题吗?你有什么建议吗?我有点担心,因为 stackexchange 还没有实现这样的功能。

  2. 您对基于 stackexchange 数据库的 ML 项目有任何其他/更好的想法吗?我发现很难从 stackexchange 数据库中找到可以学习的东西。


关于数据库错误的考虑: 我想指出,尽管数据库很大并且有很多实例,但它们并不完美并且容易出错。显而易见的一个是不可靠的用户年龄。即使是为问题选择的标签也不是 100% 正确的。无论如何,我们应该在选择问题时考虑数据正确率的百分比。

关于问题本身的考虑:我的项目不应该是data-mining这样的。它应该是 ML 方法在现实世界中的应用。

3个回答

的,我认为标签预测是一个有趣的问题,而且你很有可能获得“成功”。

以下是一些可能有助于集思广益和进一步探索该主题的想法。我认为这样的项目可以采取许多潜在的有趣方向。我猜想只要认真尝试以下一两个问题,就可以完成一个绰绰有余的项目,而且您可能会提出比我提出的问题更有趣的问题。

我将对什么被认为是机器学习采取非常广泛的看法。毫无疑问,我的一些建议最好归类为探索性数据分析和更传统的统计分析但是,当您制定自己的有趣问题时,它可能会在一些小方面有所帮助。你会注意到,我试图解决我认为在增强网站功能方面会很有趣的问题。当然,还有许多其他有趣的问题可能与网站友好性无关。

  1. 用户行为的基本描述性分析:我猜这个网站的用户参与有一个非常清晰的每周循环模式。网站什么时候流量最多?例如,一周内按小时分层的用户参与度图表是什么样的?您需要根据网站整体流行度随时间的变化进行调整。这就引出了一个问题,自成立以来,该网站的受欢迎程度发生了怎样的变化?自加入以来,“典型”用户的参与度如何随时间变化?我猜它在开始时会迅速上升,然后是高原,并可能在加入几周左右后向南发展。
  2. 问题和答案的最佳提交:深入了解第一个问题似乎自然会导致一些更有趣(在 ML 意义上)的问题。假设我有一个需要回答的问题。如果我想最大限度地提高获得回复的可能性,我应该什么时候提交?如果我正在回答一个问题并且我想最大化我的投票数,我应该什么时候提交我的答案?也许这两个的答案是非常不同的。这如何因问题的主题而异(例如,由相关标签定义)?
  3. 用户和主题的双聚类:在兴趣方面,哪些用户最相似,也许是通过标签来衡量的?根据哪些用户参与,哪些主题最相似?你能想出一个很好的可视化这些关系吗?其分支将是尝试预测哪些用户最有可能提交特定问题的答案。(想象一下向 SE 提供这样的技术,以便用户可以收到潜在有趣问题的通知,而不仅仅是基于标签。)
  4. 按行为对回答者进行聚类:关于回答者如何使用本网站,似乎有几种不同的基本行为模式。你能想出特征和聚类算法来根据回答者的行为对他们进行聚类吗?集群是可解释的吗?
  5. 建议新标签:您能否根据从数据库中当前的问题和答案中推断主题来提出新标签的建议。例如,我相信最近添加了标签 [mixture-model] 是因为有人注意到我们收到了一堆相关的问题。但是,似乎一种信息检索方法应该能够直接提取这些主题,并有可能将它们推荐给版主。
  6. 地理位置的半监督学习:(从隐私的角度来看,这可能有点棘手。)一些用户列出了他们所在的位置。其他人没有。使用使用模式和潜在的词汇等,您可以在每个用户的位置上放置一个地理置信区域吗?直观地说,就经度而言,这似乎比纬度更准确。
  7. 自动标记可能的重复和高度相关的问题:该站点已经具有类似的功能,右侧边距中的相关栏。找到几乎完全相同的重复项并提出建议可能对版主有用。在 SE 社区中跨站点执行此操作似乎是新事物。
  8. 流失预测和用户保留:使用每个用户历史记录中的特征,您能否预测下一次您希望看到它们的时间?你能根据他们缺席的时间和他们过去的行为特征来预测他们返回站点的概率吗?例如,这可以用于尝试注意用户何时有“流失”的风险并让他们参与(例如,通过电子邮件)以努力留住他们。一种典型的方法是在一段固定的不活动时间后发送一封电子邮件。但是,每个用户都是非常不同的,并且有很多关于很多用户的信息,因此可以开发一种更加量身定制的方法。

我也在考虑标签预测,我喜欢这个主意。我觉得这是可能的,但在获得最终数据集之前,您可能需要克服许多问题。所以我推测标签预测可能需要很多时间。除了不正确的标签之外,最多 5 个标签的限制可能会起作用。还有一些标签是其他标签的子类别(例如,“多重比较”可以被视为“显着性测试”的子类别)。

我没有检查可下载的数据库中是否包含投票时间,但一个更简单且仍然有趣的项目可能是根据初始投票预测一个问题的“最终”投票数(可能在 5 个月后),以及接受答案的时间。

这是一个很好的问题。我也认为公开可用的 StackExchange 数据集会成为很好的分析对象。这些非常不寻常,以至于它们也可能是新统计方法的良好测试平台。无论如何,拥有如此大量结构良好的数据是不寻常的。

cardinal提出了一些对 StackExchange 实际有用的东西。我不会局限于此。

这是一个明显的分析候选者,尽管它没有明显的用途。在其他条件相同的情况下,高代表用户更有可能获得支持,这是一个显着的效果。然而,这种效果对于模型来说可能不是微不足道的。由于我们不能很容易地比较用户之间的有用性,一个明显的方法是假设用户的答案总是同样有用(通常不是真的,但必须从某个地方开始),然后添加一个通货膨胀术语来解释他日益增长的声誉. 然后可以(我想)添加一些术语,这些术语可以解释他的答案随着经验的增加而变得更好。也许这可以通过某种时间序列来处理。我不确定数据间隔将如何影响这一点。这可能是一个有趣的练习。

如果/当我想到它们时,我会添加更多示例。

有人知道基于 SE 数据的统计研究论文吗?此外,艾萨克提到数据有错误。有人知道更多吗?