如何进行分类

时间:2012-09-22 08:11:09

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

我正在尝试使用Weka将文档分类分为两类(category1和category2)。

我收集了一套训练集,其中包含属于这两个类别的600份文件,将要分类的文件总数为1,000,000。

因此,要执行分类,我应用StringToWordVector过滤器。我从过滤器中设置了以下内容: - IDF转换 - TF变形 - OutputWordCounts

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

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统计,是否有任何可接受的阈值,或者在这种情况下无关紧要,因为只有两个类别?

对于这篇长篇文章感到抱歉,但我一直试图改进分类结果一周没有成功,尽管我试图获得更适合每个类别的文档。

3 个答案:

答案 0 :(得分:1)

  

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

您无需选择训练集的大小,在WEKA中,您只需使用10倍交叉验证。回到这个问题,机器学习算法对过度拟合问题的数据集的影响要大得多。


  

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

绝对是的。但结果是否变得更好是不能承诺的。


  

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

通常,为了定义分类算法是否良好,ROC / AUC / F-measure值始终被视为最重要的指标。您可以在任何机器学习书中学习它们。

答案 1 :(得分:0)

回答你的问题:

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

答案 2 :(得分:0)

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

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

  1. 用SPACE代替TAB,NEWLINE和RETURN字符。
  2. 只保留字母(即将标点符号,数字等转换为SPACES)。
  3. 将所有字母都改为小写。
  4. 通过单个SPACE替换多个SPACES。
  5. 每个文档的标题/主题只是添加在文档文本的开头。
  6. no-short从上一个文件中获取,删除长度小于3个字符的单词。例如,删除“他”但保留“他”。
  7. no-stop从上一个文件中获取,删除524个SMART停用词。其中一些已被删除,因为它们短于3个字符。
  8. stemmed从前一个文件中获取,将Porter的Stemmer应用于其余文件 话。关于词干的信息可以在这里找到。
  9. 这些步骤取自http://web.ist.utl.pt/~acardoso/datasets/