目的
贝叶斯算法的目的是解决逆向概率的问题。何为逆向概率?
先看看正向概率:袋子里有M个黑球,N个白球,随手一模,是黑球的几率是多大。这就是个正向概率问题。
逆向概率:袋子里有两种球,通过观察摸出来的球的颜色,推断袋子中两种球的比率。
逆向概率的作用:是通过有限的数据推断无限数据的情况,思考:星系距离、星系大小是否是通过逆向概率推断的呢?
推导
场景假设
按照性别分,学生分为男同学、女同学。假设男生穿长裤,女生一半穿长裤、一半穿短裤。
问题
迎面走来一个穿长裤的学生,是女生的概率多大?
求解
求长裤学生是女生的概率,其实就是求解长裤女生占所有长裤学生的比率。
假设学校总人数为U,男生的比率为P(boy),女生的比率为P(girl),男生长裤的比率为P(pants|boy),女生长裤的比率为P(pants|girl)。则计算过程如下:
- 男生长裤人数P1:U * P(boy) * P(pants|boy)。
- 女生长裤人数P2:U * P(girl) * P(pants|girl)。
- 所有长裤的人数P:P1 + P2
- 女生长裤占比: P 2 P = U ∗ P ( g i r l ) ∗ P ( p a n t s ∣ g i r l ) U ∗ P ( b o y ) ∗ P ( p a n t s ∣ b o y ) + U ∗ P ( g i r l ) ∗ P ( p a n t s ∣ g i r l ) \frac{P2}{ P} = \frac{U * P(girl) * P(pants|girl)}{U * P(boy) * P(pants|boy)+ U * P(girl) * P(pants|girl)} PP2=U∗P(boy)∗P(pants∣boy)+U∗P(girl)∗P(pants∣girl)U∗P(girl)∗P(pants∣girl)
- 简化处理一下,分母是长裤的比率用P(pants)表示,分子是女生长裤的比率用P(pants|girl),则公式可以表示为: P ( g i r l ) ∗ P ( p a n t s ∣ g i r l ) P ( p a n t s ) \frac{P(girl) * P(pants|girl)}{P(pants)} P(pants)P(girl)∗P(pants∣girl)
这就推导出贝叶斯公式: P ( A ∣ B ) = P ( B ∣ A ) ∗ P ( A ) P ( B ) P(A|B) = \frac{P(B|A) * P(A)}{P(B)} P(A∣B)=P(B)P(B∣A)∗P(A)
两个模型
最大似然
P(B|A) :这就是最大似然,指的是当A成立时,B出现的概率越大,则拥有B特征的A的几率越大。
但是如果A和A1在P(B|A)情况下取值是一样的呢?这时候,就不能决定就是是A还是A1了,奥卡姆剃刀提供了更多的评断依据。
奥卡姆剃刀
P(A):这就就是奥卡姆剃刀。奥卡姆剃刀的思想是:当两个假说具有完全相同的解释力和预测力时,我们以那个较为简单的假说作为讨论依据。结合上面的最大似然,如果A1出现的比率比A2大,则认为A2的概率更高一些。
总结
总结一下,贝叶斯解决的问题是这样的:在一个集合中有无数个元素,其中有部分元素X都具有特征Y,根据观测的结果,判断元素集合X中各种元素的比率。
套用到上述的例子中:学生中,有部分学生穿长裤,观测的结果是男生穿长裤比率是100%,女生穿长裤的比率是50%,求解穿长裤的学生男女的比率是多少?
应用
下面介绍个例子,来深入理解一下。
拼写纠正
场景假设
用户输入了一个在字典中不存在的单词tbp,求解用户输入的单词是什么?
求解
套用贝叶斯公式,与tbp相似的单词占的比率就是分母,每个相似单词占的比率就是分子,比如top占的比率就是: P ( t o p ) ∗ P ( D ∣ t o p ) P ( D ) \frac{P(top)*P(D|top)}{P(D)} P(D)P(top)∗P(D∣top)
- P(top):top在词典中的出现频率。
- P(D):与输入单词相似的单词在词典中出现的总频率。
这就能求解出top的比率,再依次求出tip、tap等单词的比率,取比率最高的作为答案。