贝叶斯算法讲解(未完待补)
贝叶斯公式:
实例1:拼写纠错:
目标概率:
p=(猜测输入者想输入的单词)/(输入者实际输入的单词)
*p(h|D)=p(D|h)p(h)/p(D) // h:猜测输入者想输入的单词,D:输入者实际输入的单词。
假设:
**输入“th”,猜测1:the,猜测2:tha,猜测3:thd…**当前目标概率为p(h|D)。
因素分析:
对于不同的具体猜测,p(D)不变,所以忽略p(D)项。
引入新的目标概率:
*p(h|D)∝p(h)p(D|h)
注:一个猜测的好坏取决于"p(h)这个猜测本身独立的可能性大小"以及“p(D|h)这个猜测生成我们猜测到的数据的可能性大小”。
p(h)和p(D|h)的因素分析:
p(h)为先验概率,由现有的词典统计概率决定。
p(D/h)(例the输入成tha的概率),由编辑距离决定,键盘中a与e的距离等因素决定。
代码实现:
(01)单词转换为小写,去除单词间的符号:
(02)词频统计:
注:将当features不在字典内,lambda=1,进行频率标记。
(03)编辑距离:
eidts1:
edits2:
补充情况:
known:
(04)优先级的设置:
**注:返回字典中value值最大那个key,将candidates中的每个元素赋值给w进行匿名函数的计算 **(p(A|B)∝p(B|A)*p(A))
实例2:垃圾邮件过滤:
目标概率:
p(h+|D)∝p(D|h+)*p(h+)(h+表示垃圾邮件,D为该邮件)
p(h+)为现有的垃圾信息的统计概率,而P(D|h+)则是由先有的垃圾信息的特征统计进行比对预估产生。
假设、p(D|h+)的因素分析:
收到邮件D,D中含有d1,d2,d3…dn,p(D|h+)=p(d1,d2,d3…dn|h+)。即当D的所有特征按序出现在现有的垃圾信息库中,D判定为垃圾信息。
p(d1,d2,d3…dn/h+)=p(d1|h+)xp(d2|d1,h+)xp(d3|d1,d2,h+)…存在问题:p(d1,d2,d3…dn/h+)概率过小,对贝叶斯算法进行简化。
(*)朴素贝叶斯转换:
转换条件:特征项之间相互独立。
将p(d1,d2,d3…dn/h+)简化为p(d1|h+)xp(d2|h+)xp(d3|h+)…对di进行现有垃圾信息库的概率统计即可。