最近跟这个方法打交道较多,看到的若干资料中平凡而又神奇的贝叶斯方法是一篇比较详尽的文章。以下仅仅摘了一小部分来帮助对该方法有最直观的认识。
P(B|A)=\frac{P(AB)}{P(A)}=\frac{P(A|B)*P(B)}{P(A)}
先借助一个例子对条件概率回顾一下:
一所学校里面有 60% 的男生,40% 的女生。男生总是穿长裤,女生则一半穿长裤一半穿裙子。
- 随机选取一个学生,ta穿长裤的概率概率是多大? 80%
- 迎面走来一个穿长裤的学生,ta是男生的概率是多大?75%
Peter Norvig 曾经介绍如何写一个拼写检查/纠正器,里面用到贝叶斯方法。
问题:找出那个使得如下概率最大的猜测单词,argmax P(猜他想输入|实际输入)
将P(猜测1 | 实际输入)记为:P(h1|D) 类似地,对于我们的猜测2,则是P(h2|D)。不妨统一记为:P(h|D)。运用一次贝叶斯公式,我们得到:P(h|D) = P(h) * P(D|h) / P(D),比较P(h1|D), P(h2|D) 的时候我们可以忽略 P(D) 这个常数。即我们只需要知道:P(h|D) ∝ P(h) * P(D|h)
含义是:对于给定观测数据,一个猜测是好是坏,取决于这个猜测本身独立的可能性大小(先验概率Prior)和这个猜测生成我们观测到的数据的可能性大小(似然Likelihood)的乘积。
具体到本例就是我们猜他要输入的那个词常用不常用,在输入那个词时误输入为当前这词的可能性大不大。
模型比较与奥卡姆剃刀
都是在找 h 最大似然方法是在计算 P(D|h);贝叶斯方法计算的是 P(h) * P(D|h),多出来了一个 P(h)。
假如能够使 P(D|h) 达到最大值的猜测有两个 tip 和 top, 那么根据贝叶斯方法选择的是更常用的单词。
因此最大似然,即便一个猜测与数据非常符合,也并不代表这个猜测就是更好的猜测,因为这个猜测本身的可能性也许就非常低。
模型比较理论(Model Comparasion)与贝叶斯奥卡姆剃刀(Bayesian Occam's Razor) 实际上,模型比较就是去比较哪个模型(猜测)更可能隐藏在观察数据的背后。其基本思想前面已经用拼写纠正的例子来说明了。我们对用户实际想输入的单词的猜测就是模型,用户输错的单词就是观测数据。我们通过: P(h|D) ∝ P(h) * P(D|h) 来比较哪个模型最为靠谱。前面提到,光靠 P(D|h) (即“似然”)是不够的,有时候还需要引入 P(h) 这个先验概率。奥卡姆剃刀就是说 P(h) 较大的模型有较大的优势,而最大似然则是说最符合观测数据的(即 P(D|h) 最大的)最有优势。