【问题标题】:how to perfom classfication如何进行分类
【发布时间】:2012-09-14 13:20:22
【问题描述】:

我正在尝试使用 Weka 将文档分类为两个类别(类别 1 和类别 2)。

我已经收集了一个包含 600 个属于这两个类别的文档的训练集,要分类的文档总数为 1,000,000。

所以为了执行分类,我应用了 StringToWordVector 过滤器。我从过滤器中设置了以下内容: - IDF 变换 - TF 转换 - 输出字数

我想问一些关于这个过程的问题。

1) 我应该使用多少个文​​档作为训练集,以避免过度拟合?

2) 应用过滤器后,我得到了训练集中的单词列表。我是否必须删除它们中的任何一个才能在分类器中获得更好的结果,或者它不起作用?

3) 作为分类方法,我通常选择naiveBayes,但我得到的结果如下:

-------------------------
Correctly Classified Instances         393               70.0535 %
Incorrectly Classified Instances       168               29.9465 %
Kappa statistic                          0.415 
Mean absolute error                      0.2943
Root mean squared error                  0.5117
Relative absolute error                 60.9082 %
Root relative squared error            104.1148 %
----------------------------

如果我使用 SMO,结果是:

------------------------------
Correctly Classified Instances         418               74.5098 %
Incorrectly Classified Instances       143               25.4902 %
Kappa statistic                          0.4742
Mean absolute error                      0.2549
Root mean squared error                  0.5049
Relative absolute error                 52.7508 %
Root relative squared error            102.7203 %
Total Number of Instances              561     
------------------------------

那么在文档分类中,哪一个是“更好”的分类器? 哪一个更适合小型数据集,比如我拥有的那个? 我读过 naiveBayes 在大数据集上表现更好,但如果我增加我的数据集,会导致“过度拟合”效应吗? 另外,关于 Kappa 统计,是否有任何可接受的阈值,或者在这种情况下并不重要,因为只有两个类别?

很抱歉,这篇文章很长,但我已经尝试了一周来改进分类结果,但没有成功,尽管我试图获得更适合每个类别的文档。

【问题讨论】:

    标签: statistics machine-learning classification weka document-classification


    【解决方案1】:

    回答您的问题:

    1. 我会使用(10 倍)交叉验证来评估您的方法。该模型在 90% 的数据上训练了 10 次,并且每次使用数据的不同部分对 10% 的数据进行测试。因此,结果对您当前(随机)选择的训练集和测试集的偏差较小。
    2. 删除停用词(即频繁出现的词,但没有什么区别价值,如theheand)是改进分类器的常用策略。 Weka 的StringToWordVector 允许您选择包含这些停用词的文件,但它还应该有一个包含英文停用词的默认列表。
    3. 根据您的结果,SMO 在两个分类器中表现最好(例如,它有更多的Correctly Classified Instances)。您可能还想看看 (Lib)SVM 或 LibLinear(如果它们本身不在 Weka 中,您可能需要安装它们;Weka 3.7.6 有一个包管理器,可以轻松安装),它可以在文档分类也是如此。

    【讨论】:

    • 您好,感谢您对我最初帖子的编辑。我会检查你建议的图书馆。关于过拟合效应,是否有任何规则表明训练集应该有多大?
    【解决方案2】:

    1) 我应该使用多少个文​​档作为训练集,这样我 避免过拟合? \

    您不需要选择训练集的大小,在WEKA中,您只需使用10折交叉验证即可。回到问题上来,机器学习算法对过拟合问题的影响远不止数据集。


    2) 应用过滤器后,我得到一个单词列表 训练集。我是否必须删除其中任何一个才能获得更好的结果 在分类器上还是没有任何作用? \

    确实如此。但结果会不会变好,就不能保证了。


    3) 作为分类方法,我通常选择 naiveBayes,但 我得到的结果如下:\

    通常,要定义一个分类算法的好坏,ROC/AUC/F-measure值总是被认为是最重要的指标。您可以在任何机器学习书籍中学习它们。

    【讨论】:

    • 看来我移除后效果更好。感谢您的回复!
    【解决方案3】:

    关于第二个问题 2)应用过滤器后,我得到了训练集中的单词列表。我是否必须删除它们中的任何一个才能在分类器中获得更好的结果,或者它不起作用?

    我正在构建一个分类器并使用著名的 20news 组数据集对其进行训练,在没有预处理的情况下对其进行测试时,结果并不好。所以,我按照以下步骤对数据进行了预处理:

    1. 用空格替换 TAB、NEWLINE 和 RETURN 字符。
    2. 只保留字母(即将标点、数字等转换为空格)。
    3. 将所有字母转为小写。
    4. 用单个 SPACE 替换多个 SPACES。
    5. 每个文档的标题/主题只是简单地添加到文档文本的开头。
    6. no-short 从上一个文件中获取,通过删除长度小于 3 个字符的单词。例如,删除“he”但保留“him”。
    7. no-stop 从上一个文件中获得,通过删除 524 个 SMART 停用词。其中一些已被删除,因为它们少于 3 个字符。
    8. stemmed 从上一个文件中获得,通过将 Porter's Stemmer 应用于其余文件 字。可以在此处找到有关词干提取的信息。

    这些步骤取自http://web.ist.utl.pt/~acardoso/datasets/

    【讨论】:

      猜你喜欢
      • 2021-08-20
      • 2012-04-02
      • 1970-01-01
      • 2015-08-21
      • 1970-01-01
      • 2019-09-22
      • 2013-02-10
      • 2021-02-17
      相关资源
      最近更新 更多