尼克舅姑

Nick9Gu

贝叶斯分类器实验

使用的就是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的一些应用之处的文章。讲的很广泛,把很多知识都串一起了。很好!



posted on 2009-10-08 00:30 Nick9Gu 阅读(2027) 评论(4)  编辑 收藏 引用 所属分类: {IR-NLP-Data Mining}

评论

# re: 贝叶斯分类器实验 2009-10-08 15:34 SE7EN

请问你是怎么对低频概率进行光滑操作的?  回复  更多评论   

# re: 贝叶斯分类器实验 2009-10-08 17:48 Nick9Gu

@SE7EN
上面说的就是书上有一种+1方法。另外的方法应该就是可以通过对测试case分两部分去验证x/n的实际概率吧。  回复  更多评论   

# re: 贝叶斯分类器实验 2009-10-09 13:45 argmax

+1法不是为了求得实际概率,而是为了使得概率有意义,因为naive bayesian中需要用到iid条件,如果其中一个概率为0,那么整个概率就没有意义了,所以需要用到平滑方法。并且用最大似然估计的概率本身就存在偏差,因为毕竟用于统计的语料总是有限的。通常现在不用+1法来平滑,而是用dirichlet方法估计。但是本质上这几种方法对于最后的结果都是大同小异。  回复  更多评论   

# re: 贝叶斯分类器实验 2009-10-10 09:37 Nick9Gu

@argmax
恩,我到觉得既然在低频的时候相当于信息量就是确定的,在信息量确定的情况下无论用什么方法去估计都不会有太大差别。那么这时候用什么方法都只是一种因为不完全相信观察到的数据而平滑的过程。  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2009年10月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

统计

常用链接

留言簿(1)

随笔分类

随笔档案

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜