贝叶斯定理、显著性检验、p值关系、分类
現實生活中,我們經常需要利用測得數據來進行預測,當然希望預測越準確越好。利用概率知識進行建模,假設測得數據為 DDD ,希望對假設 HHH 進行驗證。比如,判斷一些數據是否是正態分布。根據拋硬幣結果判斷硬幣是否是公平的,疾病檢測中結果為陽性是否患病。根據現場證據嫌疑人是否有罪等等。
我們希望預測準確,其實是要求條件概率 P(H∣D)P(H|D)P(H∣D) 趨近 1,即數據 D 幾乎必然支持假設 H。但很可惜的是,絕大部分情況下,我們很難直接計算該概率!比如根據一些數據判斷為其為正態分布的概率,根據圖像進行分類。但反概率 P(D∣H)P(D|H)P(D∣H) 往往比較容易計算。我們人類有時很容易混淆這兩個條件概率!例如:H 為患病,D 為檢測是陽性,則 P(H∣D)P(H|D)P(H∣D) 為檢測是陽性時患病的概率, P(D∣H)P(D|H)P(D∣H) 為如果患病則檢測為陽性的概率。再如:H 為死亡,D 為上吊,則 P(H∣D)P(H|D)P(H∣D) 為上吊時死亡的概率, P(D∣H)P(D|H)P(D∣H) 為死亡的人有多少是上吊死的,顯然 P(H∣D)P(H|D)P(H∣D) 趨近 1,因為有上吊發現得早被救活,P(D∣H)P(D|H)P(D∣H) 趨近 0,因為現代人基本都是病死的。
怎么利用易于計算的反概率 P(D∣H)P(D|H)P(D∣H) 來得到 P(H∣D)P(H|D)P(H∣D) 呢?貝葉斯定理即可。根據條件概率公式
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(H∣D)=P(H&D)/P(D)=P(D∣H)P(H)/P(D)
這就是著名的貝葉斯定理。
現實中又碰到難題,即使 P(D∣H)P(D|H)P(D∣H) 易于計算,但 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(H∣D) 無法計算。
此時人類采用了最最無奈的方法—無根據的近似!!即認為概率 P(H)/P(D) 近似等于 1 !!則 P(H∣D)≈P(D∣H)P(H|D) \approx P(D|H)P(H∣D)≈P(D∣H) 。注意絕大部分情況下,這兩個條件概率不是近似相等的,大部分是差別很大的,有可能差別千萬倍。
由于采用了這個無根據的近似,所以即使當 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(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∣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(H∣D)=P(H&D)/P(D)=P(D∣H)P(H)/[P(D∣H)P(H)+P(D∣Hˉ)P(Hˉ)]
Hˉ\bar HHˉ 是假設 H的反假設,比如 H是數據為正態分布,則 Hˉ\bar HHˉ 是數據不成正態分布,可以是任意別的分布。 H是人患病,則 Hˉ\bar HHˉ 是人健康。
顯然當 P(D∣Hˉ)P(Hˉ)?P(D∣H)P(H)P(D|\bar H)P(\bar H) \ll P(D|H)P(H)P(D∣Hˉ)P(Hˉ)?P(D∣H)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(D∣Hˉ)P(Hˉ)?P(D∣H)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(D∣Hˉ)/P(D∣H)?P(H)/P(Hˉ)=L(H)
其中 L(H)是假設H和反假設Hˉ\bar HHˉ 概率之比,此值一般遠小于 1,為什么呢?例如 H 是數據為正態分布,則 Hˉ\bar HHˉ 是數據不成正態分布,可以是任意別的分布,顯然 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(D∣Hˉ)/P(D∣H)?L(H) 很容易成立,從而支持假設H。
所以
P(D∣Hˉ)/P(D∣H)?P(H)/P(Hˉ)=L(H)?1P(D|\bar H)/P(D|H) \ll P(H)/P(\bar H)=L(H) \ll 1 P(D∣Hˉ)/P(D∣H)?P(H)/P(Hˉ)=L(H)?1
即 P(D∣Hˉ)/P(D∣H)P(D|\bar H)/P(D|H)P(D∣Hˉ)/P(D∣H) 是二階小量,假設一階小量是1%,則二階小量為萬分之一,即 P(D∣Hˉ)P(D|\bar H)P(D∣Hˉ) 是 P(D∣H)P(D|H)P(D∣H) 的萬分之一。P(D∣H)P(D|H)P(D∣H) 最大值為 1, P(D∣Hˉ)P(D|\bar H)P(D∣Hˉ) 必須小于萬分之一,才有可能證明假設H。
P(D∣H)P(D|H)P(D∣H) 是假設H成立時數據D出現的概率, P(D∣Hˉ)P(D|\bar H)P(D∣Hˉ) 是假設H不成立時數據D出現的概率。 H 為患病,D 為檢測是陽性為例, P(D∣H)P(D|H)P(D∣H) 是患病的人檢測為陽性的比例, P(D∣Hˉ)P(D|\bar H)P(D∣Hˉ) 是健康的人檢測為陽性的比例。即使以最好的檢驗方法為例, 假設 P(D∣H)=1P(D|H)=1P(D∣H)=1 表示患者都能檢測為陽性,這是十分理想的, P(D∣Hˉ)=0.001P(D|\bar H)=0.001P(D∣Hˉ)=0.001 表示1000個健康人中只有一個誤判為陽性,為假陽性比例。 即使對于這么理想的檢測方法,P(D∣Hˉ)/P(D∣H)P(D|\bar H)/P(D|H)P(D∣Hˉ)/P(D∣H) 也僅有千分之一,還達不到二階小量,這說明 P(H|D) 不趨近 1,表明即使檢測為陽性,也不一定患病。所以,當對某種罕見病進行檢測時,即使檢測為陽性,實際上患病的概率還是可能比較低。
比值 P(D∣Hˉ)/P(D∣H)P(D|\bar H)/P(D|H)P(D∣Hˉ)/P(D∣H) 為假陽性和真陽性之比。真陽性 P(D∣H)P(D|H)P(D∣H) 比較容易計算,假陽性 P(D∣Hˉ)P(D|\bar H)P(D∣Hˉ) 大部分情況下難以計算,注意 P(D∣Hˉ)≠1?P(D∣H)P(D|\bar H) \neq 1 -P(D|H)P(D∣Hˉ)?=1?P(D∣H) ,而且 P(Dˉ∣H)=1?P(D∣H)P(\bar D| H) = 1 -P(D|H)P(Dˉ∣H)=1?P(D∣H) ,假陽性和真陽性概率之間沒有任何關系,比如健康的人檢測為陽性和生病的人檢測為陽性沒有任何關系。
當假設H為正態分布時, P(D∣Hˉ)P(D|\bar H)P(D∣Hˉ) 就無法計算,因為其為任意的非正態分布下得到數據 D的概率,因為 Hˉ\bar HHˉ 有不可數無窮多個假設。如果 Hˉ\bar HHˉ 集合為有限或可數無限,則采用全概率公式有可能方便計算出P(D∣Hˉ)P(D|\bar H)P(D∣Hˉ) 。
為了降低難度,使問題可能解決,可假設 Hˉ\bar HHˉ 集合只有有限個假設,這種情況就是機器學習中著名的分類問題。例如,給定圖像 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)是先驗概率,是我們對這三個假設的出現比例的信驗。例如在城市中,經??吹截埞?#xff0c;但老虎基本不可見,所以可以認為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(H∣D),根據貝葉斯定理,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(H∣D)=P(H&D)/P(D)=P(D∣H)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(D∣Hˉ)=(M?B)/(N?A),假陽性概率約為1%,不是二階小量,也能給出P(H|D)不可能高的結論。根據上面的數據,如果某人檢測為陰性,患病的概率P(H∣Dˉ)P(H|\bar D)P(H∣Dˉ)是多大呢?發病的A人中只有B人檢測為陽性,則有A-B人檢測為陰性,這說明檢測為陰性也是有可能患病的??偣灿蠳-M人檢測為陰性,則 P(H∣Dˉ)=(A?B)/(N?M)P(H|\bar D)=(A-B)/(N-M)P(H∣Dˉ)=(A?B)/(N?M),約等于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(H∣Dˉ)=(A?B)/(N?M) ,漏掉了患者也不太好。
還有個誤檢率,即未患病的人檢測為陽性的概率:(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?MB=A \ll MB=A?M,則 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)都很高,則十分困難。
總結
以上是生活随笔為你收集整理的贝叶斯定理、显著性检验、p值关系、分类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: numpy 加速心得
- 下一篇: 2021-09-30