【问题标题】:What classification algorithm should I use for document classification with this variables?我应该使用什么分类算法对带有这些变量的文档进行分类?
【发布时间】:2018-03-31 09:16:50
【问题描述】:

我正在尝试根据词袋、页面布局、是否包含表格、是否有粗体标题等对页面进行分类,特别是搜索页面。在此前提下,我创建了一个 pandas.DataFrame像这样,对于每个文档:

page totalCharCount matchesOfWordX matchesOfWordY hasFeaturesX hasFeaturesY hasTable score 0 0.0 608.0 0.0 2.0 0.0 0.0 0.0 0.0 1 1.0 3292.0 1.0 24.0 7.0 0.0 0.0 0.0 2 2.0 3302.0 0.0 15.0 1.0 0.0 1.0 0.0 3 3.0 26.0 0.0 0.0 0.0 1.0 1.0 1.0 4 4.0 1851.0 3.0 25.0 20.0 7.0 0.0 0.0 5 5.0 2159.0 0.0 27.0 6.0 0.0 0.0 0.0 6 6.0 1906.0 0.0 9.0 15.0 3.0 0.0 0.0 7 7.0 1825.0 0.0 24.0 9.0 0.0 0.0 0.0 8 8.0 2053.0 0.0 20.0 10.0 2.0 0.0 0.0 9 9.0 2082.0 2.0 16.0 3.0 2.0 0.0 0.0 10 10.0 2206.0 0.0 30.0 1.0 0.0 0.0 0.0 11 11.0 1746.0 3.0 31.0 3.0 0.0 0.0 0.0 12 12.0 1759.0 0.0 38.0 3.0 1.0 0.0 0.0 13 13.0 1790.0 0.0 21.0 0.0 0.0 0.0 0.0 14 14.0 1759.0 0.0 11.0 6.0 0.0 0.0 0.0 15 15.0 1539.0 0.0 20.0 3.0 0.0 0.0 0.0 16 16.0 1891.0 0.0 13.0 6.0 1.0 0.0 0.0 17 17.0 1101.0 0.0 4.0 0.0 1.0 0.0 0.0 18 18.0 2247.0 0.0 16.0 5.0 5.0 0.0 0.0 19 19.0 598.0 2.0 3.0 1.0 1.0 0.0 0.0 20 20.0 1014.0 2.0 1.0 16.0 3.0 0.0 0.0 21 21.0 337.0 1.0 2.0 1.0 1.0 0.0 0.0 22 22.0 258.0 0.0 0.0 0.0 0.0 0.0 0.0

我正在研究朴素贝叶斯和 SVM 算法,但我不确定哪一种更适合这个问题。变量是独立的。其中一些必须存在才能提高分数,其中一些与逆文档频率相匹配,例如totalCharCount

有什么帮助吗?

非常感谢!

【问题讨论】:

    标签: python machine-learning svm naivebayes document-classification


    【解决方案1】:

    通常,很难说哪种方法最有效:我假设您有更多数据,而问题很大程度上取决于数据。但是,这里有一些想法:

    • 虽然您说功能是独立的,但似乎 totalCharCountmatchesOfWordY 是相互依赖的。我认为可以合理地假设文档中的字符越多,匹配的可能就越多。这是一个强烈的信号反对朴素贝叶斯。

    • 二元逻辑回归看起来要好得多,这将是我的第一个候选者。一个建议是标准化totalCharCount 特征,因为它的规模似乎比其他特征大得多。

    • 除非您有更多 1 类的训练示例,否则您的数据是不平衡的。如果是这种情况,您很可能会进入constant prediction problem。一种可能的解决方案是使用weighted cross entropy 损失函数。

    • 除了SVM classifier,还要考虑xgboost.XGBClassifier。它们都可以提供非常好的准确性。

    【讨论】:

      【解决方案2】:

      由于我假设是您的标签的连续分数,这是一个回归问题。支持向量机更常见于分类问题。那里有很多可能的算法。逻辑回归对于解决此类问题非常常见。

      编辑

      现在您编辑了帖子,您的问题变成了分类问题:-)

      分类 = 您希望将数据分类为布尔型(真、假)或多项式(大、中、小、非常小)的一些类

      回归 = 连续值(0 到 1 之间的所有实数)

      现在您可以试用您的 SVM,看看它是否能很好地处理您的数据。

      查看@Maxim 的回答,他有一些优点(平衡、缩放)

      【讨论】:

      • 列分数是我想要预测的。这些值可以是 0 或 1,与我要查找的页面是否匹配。我已经编辑了帖子。我将看看逻辑回归算法。感谢弗洛里安的回复!
      猜你喜欢
      • 2015-04-09
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 2017-01-28
      • 2011-12-17
      • 2011-07-29
      相关资源
      最近更新 更多