贝叶斯

来源:互联网 发布:西蒙斯大学数据 编辑:程序博客网 时间:2024/05/30 20:07

贝叶斯算法解决的是逆向概率的问题。
那么什么正向概率和逆向概率呢?

正向概率:一个袋子里有黑球十个,白球三个。从袋子里面抓取一个球,问抓到黑球的概率多少?

逆向概率:如果我们事先并不知道袋子里面黑白球的比例,而是闭着眼睛摸出一个(或好几个)球,观察这些取出来的球的颜色之后,那么我们可
以就此对袋子里面的黑白球的比例作出什么样的推测。
所以自然界有好多问题难以解决的,贝叶斯解决的就是逆概问题。

下面用一个详细的案例来推导一下这个公式:
一个学校女生占60%,男生占40%。男生都穿长裤,女生一半穿长裤一半穿短裤。
那么:
1 我们选一个学生,他穿长裤的概率有多大。这就是个正向概率的问题。
2 迎面走来一个穿长裤的学生,问他是女生的概率有多大。这就是个逆向概率的问题。

下面我们来求解这个问题:

假设学校里面人的总数是 U 个
穿长裤的(男生):U * P(Boy) * P(Pants|Boy)
P(Boy) 是男生的概率 = 60%
P(Pants|Boy) 是条件概率,即在 Boy 这个条件下穿长裤的
概率是多大,这里是 100% ,因为所有男生都穿长裤
穿长裤的(女生): U * P(Girl) * P(Pants|Girl)
穿长裤总数:U * P(Boy) * P(Pants|Boy) + U * P(Girl) * P(Pants|Girl)

P(Girl|Pants) = U * P(Girl) * P(Pants|Girl)/穿长裤总数

U * P(Girl) * P(Pants|Girl) / [U * P(Boy) * P(Pants|Boy) + U * P(Girl) * P(Pants|Girl)]

化简:
P(Girl|Pants) = P(Girl) * P(Pants|Girl) / [P(Boy) * P(Pants|Boy) + P(Girl) * P(Pants|Girl)]

分母其实就是 P(Pants)
分子其实就是 P(Pants, Girl)

以上就是贝叶斯公式的简单推导。通过公式我们发现如果要使用贝叶斯公式那么我们只需要把分子分母的概率求解出来然后进行一个最终概率的大小比较。就可以啦。


拼写纠正:
是我们看到用户输入了一个不在字典中的单词,我们需要去猜测:“这个家伙到底真正想输入的单词是什么呢?

建立模型:
P(我们猜测他想输入的单词 | 他实际输入的单词)
我们举个具体例子:
用户实际输入的单词记为 D ( D 代表 Data ,即观测数据)。猜测1:P(h1 | D),猜测2:P(h2 | D),猜测3:P(h1 | D) 。。。
我们根据各个猜测的概率大小给出最终结果就可以了。但是用户输入的单词是随机的,那么我们该怎么计算这个概率呢?答案就是贝叶斯公式,根据贝叶斯公式我们可以将问题转化为:
P(h | D) = P(h) * P(D | h) / P(D)
p(h):语料库中这个单词出现的频度
p(D):用户实际输入的单词,其实输入什么样的单词都是有可能的,这里我们可以将这个元组直接删除:
P(h | D) 正比于 P(h) * P(D | h)
P(D|h):表示想输h输成D的概率有多大。这个值的计算有很多种方法。我们可以通过比较他的编辑距离的大小来判断。比如想输the输成tha的编辑距离是1。我们还可以根据这两个字母在键盘的分布距离来推算。

有了以上两个数据我们就可以输出一个概率值了,我们根据大小来取值就可以啦。
贝叶斯还是很简单的。

统一为:P(h | D)

原创粉丝点击