使用的就是mitchell的那本ML中关于naive bayesian classifier讲解用到的
数据。20个邮件组的邮件,共约20000条记录。
主要是实践了下naive bayesian classifier。做了两个集合的实验,包括全集和书中实践的小集合(3个特定的邮件组集合)。
全集上最后的准确率可以达到83.7%。而使用小集合对比书中的(89%-90.5%),可以达到91.3%的准确率。
其中有一些需要注意的:
1. 对低频概率的光滑操作很重要。主要用于计算P(w|g)时在w频次很低的情况下。
如果没有光滑,答案整个就被误差毁了,直接准确率掉到20%以下。
如果使用P(w|g)=(C(g,w)+1)/(C(g,all_w)+C(words_in_g))可以保证结果达到预期水平
如果使用P(w|g)=(C(g,w)+1)/(C(g,all_w)+C(words))结果还更好些。这似乎和预期不是很符合。
2. 对stopword的选取。
使用idf作为选择标准(不取log)。刚开始选定的覆盖文章范围在0.6才去除。后来发现一直到1/12都能保证单调递增。效果不错。
3. 既然bayesian是逆概,还尝试了正向概率计算求答案,也是使之相互独立。准确率在75%左右。怀疑是模型本身并不是reasonable的。(就是比naive bayesian还不靠谱)
从误分类的数据来看,有些确实是无法很好分类。同时后续改进还有这么一些方法:
1. 低频词的影响。
2. 调整模型,使之更好去识别。这在看论文。看看是否可行。
同时今天还看了一篇介绍bayesian的一些应用之处的
文章。讲的很广泛,把很多知识都串一起了。很好!