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


37

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

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

我的想法

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

请告诉我

我想向经验丰富的stats社区询问ML两个问题:

  1. 您是否认为标签建议至少是一个有机会解决的问题?您对此有何建议?我有点担心,因为stackexchange尚未实现此类功能。

  2. 您是否对基于stackexchange数据库的ML项目有其他/更好的主意?我发现很难从stackexchange数据库中学习一些东西。


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

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

Answers:


28

是的,我认为标签预测是一种有趣的方法,您可以很好地掌握“成功”的知识。

以下是一些想法,旨在帮助进行头脑风暴和对该主题的进一步探索。我认为这样的项目可以采取许多潜在的有趣方向。我猜想,认真尝试以下一项或多项工作将构成一个绰绰有余的项目,并且您可能会提出比我提出的问题更有趣的问题。

对于什么是机器学习,我将有一个非常广泛的看法。毫无疑问,我的一些建议可以更好地归类为探索性数据分析和更传统的统计分析。但是,也许在您提出自己的有趣问题时,它会在某种程度上有所帮助。您会注意到,我试图解决一些我认为在增强网站功能方面很有趣的问题。当然,还有许多其他有趣的问题,这些问题可能与站点友好性无关。

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

1
@红衣主教。多数民众赞成在一个很好的答案,并鉴于所有这些数据的可用性,这将是一个有趣的项目。
richiemorrisroe 2011年

1
您的大多数建议对我来说似乎都是实用且与ML相关的。无论如何,其中一些应该处理错误和不完整的数据。遗憾的是,我对数据挖掘和清理没有足够的了解,也没有足够的时间来学习它。我希望其他统计人员对这些想法做一些工作,并为SE社区做出贡献并给他们留下深刻的印象:)
Isaac

2
@Isaac,我提供的清单并非意料之中。它仅旨在潜在地帮助进行头脑风暴。根据项目的性质,我认为处理1-2个项目将是可以预期的。干杯。
主教

1
所有想法都是好事或好事,但是我最喜欢“用户和主题的聚类”……针对潜在有趣问题的推荐系统将是很棒的。
steffen 2011年

9

我也在考虑标签预测,我喜欢这个主意。我有可能,但是在到达最终数据集之前,您可能需要克服许多问题。因此,我推测标签预测可能需要很多时间。除了错误的标签外,最多5个标签的限制也可能起作用。同样,某些标签是其他标签的子类别(例如,“多个比较”可以视为“重要性测试”的子类别)。

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


据我所记得,您对每个用户的投票都带有日期和问题ID。
chl

(+1)用于投票预测。好想法!
steffen 2011年

1
这个项目看起来很棒,特别是如果我们很快为用户预测了vpvote计数。进一步的工作可以是告诉用户什么阻碍了他/她的问题,哪些改进可以使他的问题变得流行。无论如何,一如既往地选择特征确实是一项重要且具有挑战性的任务,而此类预测的执行高度取决于此选择。TL; DR我喜欢您的想法
Isaac

2

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

cardinal建议了一堆实际上对StackExchange有用的东西。我不会局限于此。

尽管没有明显的用途,但这是一个显而易见的分析对象。在其他条件相同的情况下,高知名度用户更有可能获得投票,这是一个明显的影响。但是,此效果对于模型而言可能并非微不足道。由于我们无法轻松地比较各个用户的有用性,因此一种显而易见的方法是假设用户的答案总是同样有用(通常不正确,但必须从某个地方开始),然后添加一个通货膨胀字词来说明他的声誉越来越高。然后(我想)可以添加一些术语,以解释他的答案随着经验的增加而变得更好。也许可以通过某种时间序列来解决。我不确定数据间隔会如何影响这一点。这可能是一个有趣的练习。

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

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


确实,这是一个有趣的问题,我相信AndyW开始在博客文章中对此问题进行分析,并在不久前提出该问题。我确实对您的说法感到奇怪,即这种影响“明显”,我并不完全相信实际上存在。然后,您继续提出一种建模方法,但这通常不包括尝试回答您说已经有肯定答案的确切问题吗?
主教

@cardinal:您是否有指向博客文章的链接?我不确定我是否理解你的最后一句话。特斯(Tes),我认为这种效果是真实且引人注目的,至少在用户的名字是Skeet的情况下如此,但是在这一点上,这只是一个轶事,尽管印象深刻。因此,如果您愿意,可以用假设代替“显着效果”。分析当然会尝试确认或否认它,并测量效果的强度(如果存在)。
Faheem Mitha

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.