定理定义



贝叶斯公式(发表于1763年)为:




这就是著名的“贝叶斯定理”,一些文献中把P(B[1])、P(B[2])称为基础概率,P(A│B[1])为击中率,P(A│B[2])为误报率。


应用例子


吸毒者检测


贝叶斯定理在检测吸毒者时很有用。假设一个常规的检测结果的敏感度与可靠度均为99%,也就是说,当被检者吸毒时,每次检测呈阳性(+)的概率为99%。而被检者不吸毒时,每次检测呈阴性(-)的概率为99%。从检测结果的概率来看,检测结果是比较准确的,但是贝叶斯定理却可以揭示一个潜在的问题。假设某公司将对其全体雇员进行一次鸦片吸食情况的检测,已知0.5%的雇员吸毒。我们想知道,每位医学检测呈阳性的雇员吸毒的概率有多高?令“D”为雇员吸毒事件,“N”为雇员不吸毒事件,“+”为检测呈阳性事件。可得


  • P(D)代表雇员吸毒的概率,不考虑其他情况,该值为0.005。因为公司的预先统计表明该公司的雇员中有0.5%的人吸食毒品,所以这个值就是D的先验概率。
  • P(N)代表雇员不吸毒的概率,显然,该值为0.995,也就是1-P(D)。
  • P(+|D)代表吸毒者阳性检出率,这是一个条件概率,由于阳性检测准确性是99%,因此该值为0.99。
  • P(+|N)代表不吸毒者阳性检出率,也就是出错检测的概率,该值为0.01,因为对于不吸毒者,其检测为阴性的概率为99%,因此,其被误检测成阳性的概率为1-99%。
  • P(+)代表不考虑其他因素的影响的阳性检出率。该值为0.0149或者1.49%。我们可以通过全概率公式计算得到:此概率 = 吸毒者阳性检出率(0.5% x 99% = 0.00495)+ 不吸毒者阳性检出率(99.5% x 1% = 0.00995)。P(+)=0.0149是检测呈阳性的先验概率。用数学公式描述为:



根据上述描述,我们可以计算某人检测呈阳性时确实吸毒的条件概率P(D|+):


P(D|+) = P(+|D)P(D)/(P(+|D)P(D)+P(+|N)P(N))=0.99 *0.005/0.0149=0.332215


尽管我们的检测结果可靠性很高,但是只能得出如下结论:如果某人检测呈阳性,那么此人是吸毒的概率只有大 约33%,也就是说此人不吸毒的可能性比较大。我们测试的条件(本例中指D,雇员吸毒)越难发生,发生误判的可能性越大。


但如果让此人再次复检(相当于P(D)=33.2215%,为吸毒者概率,替换了原先的0.5%),再使用贝叶斯定理计算,将会得到此人吸毒的概率为98.01%。但这还不是贝叶斯定理最强的地方,如果让此人再次复检,再重复使用贝叶斯定理计算,会得到此人吸毒的概率为99.8%(99.9794951%)已经超过了检测的可靠度。


求最大似然估计量的一般步骤:
        (1)写出似然函数;
        (2)对似然函数取对数,并整理;
        (3)求导数;
        (4)解似然方程。
        最大似然估计的特点:
        1.比其他估计方法更加简单;
        2.收敛性:无偏或者渐近无偏,当样本数目增加时,收敛性质会更好;

        3.如果假设的类条件概率模型正确,则通常能获得较好的结果。但如果假设模型出现偏差,将导致非常差的估计结果。

转自:

一直对贝叶斯里面的似然函数(likelihood function),先验概率(prior),后验概率(posterior)理解得不是很好,今天仿佛有了新的理解,记录一下。

看论文的时候读到这样一句话:

贝叶斯公式 python 实现_条件概率

原来只关注公式,所以一带而过。再重新看这个公式前的描述,细思极恐。

the likelihood function of the parameters θ = {w,α,β} given the observations D


两个疑问:likelihood function为什么会写成条件概率的形式?given的明明是D,为什么到后面的公式里,却变成了given θ 呢?

百度了一下,先贴上wikipedia的解释:

https://zh.wikipedia.org/wiki/%E4%BC%BC%E7%84%B6%E5%87%BD%E6%95%B0

下面整理一下自己的理解,借用wikipedia里面硬币的例子。

常说的概率是指给定参数后,预测即将发生的事件的可能性。拿硬币这个例子来说,我们已知一枚均匀硬币的正反面概率分别是0.5,要预测抛两次硬币,硬币都朝上的概率:

H代表Head,表示头朝上

p(HH | pH = 0.5) = 0.5*0.5 = 0.25.

这种写法其实有点误导,后面的这个p其实是作为参数存在的,而不是一个随机变量,因此不能算作是条件概率,更靠谱的写法应该是 p(HH;p=0.5)。

而似然概率正好与这个过程相反,我们关注的量不再是事件的发生概率,而是已知发生了某些事件,我们希望知道参数应该是多少。

现在我们已经抛了两次硬币,并且知道了结果是两次头朝上,这时候,我希望知道这枚硬币抛出去正面朝上的概率为0.5的概率是多少?正面朝上的概率为0.8的概率是多少?

如果我们希望知道正面朝上概率为0.5的概率,这个东西就叫做似然函数,可以说成是对某一个参数的猜想(p=0.5)的概率,这样表示成(条件)概率就是

L(pH=0.5|HH) = P(HH|pH=0.5) = (另一种写法)P(HH;pH=0.5).

为什么可以写成这样?我觉得可以这样来想:

似然函数本身也是一种概率,我们可以把L(pH=0.5|HH)写成P(pH=0.5|HH); 而根据贝叶斯公式,P(pH=0.5|HH) = P(pH=0.5,HH)/P(HH);既然HH是已经发生的事件,理所当然P(HH) = 1,所以:

P(pH=0.5|HH)  = P(pH=0.5,HH) = P(HH;pH=0.5).

右边的这个计算我们很熟悉了,就是已知头朝上概率为0.5,求抛两次都是H的概率,即0.5*0.5=0.25。

所以,我们可以safely得到:

L(pH=0.5|HH) = P(HH|pH=0.5) = 0.25.

这个0.25的意思是,在已知抛出两个正面的情况下,pH = 0.5的概率等于0.25。

再算一下

L(pH=0.6|HH) = P(HH|pH=0.6) = 0.36.

把pH从0~1的取值所得到的似然函数的曲线画出来得到这样一张图:

贝叶斯公式 python 实现_条件概率_02

(来自wikipedia)

可以发现,pH = 1的概率是最大的。

即L(pH = 1|HH) = 1。

那么最大似然概率的问题也就好理解了。

最大似然概率,就是在已知观测的数据的前提下,找到使得似然概率最大的参数值。

这就不难理解,在data mining领域,许多求参数的方法最终都归结为最大化似然概率的问题。

回到这个硬币的例子上来,在观测到HH的情况下,pH = 1是最合理的(却未必符合真实情况,因为数据量太少的缘故)。

先理解这么多。