StackOverflow 标签预测器...请推荐一种机器学习方法?

数据挖掘 机器学习 分类
2022-03-11 10:28:20

我正在尝试预测 stackoverflow 问题的标签,但我无法确定哪种机器学习算法将是正确的方法。

输入:作为我挖掘 stackoverflow 问题的数据集,我对数据集进行了标记化,并从该数据中删除了停用词和标点符号。

我尝试过的事情:

  1. 特遣部队
  2. 在数据集上训练朴素贝叶斯,然后给用户定义的输入来预测标签,但它不能正常工作
  3. 线性支持向量机

我应该使用有监督或无监督的 ML 算法?如果可能,请从头开始建议正确的 ML 方法。PS:我有 StackOverflow 上所有标签的列表,无论如何这会有帮助吗?谢谢

3个回答

这个确切的问题是由 Facebook 赞助的 kaggle 比赛。您感兴趣的特定论坛主题是许多顶级竞争对手解释他们的方法的主题,这应该为您提供比您可能正在寻找的更多信息:https ://www.kaggle.com/c/facebook-recruiting -iii-关键字提取/论坛/t/6650/share-your-approach

一般而言,似乎大多数人将问题视为受监督的问题。它们的主要特征是文本的 tf-idf 或未加权 BOW 表示,并且它们集成了 1000 多个单标签模型。比赛的获胜者欧文指出,标题文本是比帖子正文内容更强大的功能。

我曾经测试过的一种有趣的算法称为 TopMine:http ://web.engr.illinois.edu/~elkishk2/ (在代码和数据集下)。它能够提取可用作关键词的二元组,还可以将它们分配到主题中。

如果你有你挖掘的每个问题的标签,那么有监督的方法是有意义的。

您可以使用给定问题的 tf-idf 表示,将其提供给 SVM 或神经网络,并使用它来预测目标集中每个标签的 0/1。如果可能的类(标签)太多,平衡数据可能会很棘手。

一种更简单的方法可能是使用 tf-idf 向量来计算问题的K-Nearest-Neighbors然后您可以使用最相似文档的标签(通过任何距离度量最合适)来预测问题具有每个标签的可能性。

如果您没有挖掘问题的标签,则应考虑无监督方法。 例如,LDA可以识别问题中的主题和这些主题中的重要词