本文章由公号【开发小鸽】发布!欢迎关注!!!
老规矩–妹妹镇楼:
一. 贝叶斯要解决的问题(逆向概率问题)
(一)正向概率:
已知黑盒中有a个红球,b个黄球,那么拿出一个球是黄球的概率多大?这种问题就是正向概率,由已知的条件俩推测可能出现的结果。
(二)逆向概率:
同样是一个黑盒,但不清楚红球与黄球的比例,实验10次,每次拿出一个球后又放回,通过这10次实验结果,来推测黑盒中的红球黄球比例。这种问题叫逆向概率,贝叶斯算法要解决的就是这种问题,这也是我们日常中更容易遇到的问题,通常要从结果来推测造成结果的原因。即从看到的现象中推测黑盒中的情况。
二. 通过例子来理解:
(一)已知:
男生与女生的比例为60%和40%,且男生只穿长裤,女生一半穿长裤,一半穿裙子。男生,女生总数为W个。
则穿长裤的男生的人数:
N
1
=
W
∗
P
(
b
o
y
)
∗
P
(
p
a
n
t
s
/
b
o
y
)
N1 = W * P(boy) *P(pants/boy)
N1=W∗P(boy)∗P(pants/boy) P(boy) = 60 %(学生中男生的概率)
P(pants/boy) 条件概率,在学生是男生的条件下,穿长裤的概率是100%
穿长裤的女生人数:
N
2
=
W
∗
P
(
b
o
y
)
∗
P
(
p
a
n
t
s
/
b
o
y
)
N2 = W * P(boy) *P(pants/boy)
N2=W∗P(boy)∗P(pants/boy)
P(girl) = 40 %
P(pants/girl) = 50 %
(二)逆向概率问题:
走来一个穿长裤的学生,判断性别。即在穿长裤的条件下,求出学生是女生或男生的概率。
- 求出穿长裤的男生人数 N1
- 求出穿长裤的女生人数 N2
- 学生是男生的概率为p(boy/pants) = N1/(N1+N2) = P(pants/boy) / P(pants)
- 学生是女生的概率为P(girl/pants) = N2 / (N1+N2) = P(pants/girl)/P(pants)
(三)分析
** 通常逆向概率的场景是我们知道B这个结果,要通过B这个结果来推测条件A的概率。**但通常情况下P(A/B)这个概率是不太好求的。因此我们需要转换到P(B/A)这个比较好求的概率,即知道条件A,推测结果B的概率。
在上例中对应的就是我们知道学生总人数,知道男女生比例,同时也知道男女生中穿长裤的比例,因此,可以从知晓这个学生的性别这个A条件中,很容易地可以算出基于学生性别这个条件A的B结果,即推测这个学生穿长裤的概率P(B/A)。
但如果给出这个学生是穿长裤这个B结果,就比较难于从现有的结果信息里推断出学生的性别这个A条件。
这就是逆向概率的应用场景,通过贝叶斯公式可以将一个比较难求的概率P(A/B)转换为了很好求的概率P(B/A)的式子
所以推导出逆向概率的公式如下:
P
(
A
/
B
)
=
P
(
B
/
A
)
P
(
A
)
/
P
(
B
)
P(A/B) = P(B/A)P(A) / P(B)
P(A/B)=P(B/A)P(A)/P(B)
三. 拼写纠错实例:
拼写纠正的实例,场景:用户输入了不在词典中的单词,我们需要根据输入猜测用户的想法。 即在用户输入的单词这个条件B上,我们来推测可能的单词列表A,然后比较A列表中每个单词的概率,概率最大的即是最有可能的单词。
因此,通过贝叶斯公式,我们想到将P(A/B)转换为P(B/A)的式子,因为在可能的单词列表A这个条件上,我们可以通过键盘上键位的距离计算出将可能的单词列表A中每个单词输错为B的概率,即P(B/A),由此可以转化为P(B/A)的式子。
P
(
A
/
B
)
=
P
(
B
/
A
)
∗
P
(
A
)
/
P
(
B
)
P(A/B) = P(B/A) * P(A) / P(B)
P(A/B)=P(B/A)∗P(A)/P(B)
P(A)是每个可能的单词在词典中的概率,即先验概率,因为一般都是已知的。
P(B)是用户输入某个单词的概率,是随机的,而且在后面概率的比较中是可以约去的,对于结果没有影响。
对于单词列表A中的不同单词A1,A2…,P(B)都是一样的,因此被约分掉了。所以不同Ai的P(A/B)概率的比较中,只有分子是有影响的。即
P(A/B) 正比于 P(A) * P(B/A)
理解为:一个猜测的好坏与否,跟这个猜测本身的独立概率(即这个猜测的单词在你曾经输入的词库中的占比)和这个猜测转化为观测数据的可能性成正比。
以上就是对于贝叶斯公式的理解以及贝叶斯公式可以用于的场景理解。