以我的经验,训练有素的朴素贝叶斯分类器通常令人惊讶地准确(且训练速度非常快,比我曾经使用的任何分类器生成器都要快)。
因此,当您要改善分类器预测时,可以在几个地方查看:
调整您的分类器 (调整分类器的可调参数);
应用某种分类器组合技术 (例如,合奏,增强,装袋);或者你可以
查看提供给分类器的数据 -添加更多数据,改善基本分析或优化从数据中选择的功能。
w / r / t天真贝叶斯分类器,参数调整有限;我建议重点关注您的数据,即预处理的质量和功能选择。
一,数据解析(预处理)
我假设您的原始数据类似于每个数据点的原始文本字符串,通过一系列处理步骤,您可以将每个字符串转换为每个数据点的结构化矢量(一维数组),以使每个偏移量对应一个特征(通常是一个字),并且该偏移量中的值对应于频率。
词干 :手动还是使用词干库?最受欢迎的开源软件有Porter,Lancaster和Snowball。因此,举例来说,如果您在给定的数据点中有术语“ 程序员”,“程序”,“编程”,“编程器” ,则词干分析器会将它们简化为单个词干(可能是program ),因此该数据点的术语向量的值等于功能程序,这可能是您想要的。
同义词发现 :与词干相同的想法-将相关单词折叠成一个单词;因此同义词查找器可以识别开发人员,程序员,编码人员和软件工程师,并将其合并为一个术语
中性字词 :跨班级出现频率相似的字词的功能较差
二。功能选择
考虑NBC的典型用例:过滤垃圾邮件;您可以快速查看它如何失败,也可以快速查看如何改进它。例如,高于平均水平的垃圾邮件过滤器具有细微的功能,例如:所有大写字母的单词出现频率,标题中单词的出现频率以及标题中出现感叹号。另外, 最佳特征通常不是单个单词而是例如单词对或更大的单词组 。
三,特定分类器优化
而不是使用“一对多”计划而不是30个类-换句话说,您从一个两类分类器(A类和“所有其他”)开始,然后将“所有其他”类中的结果返回到分类为B类和“所有其他”等的算法。
费舍尔方法 (可能是最优化朴素贝叶斯分类器的最常用方法。)对我来说,我认为费舍尔将输入概率归一化 (更正确地说是标准化 )NBC使用特征概率构建“整个文档”概率。 Fisher方法为文档的每个特征计算类别的概率,然后组合这些特征概率,并将该组合概率与一组特征的随机概率进行比较。
0
我正在使用朴素贝叶斯分类器将数千个文档分类为30个不同的类别。我已经实现了朴素贝叶斯分类器,并且通过一些功能选择(主要是过滤无用的单词),我获得了大约30%的测试准确度和45%的训练准确度。这比随机的要好得多,但是我希望它更好。
我已经尝试过用NB实现AdaBoost,但是它似乎并没有给出明显更好的结果(关于这方面的文献似乎有些分歧,有些论文说,使用NB的AdaBoost不会给出更好的结果,其他人则给出了)。您是否知道NB的其他扩展可能会带来更好的准确性?