1. 程式人生 > >演算法——貝葉斯

演算法——貝葉斯

簡介

學過概率理論的人都知道條件概率的公式:P(AB)=P(A)P(B|A)=P(B)P(A|B);即事件A和事件B同時發生的概率等於在發生A的條件下B發生的概率乘以A的概率。由條件概率公式推匯出貝葉斯公式:P(B|A)=P(A|B)P(B)/P(A);即,已知P(A|B),P(A)和P(B)可以計算出P(B|A)。

假設B是由相互獨立的事件組成的概率空間{B1,b2,...bn}。則P(A)可以用全概率公式展開:P(A)=P (A|B1)P(B1)+P(A|B2)P(B2)+..P(A|Bn)P(Bn)。貝葉斯公式表示成:P(Bi|A)=P(A|Bi)P(Bi)/(P(A|B1)P(B1)+P(A|B2)P(B2)+..P(A|Bn)P(Bn));常常把P(Bi|A)稱作後驗概率,而P(A|Bn)P(Bn)為先驗概率。而P(Bi)又叫做基礎概率。

貝葉斯公式:

貝葉斯公式

貝葉斯公式看起來很簡單,但是在自然科學領域應用範圍及其廣泛。同時理論本身蘊含了深刻的思想。

貝葉斯概率的歷史

貝葉斯理論和貝葉斯概率以托馬斯·貝葉斯(1702-1761)命名,他證明了現在稱為貝葉斯定理的一個特例。術語貝葉斯卻是在1950年左右開始使用,很難說貝葉斯本人是否會支援這個以他命名的概率非常廣義的解釋。拉普拉斯證明了貝葉斯定理的一個更普遍的版本,並將之用於解決天體力學、醫學統計中的問題,在有些情況下,甚至用於法理學。但是拉普拉斯並不認為該定理對於概率論很重要。他還是堅持使用了概率的經典解釋。

弗蘭克·普倫普頓·拉姆齊在《數學基礎》(1931年)中首次建議將主觀置信度作為概率的一種解釋。Ramsey視這種解釋為概率的頻率解釋的一個補充,而頻率解釋在當時更為廣泛接受。統計學家Bruno de Finetti於1937年採納了Ramsey的觀點,將之作為概率的頻率解釋的一種可能的代替。L. J. Savage在《統計學基礎》(1954年)中拓展了這個思想。

有人試圖將“置信度”的直觀概念進行形式化的定義和應用。最普通的應用是基於打賭:置信度反映在行為主體願意在命題上下注的意願上。

當信任有程度的時候,概率計算的定理測量信任的理性程度,就像一階邏輯的定理測量信任的理性程度一樣。很多人將置信度視為經典的真值(真或假)的一種擴充套件。

Harold Jeffreys, Richard T. Cox, Edwin Jaynes和I. J. Good研探了貝葉斯理論。其他著名貝葉斯理論的支持者包括John Maynard Keynes和B.O. Koopman。

貝葉斯法則的原理

通常,事件A在事件B(發生)的條件下的概率,與事件B在事件A的條件下的概率是不一樣的;然而,這兩者是有確定的關係,貝葉斯法則就是這種關係的陳述。

作為一個規範的原理,貝葉斯法則對於所有概率的解釋是有效的;然而,頻率主義者和貝葉斯主義者對於在應用中概率如何被賦值有著不同的看法:頻率主義者根據隨機事件發生的頻率,或者總體樣本里面的個數來賦值概率;貝葉斯主義者要根據未知的命題來賦值概率。一個結果就是,貝葉斯主義者有更多的機會使用貝葉斯法則。

貝葉斯法則是關於隨機事件A和B的條件概率和邊緣概率的。

bayes&amp

bayes&amp

其中L(A|B)是在B發生的情況下A發生的可能性。

在貝葉斯法則中,每個名詞都有約定俗成的名稱:

Pr(A)是A的先驗概率或邊緣概率。之所以稱為"先驗"是因為它不考慮任何B方面的因素。

Pr(A|B)是已知B發生後A的條件概率,也由於得自B的取值而被稱作A的後驗概率。

Pr(B|A)是已知A發生後B的條件概率,也由於得自A的取值而被稱作B的後驗概率。

Pr(B)是B的先驗概率或邊緣概率,也作標準化常量(normalized constant)。

按這些術語,Bayes法則可表述為:

後驗概率 = (似然度 * 先驗概率)/標準化常量 也就是說,後驗概率與先驗概率和似然度的乘積成正比。

另外,比例Pr(B|A)/Pr(B)也有時被稱作標準似然度(standardised likelihood),Bayes法則可表述為:

後驗概率 = 標準似然度 * 先驗概率

要理解貝葉斯推斷,必須先理解貝葉斯定理。後者實際上就是計算"條件概率"的公式。

所謂"條件概率"(Conditional probability),就是指在事件B發生的情況下,事件A發生的概率,用P(A|B)來表示。

根據文氏圖,可以很清楚地看到在事件B發生的情況下,事件A發生的概率就是P(A∩B)除以P(B)。

因此,

同理可得,

所以,

這就是條件概率的計算公式。

全概率公式

由於後面要用到,所以除了條件概率以外,這裡還要推導全概率公式。

假定樣本空間S,是兩個事件A與A'的和。

上圖中,紅色部分是事件A,綠色部分是事件A',它們共同構成了樣本空間S。

在這種情況下,事件B可以劃分成兩個部分。

在上一節的推導當中,我們已知

所以,

這就是全概率公式。它的含義是,如果A和A'構成樣本空間的一個劃分,那麼事件B的概率,就等於A和A'的概率分別乘以B對這兩個事件的條件概率之和。

將這個公式代入上一節的條件概率公式,就得到了條件概率的另一種寫法:

貝葉斯推斷的含義

對條件概率公式進行變形,可以得到如下形式:

我們把P(A)稱為"先驗概率"(Prior probability),即在B事件發生之前,我們對A事件概率的一個判斷。P(A|B)稱為"後驗概率"(Posterior probability),即在B事件發生之後,我們對A事件概率的重新評估。P(B|A)/P(B)稱為"可能性函式"(Likelyhood),這是一個調整因子,使得預估概率更接近真實概率。

所以,條件概率可以理解成下面的式子:

後驗概率 = 先驗概率 x 調整因子

這就是貝葉斯推斷的含義。我們先預估一個"先驗概率",然後加入實驗結果,看這個實驗到底是增強還是削弱了"先驗概率",由此得到更接近事實的"後驗概率"。

在這裡,如果"可能性函式"P(B|A)/P(B)>1,意味著"先驗概率"被增強,事件A的發生的可能性變大;如果"可能性函式"=1,意味著B事件無助於判斷事件A的可能性;如果"可能性函式"<1,意味著"先驗概率"被削弱,事件A的可能性變小。

醫患診斷模型

1、背景材料及引言

7歲女孩曉宇(化名)患急性支氣管炎,在武漢市兒童醫院住院4天,醫生為確診病情,為她抽血化驗了32個指標,僅化驗費就花費1130元。曉宇的家長質疑:醫院如此看病,是過度檢查。曉宇的接診醫生李志超說:“曉宇入院時,根據其家長自述病情,我認為孩子的情況有些嚴重,於是確定了上述化驗指標”。該院四內科副主任李醫生說:在當時情況下,李志超對患者的病情判斷、以及開出的化驗指標,都是有道理的。但如果是我接診,會以自己的經驗有針對性地進行化驗檢查,可能不會一下開出這麼多化驗指標。該科主任溫玟莉主任醫師稱:一次抽血化驗32個指標,是因為李志超當時懷疑孩子得了敗血症,這樣處理沒有問題。但最後的檢查結果並不是敗血症,這隻能說明李志超較年輕,缺乏豐富的臨床經驗,只有通過全面檢查才能確診。

在醫患關係緊張,看病難、看病貴的現實情況下,我們應如何看待這個頗有爭議的案例,醫生看病是應該有針對性地開方,還是列出“演算法式”的化驗指標進行排查,本研究以貝葉斯公式為依據,從中國現行的醫療體制出發,對此類問題進行了有益的探索,以期建立一種定量化的診斷模型。

2、模型建立

設“患者有某種病症”為事件A,引起事件A的病因為樣本空間Ω。B1,B2,…Bn為Ω的一個分劃,即Bi∩Bj=Φ,i≠j,Uni=1Bi=Ω,並假定P(Bi)>0。由貝葉斯公式,由某病因引起事件A的概率為:

P(Bi|A)=P(Bi)P(A|Bi)/n/j=1P(Bj)P(A⌒Bj)(1)

公式(1)為醫生有針對性地確診提供了參考。

在疹療過程中,醫生要根據臨床經驗對各種病因Bi進行權衡。如果誤診,則有可能承擔相應的醫療事故風險,相應的誤診概率記為P′(Bi),並設因可能承擔風險而承擔的賠償費用為C′i,患者承擔醫生針對病因Bi開出的疹療方案的費用為Ci,於是在一次診治過程中患者承擔的平均費用為:

E(A)=ni=1P(Bi)Ci(2)

醫生可能承擔的平均賠償金額為:

E′(A)=ni=1P′(Bi)C′i(3)

我們稱該模型為診斷模型,並以δ1≤E(A)-E′(A)≤δ2為標準來衡量診斷方案的合理性,其中δ1≥0,δ2為某一不是特別大的正數。即患者所承擔的平均醫療費用應比醫生可能承擔的平均賠償金要多,但兩者不應差別太大。

3、模型檢驗

我們以發熱和上腹疼痛兩個病症的相關資料對該模型進行檢驗。設原假設為H0:診斷是合理的。備擇假設為H1,診斷合理與否需要進一步考查。

對錶1和表2中相關資料的說明:中國2002年9月1日實施的《醫療事故處理條例》(以下簡稱《條例》)第五十條對賠償專案和標準的規定與當地上一年度職工平均工資水平緊密掛鉤,實行一次性結算。表1和表2中的工資水平參考了2007年2月湖北省第十屆人民代表大會上的湖北省政府工作報告中的資料:2006年城鎮居民人均可支配收入為9803元。對發熱症狀中的“非典”及“某種類似非典的突發疾病”所可能帶來的醫療事故我們以一級醫療事故中的死亡來處理,賠償金額按<國家賠償法>第二十七條的規定,檢查費用以一次全身檢查所需費用10000元進行計算;對“心肺功能缺陷”所可能帶來的醫療事故我們按二級醫療事故處理,賠償金額取202110,檢查費用按心電圖20元次,心臟彩超180元次,心肌酶譜60元次,肺檢查80元次進行計算,藥費以相應檢查費用的0.8計算。對上腹疼痛症狀中的“胃癌”及“心、膈等器官有病變”可能帶來的醫療事故我們按二級醫療事故來處理,賠償金額取202110,對B3的檢查費用以B超40元次,催C120元次,胃鏡(無痛)240元次進行計算,藥費以相應檢查費用的0.8計算,對B4的檢查費用以胃鏡(無痛)240元次和心臟彩超180元次進行計算,藥費以相應檢查費用的0.8計算。對兩種症狀中“其它”原因對患者可能造成的損害我們以《條例》第三十三條(三)的規定進行處理:在現有醫學科學技術條件下,發生無法預料或者不能防範的不良後果的,不屬於醫療事故。對兩種症狀中“其它”原因,患者的一次醫療費用我們取城鎮居民人均可支配收入的5%,即490元進行計算。所有醫療費用均指一次診治的檢查費和藥費之和,不包括後續治療的費用。檢查費用以武漢市某三級甲等醫院的相關標準為參考。表1發熱症狀診斷模型的相關資料注:B1=人體生理功能的正常表現:B4=某種類似非典的突發疾病;B5=心肺功能缺陷。表2上腹疼痛症狀診斷模型的相關資料注,B2=胃潰瘍、十二指腸潰瘍;B4=心、膈等器官有病變。

設“發熱症狀”為事件A1,“上腹疼痛症狀”為事件A2,由表1和表2的資料計算得(四捨五入精確到元):

E(A1)=121,E′(A1)=187165;E(A2)=265,E′(A2)=22232

我們會發現原假設H0:診斷是合理的,是不成立的。這些資料告訴我們醫生這個職業的確是個高風險的職業,在中國建立醫療責任保險制度有著必要性與迫切性。

4、模型評價

該模型在合理假設的基礎上,對“對症下藥”進行量化,對診療方案的合理性給出了一個量化的標準,有一定的合理性與臨床參考價值。特別是在用資料對模型檢驗後,證實了醫生的確是個高風險的職業,也顯示了在中國建立醫療責任保險制度的必要性和緊迫性。但在模型應用過程中還需要注意以下幾個方面:①病因的複雜性。病因的複雜性會導致樣本空間的分劃的個數n比較大,因此需要結合醫學規律對樣本空間分划進行合理的選擇。②患者體質的差別。不同的患者對同類的醫療事故,由於體質的差別可能帶來不同程度的損害。③醫生臨床診斷水平的差異。不同的醫生,由於經驗等方面的因素,誤診概率可能有較大的差別。④醫院的潛規則。有的醫院把醫生的收入與其給醫院的創收掛鉤,這樣同一病症在不同的醫院治療,診療費用會有較大的差別。⑤實際賠償金的差別。不同地區上一年度人均收入差別較大,加之實際賠償金還與實際談判能力有關係,這樣就可能導致同類醫療事故在不同地區及不同的患者(或家屬)身上,實際賠償金差別也較大。⑥現行醫療體制對模型的影響。下面對此進行較詳細的分析。

中國現行的醫療事故賠償責任者只有一個,就是醫療機構,但醫療機構作為理性人,會盡量減少其自身的醫療成本以實現利益的最大化。醫療機構會將其自身受到的損失通過以下三種主要方式進行轉移:一是利用價格機制,提高醫療費用,即將損失分散於所有的就醫者身上;二是由具體責任人承擔風險,即將損失的一部分轉移給與事故直接相關的醫務人員;三是通過責任保險機制,將損失轉移給保險公司。但長期以來,在中國實際上只有第一種和第二種途徑在發揮著作用,責任保險機制可以說作用甚微。

這樣,就很容易導致醫療費用上漲,引發醫患關係緊張。醫學的專業化使得醫療機構和患者之間存在巨大的資訊差,醫療機構有動機也有能力通過使患者進行重複或者不必要的檢查專案等方法多收費用,彌補自身損失.因此模型作用的發揮,還需要以下幾方面的配合:

①重視醫德建設,提高醫護人員自身修養。裘法祖院士在文獻裡有很深刻的認識。

②加強醫患之間的溝通,進行換位思考,讓醫生理解患者的苦衷,讓患者理解診療的風險。

③加強誤診規律的研究。醫療技術的進步從來都是和風險相併存的,從某種程度上說誤診是不可避免的,但作為醫護人員要提高生命權保護意識,不斷提高自身的臨床思維能力診斷能力力爭把誤診率降到最低。

④加強醫護人員臨床思維能力和臨床經驗的提高。醫學很大程度上是經驗學科,醫學理論最終還要內化為醫護人員的實際診斷能力才能發揮作用。公式(1)為醫護人員提高診斷水平提供了一個很好的參考。

⑤探索適合中國國情的、於患於醫均有益的醫療責任保險制度。尤其是在生命意識越來越受到重視的今天,只有切實的降低行醫的風險,才能從根本上解決醫患關係緊張的現狀,實現醫患關係的和諧。

別墅和狗

一座別墅在過去的 20 年裡一共發生過 2 次被盜,別墅的主人有一條狗,狗平均每週晚上叫 3 次,在盜賊入侵時狗叫的概率被估計為 0.9,問題是:在狗叫的時候發生入侵的概率是多少?

我們假設 A 事件為狗在晚上叫,B 為盜賊入侵,則 P(A) = 3 / 7,P(B)=2/(20·365)=2/7300,P(A | B) = 0.9,按照公式很容易得出結果:P(B|A)=0.9*(2/7300)/(3/7)=0.00058

容器裡的球

另一個例子,現分別有 A,B 兩個容器,在容器 A 裡分別有 7 個紅球和 3 個白球,在容器 B 裡有 1 個紅球和 9 個白球,現已知從這兩個容器裡任意抽出了一個球,且是紅球,問這個紅球是來自容器 A 的概率是多少?

假設已經抽出紅球為事件 B,從容器 A 裡抽出球為事件 A,則有:P(B) = 8 / 20,P(A) = 1 / 2,P(B | A) = 7 / 10,按照公式,則有:P(A|B)=(7 / 10)*(1 / 2)/(8/20)=0.875

貝葉斯公式為利用搜集到的資訊對原有判斷進行修正提供了有效手段。在取樣之前,經濟主體對各種假設有一個判斷(先驗概率),關於先驗概率的分佈,通常可根據經濟主體的經驗判斷確定(當無任何資訊時,一般假設各先驗概率相同),較複雜精確的可利用包括最大熵技術或邊際分佈密度以及相互資訊原理等方法來確定先驗概率分佈。

貝葉斯定理的推廣

對於變數有二個以上的情況,貝式定理亦成立。例如:

P(A|B,C)=P(B|A)*P(A)*P(C|A,B)/(P(B)*P(C|B))

這個式子可以由套用多次二個變數的貝式定理及條件機率的定義匯出:

貝葉斯理論及應用

數學領域 ▪ 貝葉斯分類演算法 (應用:統計分析、測繪學) 
▪ 貝葉斯公式 (應用:概率空間) 
▪ 貝葉斯區間估計 (應用:數學中的區間估計) 
▪ 貝葉斯序貫決策函式 (應用:統計決策論)
▪ 貝葉斯風險 (應用:統計決策論) 
▪ 貝葉斯估計 (應用:引數估計) 
▪ 貝葉斯統計 (應用:統計決策論) 
▪ 經驗貝葉斯方法 (應用:統計決策論)
工程領域 ▪ 貝葉斯定理 (應用:人工智慧、心理學、遺傳學) 
▪ 貝葉斯分析 (應用:電腦科學) 
▪ 貝葉斯邏輯 (應用:人工智慧) 
▪ 貝葉斯網路 (應用:人工智慧)
▪ 貝葉斯分類器 (應用:模式識別、人工智慧) 
▪ 貝葉斯決策 (應用:人工智慧) 
▪ 貝葉斯推理 (應用:數量地理學、人工智慧) 
▪ 貝葉斯學習 (應用:模式識別)
其他領域 ▪ 貝葉斯主義 (應用:自然辯證法) ▪ 有資訊的貝葉斯決策方法 (應用:生態系統生態學)

【例子】水果糖問題

為了加深對貝葉斯推斷的理解,我們看兩個例子。

第一個例子。兩個一模一樣的碗,一號碗有30顆水果糖和10顆巧克力糖,二號碗有水果糖和巧克力糖各20顆。現在隨機選擇一個碗,從中摸出一顆糖,發現是水果糖。請問這顆水果糖來自一號碗的概率有多大?

我們假定,H1表示一號碗,H2表示二號碗。由於這兩個碗是一樣的,所以P(H1)=P(H2),也就是說,在取出水果糖之前,這兩個碗被選中的概率相同。因此,P(H1)=0.5,我們把這個概率就叫做"先驗概率",即沒有做實驗之前,來自一號碗的概率是0.5。

再假定,E表示水果糖,所以問題就變成了在已知E的情況下,來自一號碗的概率有多大,即求P(H1|E)。我們把這個概率叫做"後驗概率",即在E事件發生之後,對P(H1)的修正。

根據條件概率公式,得到

已知,P(H1)等於0.5,P(E|H1)為一號碗中取出水果糖的概率,等於0.75,那麼求出P(E)就可以得到答案。根據全概率公式,

所以,

將數字代入原方程,得到

這表明,來自一號碗的概率是0.6。也就是說,取出水果糖之後,H1事件的可能性得到了增強。

貝葉斯過濾器

垃圾郵件是一種令人頭痛的頑症,困擾著所有的網際網路使用者。

正確識別垃圾郵件的技術難度非常大。傳統的垃圾郵件過濾方法,主要有"關鍵詞法"和"校驗碼法"等。前者的過濾依據是特定的詞語;後者則是計算郵件文字的校驗碼,再與已知的垃圾郵件進行對比。它們的識別效果都不理想,而且很容易規避。

2002年,Paul Graham提出使用"貝葉斯推斷"過濾垃圾郵件。他說,這樣做的效果,好得不可思議。1000封垃圾郵件可以過濾掉995封,且沒有一個誤判。

另外,這種過濾器還具有自我學習的功能,會根據新收到的郵件,不斷調整。收到的垃圾郵件越多,它的準確率就越高。

貝葉斯過濾器是一種統計學過濾器,建立在已有的統計結果之上。所以,我們必須預先提供兩組已經識別好的郵件,一組是正常郵件,另一組是垃圾郵件。

我們用這兩組郵件,對過濾器進行"訓練"。這兩組郵件的規模越大,訓練效果就越好。Paul Graham使用的郵件規模,是正常郵件和垃圾郵件各4000封。

"訓練"過程很簡單。首先,解析所有郵件,提取每一個詞。然後,計算每個詞語在正常郵件和垃圾郵件中的出現頻率。比如,我們假定"sex"這個詞,在4000封垃圾郵件中,有200封包含這個詞,那麼它的出現頻率就是5%;而在4000封正常郵件中,只有2封包含這個詞,那麼出現頻率就是0.05%。(【註釋】如果某個詞只出現在垃圾郵件中,Paul Graham就假定,它在正常郵件的出現頻率是1%,反之亦然。這樣做是為了避免概率為0。隨著郵件數量的增加,計算結果會自動調整。)

有了這個初步的統計結果,過濾器就可以投入使用了。

現在,我們收到了一封新郵件。在未經統計分析之前,我們假定它是垃圾郵件的概率為50%。(【註釋】有研究表明,使用者收到的電子郵件中,80%是垃圾郵件。但是,這裡仍然假定垃圾郵件的"先驗概率"為50%。)

我們用S表示垃圾郵件(spam),H表示正常郵件(healthy)。因此,P(S)和P(H)的先驗概率,都是50%。

然後,對這封郵件進行解析,發現其中包含了sex這個詞,請問這封郵件屬於垃圾郵件的概率有多高?

我們用W表示"sex"這個詞,那麼問題就變成了如何計算P(S|W)的值,即在某個詞語(W)已經存在的條件下,垃圾郵件(S)的概率有多大。

根據條件概率公式,馬上可以寫出

公式中,P(W|S)和P(W|H)的含義是,這個詞語在垃圾郵件和正常郵件中,分別出現的概率。這兩個值可以從歷史資料庫中得到,對sex這個詞來說,上文假定它們分別等於5%和0.05%。另外,P(S)和P(H)的值,前面說過都等於50%。所以,馬上可以計算P(S|W)的值:

因此,這封新郵件是垃圾郵件的概率等於99%。這說明,sex這個詞的推斷能力很強,將50%的"先驗概率"一下子提高到了99%的"後驗概率"。

做完上面一步,請問我們能否得出結論,這封新郵件就是垃圾郵件?

回答是不能。因為一封郵件包含很多詞語,一些詞語(比如sex)說這是垃圾郵件,另一些說這不是。你怎麼知道以哪個詞為準?

Paul Graham的做法是,選出這封信中P(S|W)最高的15個詞,計算它們的聯合概率。(【註釋】如果有的詞是第一次出現,無法計算P(S|W),Paul Graham就假定這個值等於0.4。因為垃圾郵件用的往往都是某些固定的詞語,所以如果你從來沒見過某個詞,它多半是一個正常的詞。)

所謂聯合概率,就是指在多個事件發生的情況下,另一個事件發生概率有多大。比如,已知W1和W2是兩個不同的詞語,它們都出現在某封電子郵件之中,那麼這封郵件是垃圾郵件的概率,就是聯合概率。

在已知W1和W2的情況下,無非就是兩種結果:垃圾郵件(事件E1)或正常郵件(事件E2)。

其中,W1、W2和垃圾郵件的概率分別如下:

如果假定所有事件都是獨立事件(【註釋】嚴格地說,這個假定不成立,但是這裡可以忽略),那麼就可以計算P(E1)和P(E2):

又由於在W1和W2已經發生的情況下,垃圾郵件的概率等於下面的式子:

將P(S)等於0.5代入,得到

將P(S|W1)記為P1,P(S|W2)記為P2,公式就變成

這就是聯合概率的計算公式。

將上面的公式擴充套件到15個詞的情況,就得到了最終的概率計算公式:

一封郵件是不是垃圾郵件,就用這個式子進行計算。這時我們還需要一個用於比較的門檻值。Paul Graham的門檻值是0.9,概率大於0.9,表示15個詞聯合認定,這封郵件有90%以上的可能屬於垃圾郵件;概率小於0.9,就表示是正常郵件。

有了這個公式以後,一封正常的信件即使出現sex這個詞,也不會被認定為垃圾郵件了。

 

 

轉自:https://www.cnblogs.com/skyme/p/3564391.html