朴素贝叶斯简记

来源:互联网 发布:手机短信推广软件下载 编辑:程序博客网 时间:2024/05/18 03:50

朴素贝叶斯分类器

naive bayes classifier。

以前曾记得语文老师多次提到,即使是同一篇文章,在不同的时间阅读,也会有不同的感受,温习一下贝叶斯分类器。

概率模型

首先是一个条件概率模型,也就是说,我们有了很多历史知识(训练数据),可以计算出先验概率,利用先验概率,对未来的情况做预测。举个例子:
刮大风(特征1)、飘来乌云(特征2),远处有雷声(特征3),结果下雨了。在生活中,大量存在类似重复事件,那么一个人通过这些数据,在脑海里得出一个先验概率的数学模型,一旦出现这些特征,可以预测“下雨”的概率很大。
“以史为鉴可以知兴衰”,其中的道理如出一辙。

回到数学模型里来:

特征向量x1,x2,...,xn, 共n个维度,xi为特征。

特征的选取是非常重要的,往往决定成败。比如:如果选择隔壁家李奶奶是否买菜这个特征来预测下雨,那么大概率是失败的。读历史,里面的特征非常之多,而且在不同的历史时期,不同特征所起的作用不同,如果悟不出规律,那对未来历史趋势的把握也是不准确的。

特征向量X=(x1,x2,...,xn)
分类标签C={C1,C2,...,Cm},CkC,m=|C|
训练样本p(X,Ck)
目标公式p(Ck|x1,...xn) 找到合适的Ck

推导过程:

p(Ck|X)=p(Ck)p(X|Ck)p(X)=λp(Ck,X)=p(Ck,x1,...,xn)=p(Ck)p(x1,...,xn|Ck)=p(Ck)p(x1|Ck)p(x2|Ck)...p(xn|Ck)=p(Ck)i=1np(xi|Ck)

1p(X)=λ
2.
目标公式重新定义,则是找到最大概率(Maximum_a_posteriori_estimation)的那个类别
y^=argmaxk{1,2,...,m}  p(Ck)i=1np(xi|Ck)

仔细分析上述问题,需要计算的变量基本上就两个:第一个,类别的统计分布;第二个,每个类别下的特征的统计分布。如果用下雨天(假设还有晴天,两个类别),那么我们要做的就是:统计雨天和晴天的比例;以及下雨天刮风等特征的出现次数等,即完成了模型的训练。

文本分类

如果应用到文本分类,我们主要看两类方法来计算y^

多项式模型(multinomial model)

y^=argmaxk{1,2,...,m}  p(Ck)i=1np(ti|Ck)

其中,特征变为ti,在文本分类多项式模型里,用的是词(term)作为特征,重复的词会计算,特征值是词频。而下面的伯努利模型主要依赖于出现与否的特征,用的是document的粒度。
进一步推导:
p(Ck)i=1np(ti|Ck)=NkNi=1np(ti|Ck)=NkNi=1nTCk,tiTCk

其中
N:Nk:CkTCk,ti:Ckti(term)TCk:Ckterm

伯努利模型(Bernoulli model)

推导:

p(Ck)i=1np(ti|Ck)=NkNi=1np(ti|Ck)=NkNi=1nDCk,tiDCk

其中
N:Nk:CkDCk,ti:Ckti(term)DCk:Ck

小结

多项式模型(multinomial model)即为词频型和伯努利模型(Bernoulli model)即文档型。二者的计算粒度不一样,多项式模型以单词为粒度,伯努利模型以文件为粒度,因此二者的先验概率和类条件概率的计算方法都不同。下面的截图来自斯坦福大学的NLP组的文档,应该比较权威,请参考。建议大家阅读的时候尽量参考权威资料。

多项式模型和伯努利模型的对比

一个简单应用

很多搜索引擎都有搜索日志以及后续的点击序列,经过简单收集,每行的格式如下:
channel,query,frequency;就是频道,搜索词,频度。
一些例子:

channel frequency query IMAGE 344585 性感 MP3 266516 周杰伦 GAME 76792 植物大战僵尸 … … …

对上述的数据用贝叶斯多项式模型训练后,用得到的模型进行分类。可以作为搜索引擎用户意图识别的基础模块。
识别效果:

天下霸唱/********The result of Bayes:*******/[NOVEL  0.526067, WML   0.46736923, MP3 0.005137454]黄海波嫖娼/********The result of Bayes:*******/[NEWS   0.7879512, WML  0.088670604, VIDEO  0.06866064, IMAGE   0.028800491]

天下霸唱,识别后的用户意图:小说、网页和音乐。从最后使用的效果来看,贝叶斯模型可以比较好的训练日志数据,并具有一定的扩展性,速度极快,效果不错。

最终的效果应该由三部分组成:日志语料的分布和质量、训练模型选择是否合理、参数调整。

扩展

如果对Query Intent Detection这个感兴趣的,可以用百度公开的搜索词日志数据进一步的研究。百度的数据加入了session的概念,还有点击url的title信息,更为全面。地址:
http://openresearch.baidu.com/activitycontent.jhtml?channelId=769
当然,如果提高精度,可以结合更多机器学习的方法,一直以为,最终的模型应该是层次化的,而且每层的训练都应该有不同的训练模型得出,毕竟每个模型可能都有优缺点,相互结合。

参考文献

http://nlp.stanford.edu/IR-book/pdf/13bayes.pdf
https://en.wikipedia.org/wiki/Naive_Bayes_classifier
http://openresearch.baidu.com/activitycontent.jhtml?channelId=769
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.217.2299&rep=rep1&type=pdf

0 0
原创粉丝点击