文章含有“program”的概率各个选集中调查如下:
p(Y1=1|X=dev) = 0.271
p(Y1=1|X=admin) = 0.136
条件概率p(Y1=1|X=dev) 是「dev选集中,含有“program”的概率」。同理,X=admin 也是一样。
确实p(Y1=1|X=dev) > p(Y1=1|X=admin) 成立。
同理,随机变量 Y2 作为「文章中含有“application”」,试求它的概率。
p(Y2=1|X=dev) = 0.172
p(Y2=1|X=admin) = 0.523
这样就可以判断「含有“application”,不含“program”的文章」术语哪个类别。
虽已知满足这个条件的随机变量是 Y1=0, Y2=1 ,表示类别的随机变量X还是未知的。这里,可以判断:如果求出p(X=dev|Y1=0, Y2=1) 和 p(X=admin|Y1=0, Y2=1) ,概率值大的一方被作为「可信用的 X 值」。
写文章时,先写完内容再确定类别,是很少见的。总之,p(X|Y1, Y2)就是事后概率,计算出该值就可以推断出文章中隐藏的信息 (例:「文章是为了发表在dev文集而写的!」)
这一系列的过程就是基于统计的机器学习的一个典型思考方式。
虽然得到了使用贝叶斯公式计算出事后概率的公式,但是使用乘法定理把联合概率展开为2个式子是不是更容易理解一些呢?
p(X, Y1,Y2)
= p(X|Y1,Y2) p(Y1, Y2)
= p(Y1,Y2|X) p(X)
由第2式和第3式可以推导出p(X|Y1, Y2)等于下式:
想一下式子的右边可以计算出来吗?
关于分子中的p(Y1, Y2|X),假定赋值给X时Y1, Y2是独立。(也叫做「条件独立」),从刚才的论证可得,p(Y1, Y2|X)= p(Y1|X) p(Y2|X)成立。
p(X)和p(Y1|X)已知时,式子的右侧可以计算出来。
至于分母的p(Y1, Y2),可以通过把分子当作「随机变量X的边缘化」计算出来。
具体讲,利用乗法定理中p(Y1, Y2|X) p(X) = p(X, Y1, Y2),然后使用加法定理消去X后,变成p(Y1, Y2)。想起来最开始说的「机器学习中反复使用加法定理和乗法定理」「加法定理也叫做边缘化」了吗?
但是,因为分母的p(Y1, Y2)中并没有X(与X无关),如果「想求出p(X|Y1, Y2)最大的X」,仅仅比较分子就足够了。
最后,「包含“application”,不包含“program”的文章」,也就是计算Y1=0, Y2=1两种情况的事后概率。
想分别求出各个X的值,先求出分子。
p(Y1=0,Y2=1|X=dev) p(X=dev)
= (1 - 0.271) *0.172 * 0.652
= 0.082
p(Y1=0,Y2=1|X=admin) p(X=admin)
= (1 - 0.136) *0.523 * 0.348
= 0.157
把分母边缘化后得到的,就是2个值得和。
p(Y1=0,Y2=1)
= p(X=dev, Y1=0,Y2=1) + p(X=admin, Y1=0, Y2=1)
= 0.082 + 0.157
= 0.239
接着,事后概率如下所示:
p(X=dev|Y1=0,Y2=1)
= p(Y1=0,Y2=1|X=dev) p(X=dev) / p(Y1=0, Y2=1)
= 0.082 / 0.239
= 0.343
p(X=admin|Y1=0,Y2=1)
= p(Y1=0,Y2=1|X=admin) p(X=admin) / p(Y1=0, Y2=1)
= 0.157 / 0.239
= 0.657
哪个才是更适合的分类,已经明白了吧?
这里的「基于条件概率的独立性」被称作「条件独立」或者「朴素贝叶斯」「单纯贝叶斯」。
当然,这里的「条件独立」是假设的,并不是真的独立。尽管做了如此大胆的假设,朴素贝叶斯还是有很高的精准度的。通过简单计算并得到好的结果的就是「好的模型」。
实际上,朴素贝叶斯在文本分类和信用过滤中经常使用。朴素贝叶斯不仅限与用在类别和单词种类为2的情况,更普通的情况也适用。
下篇为实践课程,以朴素贝叶斯为题材,动手实现概率的计算。