贝叶斯定理、显著性检验、p值关系、分类

现实生活中,我们经常需要利用测得数据来进行预测,当然希望预测越准确越好。利用概率知识进行建模,假设测得数据为 D D D ,希望对假设 H H H 进行验证。比如,判断一些数据是否是正态分布。根据抛硬币结果判断硬币是否是公平的,疾病检测中结果为阳性是否患病。根据现场证据嫌疑人是否有罪等等。

我们希望预测准确,其实是要求条件概率 P ( H ∣ D ) P(H|D) P(HD) 趋近 1,即数据 D 几乎必然支持假设 H。但很可惜的是,绝大部分情况下,我们很难直接计算该概率!比如根据一些数据判断为其为正态分布的概率,根据图像进行分类。但反概率 P ( D ∣ H ) P(D|H) P(DH) 往往比较容易计算。我们人类有时很容易混淆这两个条件概率!例如:H 为患病,D 为检测是阳性,则 P ( H ∣ D ) P(H|D) P(HD) 为检测是阳性时患病的概率, P ( D ∣ H ) P(D|H) P(DH) 为如果患病则检测为阳性的概率。再如:H 为死亡,D 为上吊,则 P ( H ∣ D ) P(H|D) P(HD) 为上吊时死亡的概率, P ( D ∣ H ) P(D|H) P(DH) 为死亡的人有多少是上吊死的,显然 P ( H ∣ D ) P(H|D) P(HD) 趋近 1,因为有上吊发现得早被救活, P ( D ∣ H ) P(D|H) P(DH) 趋近 0,因为现代人基本都是病死的。

怎么利用易于计算的反概率 P ( D ∣ H ) P(D|H) P(DH) 来得到 P ( H ∣ D ) P(H|D) P(HD) 呢?贝叶斯定理即可。根据条件概率公式
P ( H ∣ D ) = P ( H & D ) / P ( D ) = P ( D ∣ H ) P ( H ) / P ( D ) P(H|D) = P(H \& D)/P(D) = P(D|H)P(H)/P(D) P(HD)=P(H&D)/P(D)=P(DH)P(H)/P(D)
这就是著名的贝叶斯定理。

现实中又碰到难题,即使 P ( D ∣ H ) P(D|H) P(DH) 易于计算,但 P ( H ) , P ( D ) P(H),P(D) P(H),P(D) 的概率不好给出。概率 P ( H ) P(H) P(H) 是没有数据 D 之前,你对假设 H 的信念程度,信念程度越高,则概率越大,称为先验概率。 P ( D ) P(D) P(D) 是数据 D 出现的概率。举例说明, H 为患病,D 为检测是阳性,则 P ( H ) P(H) P(H) 就是人群得这种病的比例, P ( D ) P(D) P(D) 是人群检测为阳性的概率。

现在到了进退两难的地步,要采用贝叶斯,则 P ( H ) , P ( D ) P(H),P(D) P(H),P(D) 不容易得到;不采用贝叶斯, P ( H ∣ D ) P(H|D) P(HD) 无法计算。

此时人类采用了最最无奈的方法—无根据的近似!!即认为概率 P(H)/P(D) 近似等于 1 !!则 P ( H ∣ D ) ≈ P ( D ∣ H ) P(H|D) \approx P(D|H) P(HD)P(DH) 。注意绝大部分情况下,这两个条件概率不是近似相等的,大部分是差别很大的,有可能差别千万倍。

由于采用了这个无根据的近似,所以即使当 P(D|H) 接近 1,也不能说明 P(H|D) 较大或接近 1,所以任何情况下,都得不出数据D支持假设H成立的结论。另一极端情况是 P(D|H) 接近 0,也不能说明 P(H|D) 较小或接近 0,所以任何情况下,也得不出数据D否定假设H成立的结论。所以严格的说,在不知道 P ( H ) , P ( D ) P(H),P(D) P(H),P(D) 的情况下,数据 D 对假设 H 不能提供有效信息。

所以为了硬是得到一些信息,人为规定, P(D|H) 接近 0,有可能说明 P(H|D) 较小或接近 0,这样数据 D 就能否定假设 H,即可以拒绝假设 H。 P(D|H) 为多少就可以认为接近 0 呢?这个就是仁者见仁的问题,因为这两个概率成正比关系,则 P(D|H) 越小 P(H|D) 越小,则本来 H是正确的,但被拒绝为真的情况发生的概率越低。常用的值为 0.05,这对应于正态分布时,数据位于2倍方差之外的概率。更严格时要求 0.01,甚至万分之一或更小。这个值就是显著性。p值就是条件概率 P(D|H)的值。所以即使在极度近似下,显著性检验也只有证伪的功能,即认为假设H不成立,而绝对没有证明的功能,即认为假设H成立。

所以大家就理解了即使 p值很低,也不能保证假设H就一定不成立,有时也是成立的,只要 P(H)/P(D) 远大于 1 即可。

所以不能把显著性检验作为确定可靠的方法!
所以不能把显著性检验作为确定可靠的方法!
所以不能把显著性检验作为确定可靠的方法!

那什么情况下数据具有证明的功能呢?下面是个人见解,可能有误。

贝叶斯定理
P ( H ∣ D ) = P ( H & D ) / P ( D ) = P ( D ∣ H ) P ( H ) / P ( D ) P(H|D) = P(H \& D)/P(D) = P(D|H)P(H)/P(D) P(HD)=P(H&D)/P(D)=P(DH)P(H)/P(D)
对分母进行全概率展开得
P ( H ∣ D ) = P ( H & D ) / P ( D ) = P ( D ∣ H ) P ( H ) / [ P ( D ∣ H ) P ( H ) + P ( D ∣ H ˉ ) P ( H ˉ ) ] P(H|D) = P(H \& D)/P(D) = P(D|H)P(H)/[P(D|H)P(H)+P(D|\bar H)P(\bar H)] P(HD)=P(H&D)/P(D)=P(DH)P(H)/[P(DH)P(H)+P(DHˉ)P(Hˉ)]
H ˉ \bar H Hˉ 是假设 H的反假设,比如 H是数据为正态分布,则 H ˉ \bar H Hˉ 是数据不成正态分布,可以是任意别的分布。 H是人患病,则 H ˉ \bar H Hˉ 是人健康。

显然当 P ( D ∣ H ˉ ) P ( H ˉ ) ≪ P ( D ∣ H ) P ( H ) P(D|\bar H)P(\bar H) \ll P(D|H)P(H) P(DHˉ)P(Hˉ)P(DH)P(H) 成立时,不管P(D|H)为何值,都有 P(H|D) 趋近 1,此时数据 D 支持假设 H。
P ( D ∣ H ˉ ) P ( H ˉ ) ≪ P ( D ∣ H ) P ( H ) P(D|\bar H)P(\bar H) \ll P(D|H)P(H) P(DHˉ)P(Hˉ)P(DH)P(H)
P ( D ∣ H ˉ ) / P ( D ∣ H ) ≪ P ( H ) / P ( H ˉ ) = L ( H ) P(D|\bar H)/P(D|H) \ll P(H)/P(\bar H)=L(H) P(DHˉ)/P(DH)P(H)/P(Hˉ)=L(H)
其中 L(H)是假设H和反假设 H ˉ \bar H Hˉ 概率之比,此值一般远小于 1,为什么呢?例如 H 是数据为正态分布,则 H ˉ \bar H Hˉ 是数据不成正态分布,可以是任意别的分布,显然 P(H) 很小,而 P ( H ˉ ) P(\bar H) P(Hˉ) 很大。H是人患某种罕见病,则 P(H) 很小,而 P ( H ˉ ) P(\bar H) P(Hˉ) 是不患该罕见病的概率,显然很大。另一个角度思考,科学上需要大胆假设,小心求证。小心求证即要求 L(H) 远小于 1。如果假设 P(H) 很大,即没有任何证据之前就认为假设H成立的概率很高,那还需要证明吗?也即 L(H) 远大于 1 时, P ( D ∣ H ˉ ) / P ( D ∣ H ) ≪ L ( H ) P(D|\bar H)/P(D|H) \ll L(H) P(DHˉ)/P(DH)L(H) 很容易成立,从而支持假设H。

所以
P ( D ∣ H ˉ ) / P ( D ∣ H ) ≪ P ( H ) / P ( H ˉ ) = L ( H ) ≪ 1 P(D|\bar H)/P(D|H) \ll P(H)/P(\bar H)=L(H) \ll 1 P(DHˉ)/P(DH)P(H)/P(Hˉ)=L(H)1
P ( D ∣ H ˉ ) / P ( D ∣ H ) P(D|\bar H)/P(D|H) P(DHˉ)/P(DH) 是二阶小量,假设一阶小量是1%,则二阶小量为万分之一,即 P ( D ∣ H ˉ ) P(D|\bar H) P(DHˉ) P ( D ∣ H ) P(D|H) P(DH) 的万分之一。 P ( D ∣ H ) P(D|H) P(DH) 最大值为 1, P ( D ∣ H ˉ ) P(D|\bar H) P(DHˉ) 必须小于万分之一,才有可能证明假设H。

P ( D ∣ H ) P(D|H) P(DH) 是假设H成立时数据D出现的概率, P ( D ∣ H ˉ ) P(D|\bar H) P(DHˉ) 是假设H不成立时数据D出现的概率。 H 为患病,D 为检测是阳性为例, P ( D ∣ H ) P(D|H) P(DH) 是患病的人检测为阳性的比例, P ( D ∣ H ˉ ) P(D|\bar H) P(DHˉ) 是健康的人检测为阳性的比例。即使以最好的检验方法为例, 假设 P ( D ∣ H ) = 1 P(D|H)=1 P(DH)=1 表示患者都能检测为阳性,这是十分理想的, P ( D ∣ H ˉ ) = 0.001 P(D|\bar H)=0.001 P(DHˉ)=0.001 表示1000个健康人中只有一个误判为阳性,为假阳性比例。 即使对于这么理想的检测方法, P ( D ∣ H ˉ ) / P ( D ∣ H ) P(D|\bar H)/P(D|H) P(DHˉ)/P(DH) 也仅有千分之一,还达不到二阶小量,这说明 P(H|D) 不趋近 1,表明即使检测为阳性,也不一定患病。所以,当对某种罕见病进行检测时,即使检测为阳性,实际上患病的概率还是可能比较低。

比值 P ( D ∣ H ˉ ) / P ( D ∣ H ) P(D|\bar H)/P(D|H) P(DHˉ)/P(DH) 为假阳性和真阳性之比。真阳性 P ( D ∣ H ) P(D|H) P(DH) 比较容易计算,假阳性 P ( D ∣ H ˉ ) P(D|\bar H) P(DHˉ) 大部分情况下难以计算,注意 P ( D ∣ H ˉ ) ≠ 1 − P ( D ∣ H ) P(D|\bar H) \neq 1 -P(D|H) P(DHˉ)=1P(DH) ,而且 P ( D ˉ ∣ H ) = 1 − P ( D ∣ H ) P(\bar D| H) = 1 -P(D|H) P(DˉH)=1P(DH) ,假阳性和真阳性概率之间没有任何关系,比如健康的人检测为阳性和生病的人检测为阳性没有任何关系。

当假设H为正态分布时, P ( D ∣ H ˉ ) P(D|\bar H) P(DHˉ) 就无法计算,因为其为任意的非正态分布下得到数据 D的概率,因为 H ˉ \bar H Hˉ 有不可数无穷多个假设。如果 H ˉ \bar H Hˉ 集合为有限或可数无限,则采用全概率公式有可能方便计算出 P ( D ∣ H ˉ ) P(D|\bar H) P(DHˉ)

为了降低难度,使问题可能解决,可假设 H ˉ \bar H Hˉ 集合只有有限个假设,这种情况就是机器学习中著名的分类问题。例如,给定图像 D,假设集合为 H1=猫,H2=狗,H3=老虎等。要计算概率 P(H1|D),P(H2|D),P(H3|D),如前所述,这些概率一般是算不出来的。但如果我们再降低难度,认为图像 D必然属于这三个假设集中且只属于一个,所以我们只需找出这三个概率P(H1|D),P(H2|D),P(H3|D)的最大值即可,如果P(H3|D)最大,则认为D属于老虎。这样我们不需要知道概率绝对大小,只需要知道其相对大小,这极大地降低了难度。所以目前任何机器学习分类算法,只要类别数是有限的,都不可能给出概率绝对大小,给出的概率只是相对大小而已,甚至不能认为是概率。很可惜,目前的分类算法都是类别有效的,至少本人没有看到类别无限的算法。

那怎么比较概率大小呢?根据贝叶斯定理,P(Hi|D)=P(D|Hi)P(Hi)/P(D),由于分母都为P(D),故只需比较分子P(D|Hi)P(Hi)大小。P(Hi)是先验概率,是我们对这三个假设的出现比例的信验。例如在城市中,经常看到猫狗,但老虎基本不可见,所以可以认为P(H1)=0.499,P(H2)=0.499, P(H3)=0.002。例如在东北森林中,虽然看到猫狗的概率很低,偶尔有东北虎出没,但是我们限定了只能看到这三种动物,所以此时可以认为P(H1)=0.48,P(H2)=0.48, P(H3)=0.04。但经常为了简化问题可简单假定这些先验概率相等,这样我们又变成了只需比较P(D|Hi)的大小了。如何计算P(D|Hi)值呢?最简单的方法是用朴素贝叶斯方法,复杂些用贝叶斯网络。

最后举例说明,检测某人是否患有肺癌。假设H为患肺癌,此人很不幸检测为阳性D,则其患病概率为 P ( H ∣ D ) P(H|D) P(HD),根据贝叶斯定理, P ( H ∣ D ) = P ( H & D ) / P ( D ) = P ( D ∣ H ) P ( H ) / P ( D ) P(H|D) = P(H \& D)/P(D) = P(D|H)P(H)/P(D) P(HD)=P(H&D)/P(D)=P(DH)P(H)/P(D),其中 P(D|H) 为患肺癌的患者中检测为阳性的概率,P(H)为人群患肺癌的概率,P(D)为人群检测为阳性的概率。这些值怎么获得?只能通过大量随机试验获得,比如在人群中随机抽取N=10万人,对这些人进行检测,有M=1000人检测为阳性,则P(D)=M/N。经过长期跟踪,发现这10万人最终有A=50发病,则 P(H)=A/N。这发病的50人有B=48人检测为阳性,则P(D|H)=B/A,带入这些数值就可以得到 P(H|D)=B/M,为检测阳性的人群中的患者比例,为4.8%。当M越大时,该概率越低。其中M-B为假阳性的人数, P ( D ∣ H ˉ ) = ( M − B ) / ( N − A ) P(D|\bar H) = (M-B)/(N-A) P(DHˉ)=(MB)/(NA),假阳性概率约为1%,不是二阶小量,也能给出P(H|D)不可能高的结论。根据上面的数据,如果某人检测为阴性,患病的概率 P ( H ∣ D ˉ ) P(H|\bar D) P(HDˉ)是多大呢?发病的A人中只有B人检测为阳性,则有A-B人检测为阴性,这说明检测为阴性也是有可能患病的。总共有N-M人检测为阴性,则 P ( H ∣ D ˉ ) = ( A − B ) / ( N − M ) P(H|\bar D)=(A-B)/(N-M) P(HDˉ)=(AB)/(NM),约等于2/10万。如果某人没有进行任何检验,我们只能采用P(H)=A/N作为其患病的概率,检测为阳性则该概率升为P(H|D)=B/M,一般情况下有B约等于A,M远小于N,所以P(H|D)远大于P(H),这就是数据D发挥了威力,使我们认为检测为阳性的人更有可能患病,虽然患病概率不高。同理,检测为阴性时患病概率为(A-B)/(N-M),远小于 P(H)=A/N,这就是数据D发挥了威力,使我们认为检测为阴性的人更不可能患病。

有人可能会思考,要提高P(H|D)只要减小M的值就可,表面上看是这样,但这会带来一个严重问题,由于M减小了,即检测为阳性的人变小,这意味着提高了检测标准,使更多人不容易检测为阳性,这就可能造成患病的人也不容易检测为阳性,使B值减小,导致检出率P(D|H)=B/A 降低,提高了漏检率 P ( H ∣ D ˉ ) = ( A − B ) / ( N − M ) P(H|\bar D)=(A-B)/(N-M) P(HDˉ)=(AB)/(NM) ,漏掉了患者也不太好。
还有个误检率,即未患病的人检测为阳性的概率:(M-A)/(N-A),要减小误检率,只能减小M,这又导致漏检提高。这些概率充满了矛盾。

该方法成功的关键是随机选择人群,而不是选择性的选择。正因为如此 P(H|D) 表示一个『平均人』检测为阳性时的患病概率。假如有两个人检测均为阳性,一个是烟鬼,一个是不抽烟的人,如果还是用上面计算的概率P(H|D)=B/M作为这两个的患病的概率显然不符合人的直觉,公式说明这两个患病概率是一样的,但生活经验告诉我们烟鬼更容易得肺癌,这是怎么回事呢?因为前面数据是根据整个人群得到,是平均人患病概率。对于烟鬼来说,我们只能在烟民中随机抽取10万人,来计算P(D|H)、P(H)、P(D)。同理对于不抽烟的人,我们只能在不抽烟的人中随机抽取10万人,来计算P(D|H)、P(H)、P(D)。我们假设,这两类人均有M=1000人检测为阳性,由于烟民患肺癌概率更高,所以烟民的A值会高于不抽烟的人,假设P(D|H)对这两类人相同,则烟民的B值会高于不抽烟的人,这样烟民的P(H|D)更大。

我们可以使p值P(D|H)很低,P(H|D)很高。因为P(D|H)=B/A,P(H|D)=B/M,比如令 B=M=1,则 P(D|H) 为2%,但P(H|D)为100%。B=M=1表明检测为阳性的人十分少,但这些阳性全是患者,这付出的代价是漏检率极高。

我们也可以使p值P(D|H)很高,P(H|D)很低。因为P(D|H)=B/A,P(H|D)=B/M,比如令 B = A ≪ M B=A \ll M B=AM,则 P(D|H) 为100%,但P(H|D)远小于1。这就是上面例子的情况,付出的代价是假阳性率太高。

生活中两句话可以概括这两种情况,宁可错杀一千,不可放过一个,对应于P(D|H)很高,P(H|D)很低。宁可让坏人逍遥法外,也不可冤枉一个好人,对应P(D|H)很低,P(H|D)很高。

要做到理想境界:不能冤枉一个好人,也不能放过一个坏蛋,对应 P(D|H)、P(H|D)都很高,则十分困难。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值