學習總結——貝葉斯方法

參考:
1. 數學之美番外篇:平凡而又神奇的貝葉斯方法
http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/
2. 阮一峯總結的這兩篇《貝葉斯推斷及其互聯網應用》
http://www.ruanyifeng.com/blog/2011/08/bayesian_inference_part_one.html
http://www.ruanyifeng.com/blog/2011/08/bayesian_inference_part_two.html
3. 算法雜貨鋪——分類算法之樸素貝葉斯分類(Naive Bayesian classification)
http://www.cnblogs.com/leoo2sk/archive/2010/09/17/naive-bayesian-classifier.html

1 一個例子:自然語言的二義性

下面舉一個自然語言的不確定性的例子。當你看到這句話:

The girl saw the boy with a telescope.

你對這句話的含義有什麼猜測?平常人肯定會說:那個女孩拿望遠鏡看見了那個男孩(即你對這個句子背後的實際語法結構的猜測是:The girl saw-with-a-telescope the boy )。然而,仔細一想,你會發現這個句子完全可以解釋成:那個女孩看見了那個拿着望遠鏡的男孩(即:The girl saw the-boy-with-a-telescope )。那爲什麼平常生活中我們每個人都能夠迅速地對這種二義性進行消解呢?這背後到底隱藏着什麼樣的思維法則?我們留到後面解釋。

貝葉斯公式是怎麼來的?

我們還是使用 wikipedia 上的一個例子:

一所學校裏面有 60% 的男生,40% 的女生。男生總是穿長褲,女生則一半穿長褲一半穿裙子。有了這些信息之後我們可以容易地計算“隨機選取一個學生,他(她)穿長褲的概率和穿裙子的概率是多大”,這個就是前面說的“正向概率”的計算。然而,假設你走在校園中,迎面走來一個穿長褲的學生(很不幸的是你高度近似,你只看得見他(她)穿的是否長褲,而無法確定他(她)的性別),你能夠推斷出他(她)是男生的概率是多大嗎?

一些認知科學的研究表明(《決策與判斷》以及《Rationality for Mortals》第12章:小孩也可以解決貝葉斯問題),我們對形式化的貝葉斯問題不擅長,但對於以頻率形式呈現的等價問題卻很擅長。在這裏,我們不妨把問題重新敘述成:你在校園裏面隨機遊走,遇到了 N 個穿長褲的人(仍然假設你無法直接觀察到他們的性別),問這 N 個人裏面有多少個女生多少個男生。

你說,這還不簡單:算出學校裏面有多少穿長褲的,然後在這些人裏面再算出有多少女生,不就行了?

我們來算一算:假設學校裏面人的總數是 U 個。60% 的男生都穿長褲,於是我們得到了 U * P(Boy) * P(Pants|Boy) 個穿長褲的(男生)(其中 P(Boy) 是男生的概率 = 60%,這裏可以簡單的理解爲男生的比例;P(Pants|Boy) 是條件概率,即在 Boy 這個條件下穿長褲的概率是多大,這裏是 100% ,因爲所有男生都穿長褲)。40% 的女生裏面又有一半(50%)是穿長褲的,於是我們又得到了 U * P(Girl) * P(Pants|Girl) 個穿長褲的(女生)。加起來一共是 U * P(Boy) * P(Pants|Boy) + U * P(Girl) * P(Pants|Girl) 個穿長褲的,其中有 U * P(Girl) * P(Pants|Girl) 個女生。兩者一比就是你要求的答案。

下面我們把這個答案形式化一下:我們要求的是 P(Girl|Pants) (穿長褲的人裏面有多少女生),我們計算的結果是 U * P(Girl) * P(Pants|Girl) / [U * P(Boy) * P(Pants|Boy) + U * P(Girl) * P(Pants|Girl)] 。容易發現這裏校園內人的總數是無關的,可以消去。於是得到

P(Girl|Pants) = P(Girl) * P(Pants|Girl) / [P(Boy) * P(Pants|Boy) + P(Girl) * P(Pants|Girl)]

注意,如果把上式收縮起來,分母其實就是 P(Pants) ,分子其實就是 P(Pants, Girl) 。而這個比例很自然地就讀作:在穿長褲的人( P(Pants) )裏面有多少(穿長褲)的女孩( P(Pants, Girl) )。

上式中的 Pants 和 Boy/Girl 可以指代一切東西,所以其一般形式就是:

P(B|A) = P(A|B) * P(B) / [P(A|B) * P(B) + P(A|~B) * P(~B) ]

收縮起來就是:

P(B|A) = P(AB) / P(A)

其實這個就等於:

P(B|A) * P(A) = P(AB)

難怪拉普拉斯說概率論只是把常識用數學公式表達了出來

然而,後面我們會逐漸發現,看似這麼平凡的貝葉斯公式,背後卻隱含着非常深刻的原理。

1.1 貝葉斯推斷
      貝葉斯推斷(Bayesian inference)是一種統計學方法,用來估計統計量的某種性質。
      貝葉斯推斷與其他統計學推斷方法截然不同。它建立在主觀判斷的基礎上,也就是說,你可以不需要客觀證據,先估計一個值,然後根據實際結果不斷修正。正是因爲它的主觀性太強,曾經遭到許多統計學家的詬病。
      貝葉斯推斷需要大量的計算,因此歷史上很長一段時間,無法得到廣泛應用。只有計算機誕生以後,它才獲得真正的重視。人們發現,許多統計量是無法事先進行客觀判斷的,而互聯網時代出現的大型數據集,再加上高速運算能力,爲驗證這些統計量提供了方便,也爲應用貝葉斯推斷創造了條件,它的威力正在日益顯現。

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

      我們把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的可能性變小。

      我們再來看一個用貝葉斯推理分析伊索寓言“孩子與狼”的例子。

      伊索寓言“孩子與狼”講的是一個小孩每天到山上放羊,山裏有狼出沒。第一天,他在山上喊:“狼來了!狼來了!”,山下的村民聞聲便去打狼,可到山上發現狼沒有來。第二天仍是如此。第三天狼真的來了,可無論小孩怎麼喊叫,也沒有人來救他,因爲前二次他說了謊,人們不再相信他了。現在用貝葉斯推理來分析此寓言中村民對這個小孩的可信程度是如何下降的。
      我們用E表示“小孩說謊 用H表示“小孩可信”。不妨設村民過去對這個小孩的印象爲P(H)=0.8,則P('H)=0.2
      我們現在用貝葉斯推理來推斷P(H/E),也即這個小孩說了一次謊後,村民對他可信程度的改變。
      在貝葉斯推斷中我們要用到概率P(E/H)和P(E/'H),前者爲可信的孩子說謊的可能性,後者爲不可信的孩子說謊的可能性。在此不妨設P(E/H)=0.1,P(E/'H)=0.5
      第一次村民上山打狼,發現狼沒有來,即小孩說了謊。村民根據這個信息,對這個小孩的可信程度改變爲P(H/E)=0.8×0.1/((0.8×0.1)+(0.2×0.5))=0.444這表明村民上了一次當後,對這個小孩的可信程度由原來的0.8下降到了0.444。

      在此基礎上,我們再一次用貝葉斯推理來推斷P(H/E),也即這個小孩第二次說謊後,村民對他的可信程度改變爲P(H/E)=0.444×0.1/((0.444×0.1)+(0.556×0.5))=0.138這表明村民們經過兩次上當,對這個小孩的可信程度已經從0.8下降到了0.138,如此低的可信度,村民聽到第三次呼叫時怎麼再會上山打狼呢?

      對於貝葉斯公式:
      P(h | D) = P(h) * P(D | h) / P(D)
      貝葉斯公式————>最大似然估計、奧卡姆剃刀————>貝葉斯奧卡姆剃刀————>最優貝葉斯推理
      最大似然估計:最大似然方法,直白一點,就是在計算那個使得 P(D | h) 最大的 h 。
      奧卡姆剃刀: P(h) 較大的模型有較大的優勢
      貝葉斯奧卡姆剃刀:也稱作樸素貝葉斯,這個剃刀工作在貝葉斯公式的似然(P(D | h) )上,而不是模型本身( P(h) )的先驗概率上。
      最優貝葉斯推理:
      所謂的推理,分爲兩個過程,第一步是對觀測數據建立一個模型。第二步則是使用這個模型來推測未知現象發生的概率。我們前面都是講的對於觀測數據給出最靠譜的那個模型。然而很多時候,雖然某個模型是所有模型裏面最靠譜的,但是別的模型也並不是一點機會都沒有。譬如第一個模型在觀測數據下的概率是 0.5 。第二個模型是 0.4 ,第三個是 0.1 。如果我們只想知道對於觀測數據哪個模型最可能,那麼只要取第一個就行了,故事到此結束。然而很多時候我們建立模型是爲了推測未知的事情的發生概率,這個時候,三個模型對未知的事情發生的概率都會有自己的預測,僅僅因爲某一個模型概率稍大一點就只聽他一個人的就太不民主了。所謂的最優貝葉斯推理就是將三個模型對於未知數據的預測結論加權平均起來(權值就是模型相應的概率)。顯然,這個推理是理論上的制高點,無法再優了,因爲它已經把所有可能性都考慮進去了。
      只不過實際上我們是基本不會使用這個框架的,因爲計算模型可能非常費時間,二來模型空間可能是連續的,即有無窮多個模型(這個時候需要計算模型的概率分佈)。結果還是非常費時間。所以這個被看作是一個理論基準。

2. 樸素貝葉斯

      樸素貝葉斯分類是一種十分簡單的分類算法,叫它樸素貝葉斯分類是因爲這種方法的思想真的很樸素,樸素貝葉斯的思想基礎是這樣的:對於給出的待分類項,求解在此項出現的條件下各個類別出現的概率,哪個最大,就認爲此待分類項屬於哪個類別。通俗來說,就好比這麼個道理,你在街上看到一個黑人,我問你你猜這哥們哪裏來的,你十有八九猜非洲。爲什麼呢?因爲黑人中非洲人的比率最高,當然人家也可能是美洲人或亞洲人,但在沒有其它可用信息下,我們會選擇條件概率最大的類別,這就是樸素貝葉斯的思想基礎。

      樸素貝葉斯分類的正式定義如下:

  1、設爲一個待分類項,而每個a爲x的一個特徵屬性。

      2、有類別集合

      3、計算

      4、如果,則

      那麼現在的關鍵就是如何計算第3步中的各個條件概率。我們可以這麼做:

      1、找到一個已知分類的待分類項集合,這個集合叫做訓練樣本集。

      2、統計得到在各類別下各個特徵屬性的條件概率估計。即

      3、如果各個特徵屬性是條件獨立的,則根據貝葉斯定理有如下推導:

     

      因爲分母對於所有類別爲常數,因爲我們只要將分子最大化皆可。又因爲各特徵屬性是條件獨立的,所以有:

     

  可以看到,整個樸素貝葉斯分類分爲三個階段:


      第一階段——準備工作階段,這個階段的任務是爲樸素貝葉斯分類做必要的準備,主要工作是根據具體情況確定特徵屬性,並對每個特徵屬性進行適當劃分,然後由人工對一部分待分類項進行分類,形成訓練樣本集合。這一階段的輸入是所有待分類數據,輸出是特徵屬性和訓練樣本。這一階段是整個樸素貝葉斯分類中唯一需要人工完成的階段,其質量對整個過程將有重要影響,分類器的質量很大程度上由特徵屬性、特徵屬性劃分及訓練樣本質量決定。

      第二階段——分類器訓練階段,這個階段的任務就是生成分類器,主要工作是計算每個類別在訓練樣本中的出現頻率及每個特徵屬性劃分對每個類別的條件概率估計,並將結果記錄。其輸入是特徵屬性和訓練樣本,輸出是分類器。這一階段是機械性階段,根據前面討論的公式可以由程序自動計算完成。

      第三階段——應用階段。這個階段的任務是使用分類器對待分類項進行分類,其輸入是分類器和待分類項,輸出是待分類項與類別的映射關係。這一階段也是機械性階段,由程序完成。

2.1 樸素貝葉斯分類實例:檢測SNS社區中不真實賬號

      下面討論一個使用樸素貝葉斯分類解決實際問題的例子,爲了簡單起見,對例子中的數據做了適當的簡化。

      這個問題是這樣的,對於SNS社區來說,不真實賬號(使用虛假身份或用戶的小號)是一個普遍存在的問題,作爲SNS社區的運營商,希望可以檢測出這些不真實賬號,從而在一些運營分析報告中避免這些賬號的干擾,亦可以加強對SNS社區的瞭解與監管。

      如果通過純人工檢測,需要耗費大量的人力,效率也十分低下,如能引入自動檢測機制,必將大大提升工作效率。這個問題說白了,就是要將社區中所有賬號在真實賬號和不真實賬號兩個類別上進行分類,下面我們一步一步實現這個過程。

      首先設C=0表示真實賬號,C=1表示不真實賬號。

      1、確定特徵屬性及劃分

      這一步要找出可以幫助我們區分真實賬號與不真實賬號的特徵屬性,在實際應用中,特徵屬性的數量是很多的,劃分也會比較細緻,但這裏爲了簡單起見,我們用少量的特徵屬性以及較粗的劃分,並對數據做了修改。

      我們選擇三個特徵屬性:a1:日誌數量/註冊天數,a2:好友數量/註冊天數,a3:是否使用真實頭像。在SNS社區中這三項都是可以直接從數據庫裏得到或計算出來的。

      下面給出劃分:a1:{a<=0.05, 0.05<a<0.2, a>=0.2},a1:{a<=0.1, 0.1<a<0.8, a>=0.8},a3:{a=0(不是),a=1(是)}。

      2、獲取訓練樣本

      這裏使用運維人員曾經人工檢測過的1萬個賬號作爲訓練樣本。

      3、計算訓練樣本中每個類別的頻率

      用訓練樣本中真實賬號和不真實賬號數量分別除以一萬,得到:

      4、計算每個類別條件下各個特徵屬性劃分的頻率

      5、使用分類器進行鑑別

      下面我們使用上面訓練得到的分類器鑑別一個賬號,這個賬號使用非真實頭像,日誌數量與註冊天數的比率爲0.1,好友數與註冊天數的比率爲0.2。

      可以看到,雖然這個用戶沒有使用真實頭像,但是通過分類器的鑑別,更傾向於將此賬號歸入真實賬號類別。這個例子也展示了當特徵屬性充分多時,樸素貝葉斯分類對個別屬性的抗干擾性。
2.2 爲什麼樸素貝葉斯方法令人詫異地好——一個理論解釋

樸素貝葉斯方法的條件獨立假設看上去很傻很天真,爲什麼結果卻很好很強大呢?就拿一個句子來說,我們怎麼能魯莽地聲稱其中任意一個單詞出現的概率只受到它前面的 3 個或 4 個單詞的影響呢?別說 3 個,有時候一個單詞的概率受到上一句話的影響都是絕對可能的。那麼爲什麼這個假設在實際中的表現卻不比決策樹差呢?有人對此提出了一個理論解釋,並且建立了什麼時候樸素貝葉斯的效果能夠等價於非樸素貝葉斯的充要條件,這個解釋的核心就是:有些獨立假設在各個分類之間的分佈都是均勻的所以對於似然的相對大小不產生影響;即便不是如此,也有很大的可能性各個獨立假設所產生的消極影響或積極影響互相抵消,最終導致結果受到的影響不大。具體的數學公式請參考這篇 paper 。

3. 貝葉斯網絡(Bayesian networks)
      樸素貝葉斯分類有一個限制條件,就是特徵屬性必須有條件獨立或基本獨立(實際上在現實應用中幾乎不可能做到完全獨立)。當這個條件成立時,樸素貝葉斯分類法的準確率是最高的,但不幸的是,現實中各個特徵屬性間往往並不條件獨立,而是具有較強的相關性,這樣就限制了樸素貝葉斯分類的能力。這一篇文章中,我們接着上一篇文章的例子,討論貝葉斯分類中更高級、應用範圍更廣的一種算法——貝葉斯網絡(又稱貝葉斯信念網絡或信念網絡)。

3.1 重新考慮上一篇的例子

      上一篇文章我們使用樸素貝葉斯分類實現了SNS社區中不真實賬號的檢測。在那個解決方案中,我做了如下假設:

      i、真實賬號比非真實賬號平均具有更大的日誌密度、各大的好友密度以及更多的使用真實頭像。

      ii、日誌密度、好友密度和是否使用真實頭像在賬號真實性給定的條件下是獨立的。

      但是,上述第二條假設很可能並不成立。一般來說,好友密度除了與賬號是否真實有關,還與是否有真實頭像有關,因爲真實的頭像會吸引更多人加其爲好友。因此,我們爲了獲取更準確的分類,可以將假設修改如下:

      i、真實賬號比非真實賬號平均具有更大的日誌密度、各大的好友密度以及更多的使用真實頭像。

      ii、日誌密度與好友密度、日誌密度與是否使用真實頭像在賬號真實性給定的條件下是獨立的。

      iii、使用真實頭像的用戶比使用非真實頭像的用戶平均有更大的好友密度。

      上述假設更接近實際情況,但問題隨之也來了,由於特徵屬性間存在依賴關係,使得樸素貝葉斯分類不適用了。既然這樣,我去尋找另外的解決方案。

      下圖表示特徵屬性之間的關聯:

      上圖是一個有向無環圖,其中每個節點代表一個隨機變量,而弧則表示兩個隨機變量之間的聯繫,表示指向結點影響被指向結點。不過僅有這個圖的話,只能定性給出隨機變量間的關係,如果要定量,還需要一些數據,這些數據就是每個節點對其直接前驅節點的條件概率,而沒有前驅節點的節點則使用先驗概率表示。

3.2 貝葉斯網絡

      有了上述鋪墊,我們就可以正式定義貝葉斯網絡了。

      一個貝葉斯網絡定義包括一個有向無環圖(DAG)和一個條件概率表集合。DAG中每一個節點表示一個隨機變量,可以是可直接觀測變量或隱藏變量,而有向邊表示隨機變量間的條件依賴;條件概率表中的每一個元素對應DAG中唯一的節點,存儲此節點對於其所有直接前驅節點的聯合條件概率。

      貝葉斯網絡有一條極爲重要的性質,就是我們斷言每一個節點在其直接前驅節點的值制定後,這個節點條件獨立於其所有非直接前驅前輩節點。

      這個性質很類似Markov過程。其實,貝葉斯網絡可以看做是Markov鏈的非線性擴展。這條特性的重要意義在於明確了貝葉斯網絡可以方便計算聯合概率分佈。一般情況先,多變量非獨立聯合條件概率分佈有如下求取公式:

      而在貝葉斯網絡中,由於存在前述性質,任意隨機變量組合的聯合條件概率分佈被化簡成

      其中Parents表示xi的直接前驅節點的聯合,概率值可以從相應條件概率表中查到。

      貝葉斯網絡比樸素貝葉斯更復雜,而想構造和訓練出一個好的貝葉斯網絡更是異常艱難。但是貝葉斯網絡是模擬人的認知思維推理模式,用一組條件概率函數以及有向無環圖對不確定性的因果推理關係建模,因此其具有更高的實用價值。

3.3 貝葉斯網絡的應用及示例

      貝葉斯網絡作爲一種不確定性的因果推理模型,其應用範圍非常廣,在醫療診斷、信息檢索、電子技術與工業工程等諸多方面發揮重要作用,而與其相關的一些問題也是近來的熱點研究課題。例如,Google就在諸多服務中使用了貝葉斯網絡。

      就使用方法來說,貝葉斯網絡主要用於概率推理及決策,具體來說,就是在信息不完備的情況下通過可以觀察隨機變量推斷不可觀察的隨機變量,並且不可觀察隨機變量可以多於以一個,一般初期將不可觀察變量置爲隨機值,然後進行概率推理。下面舉一個例子。

      還是SNS社區中不真實賬號檢測的例子,我們的模型中存在四個隨機變量:賬號真實性R,頭像真實性H,日誌密度L,好友密度F。其中H,L,F是可以觀察到的值,而我們最關係的R是無法直接觀察的。這個問題就劃歸爲通過H,L,F的觀察值對R進行概率推理。推理過程可以如下表示:

      1、使用觀察值實例化H,L和F,把隨機值賦給R。

      2、計算。其中相應概率值可以查條件概率表。


4.  層級貝葉斯模型

層級貝葉斯模型是現代貝葉斯方法的標誌性建築之一。前面講的貝葉斯,都是在同一個事物層次上的各個因素之間進行統計推理,然而層次貝葉斯模型在哲學上更深入了一層,將這些因素背後的因素(原因的原因,原因的原因,以此類推)囊括進來。一個教科書例子是:如果你手頭有 N 枚硬幣,它們是同一個工廠鑄出來的,你把每一枚硬幣擲出一個結果,然後基於這 N 個結果對這 N 個硬幣的 θ (出現正面的比例)進行推理。如果根據最大似然,每個硬幣的 θ 不是 1 就是 0 (這個前面提到過的),然而我們又知道每個硬幣的 p(θ) 是有一個先驗概率的,也許是一個 beta 分佈。也就是說,每個硬幣的實際投擲結果 Xi 服從以 θ 爲中心的正態分佈,而 θ 又服從另一個以 Ψ 爲中心的 beta 分佈。層層因果關係就體現出來了。進而 Ψ 還可能依賴於因果鏈上更上層的因素,以此類推。

4. 無處不在的貝葉斯
4.1 中文分詞

貝葉斯是機器學習的核心方法之一。比如中文分詞領域就用到了貝葉斯。Google 研究員吳軍在《數學之美》系列中就有一篇是介紹中文分詞的,這裏只介紹一下核心的思想,不做贅述,詳細請參考吳軍的文章(這裏)。

分詞問題的描述爲:給定一個句子(字串),如:

南京市長江大橋

如何對這個句子進行分詞(詞串)纔是最靠譜的。例如:

1. 南京市/長江大橋

2. 南京/市長/江大橋

這兩個分詞,到底哪個更靠譜呢?

我們用貝葉斯公式來形式化地描述這個問題,令 X 爲字串(句子),Y 爲詞串(一種特定的分詞假設)。我們就是需要尋找使得 P(Y|X) 最大的 Y ,使用一次貝葉斯可得:

P(Y|X) ∝ P(Y)*P(X|Y)

4.2 統計機器翻譯

統計機器翻譯因爲其簡單,自動(無需手動添加規則),迅速成爲了機器翻譯的事實標準。而統計機器翻譯的核心算法也是使用的貝葉斯方法。

問題是什麼?統計機器翻譯的問題可以描述爲:給定一個句子 e ,它的可能的外文翻譯 f 中哪個是最靠譜的。即我們需要計算:P(f|e) 。一旦出現條件概率貝葉斯總是挺身而出:

P(f|e) ∝ P(f) * P(e|f)

4.3 貝葉斯圖像識別,Analysis by Synthesis

貝葉斯方法是一個非常 general 的推理框架。其核心理念可以描述成:Analysis by Synthesis (通過合成來分析)。06 年的認知科學新進展上有一篇 paper 就是講用貝葉斯推理來解釋視覺識別的,一圖勝千言,下圖就是摘自這篇 paper :

首先是視覺系統提取圖形的邊角特徵,然後使用這些特徵自底向上地激活高層的抽象概念(比如是 E 還是 F 還是等號),然後使用一個自頂向下的驗證來比較到底哪個概念最佳地解釋了觀察到的圖像。

4.4  EM 算法與基於模型的聚類

聚類是一種無指導的機器學習問題,問題描述:給你一堆數據點,讓你將它們最靠譜地分成一堆一堆的。聚類算法很多,不同的算法適應於不同的問題,這裏僅介紹一個基於模型的聚類,該聚類算法對數據點的假設是,這些數據點分別是圍繞 K 個核心的 K 個正態分佈源所隨機生成的,使用 Han JiaWei 的《Data Ming: Concepts and Techniques》中的圖:

圖中有兩個正態分佈核心,生成了大致兩堆點。我們的聚類算法就是需要根據給出來的那些點,算出這兩個正態分佈的核心在什麼位置,以及分佈的參數是多少。這很明顯又是一個貝葉斯問題,但這次不同的是,答案是連續的且有無窮多種可能性,更糟的是,只有當我們知道了哪些點屬於同一個正態分佈圈的時候才能夠對這個分佈的參數作出靠譜的預測,現在兩堆點混在一塊我們又不知道哪些點屬於第一個正態分佈,哪些屬於第二個。反過來,只有當我們對分佈的參數作出了靠譜的預測時候,才能知道到底哪些點屬於第一個分佈,那些點屬於第二個分佈。這就成了一個先有雞還是先有蛋的問題了。爲了解決這個循環依賴,總有一方要先打破僵局,說,不管了,我先隨便整一個值出來,看你怎麼變,然後我再根據你的變化調整我的變化,然後如此迭代着不斷互相推導,最終收斂到一個解。這就是 EM 算法。

4.5 最大似然與最小二乘


學過線性代數的大概都知道經典的最小二乘方法來做線性迴歸。問題描述是:給定平面上 N 個點,(這裏不妨假設我們想用一條直線來擬合這些點——迴歸可以看作是擬合的特例,即允許誤差的擬合),找出一條最佳描述了這些點的直線。

一個接踵而來的問題就是,我們如何定義最佳?我們設每個點的座標爲 (Xi, Yi) 。如果直線爲 y = f(x) 。那麼 (Xi, Yi) 跟直線對這個點的“預測”:(Xi, f(Xi)) 就相差了一個 ΔYi = |Yi – f(Xi)| 。最小二乘就是說尋找直線使得 (ΔY1)^2 + (ΔY2)^2 + .. (即誤差的平方和)最小,至於爲什麼是誤差的平方和而不是誤差的絕對值和,統計學上也沒有什麼好的解釋。然而貝葉斯方法卻能對此提供一個完美的解釋。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章