天天看點

22. 機率與統計 - 貝葉斯統計&機器學習分類名額

作者:茶桁
22. 機率與統計 - 貝葉斯統計&機器學習分類名額

Hi, 你好。我是茶桁。

今天讓我們來學習一下「貝葉斯統計」和「機器學習分類名額」,這兩部分結束之後,咱們《機率和統計》的部分就結束了。不知道這段時間的内容對大家是否有幫助。

好,咱們正課走起。

貝葉斯統計

貝葉斯是非常厲害的一個人,在統計學裡面貝葉斯做出了太多的貢獻。就包括在機率裡面,有頻率派,也有貝葉斯派。當然在機器學習裡面,也有貝葉斯派。就是從貝葉斯的角度去考慮機器學習的模型,和神經網絡的連接配接主義是對立的關系。

說到貝葉斯統計,肯定繞不開貝葉斯公式,一個大數學家、統計學家提出的這麼一個公式。以他命名的公式如下:

P(Y|X) = P(X|Y)P(Y) / P(X)

這個式子特别簡單,就是由條件機率和聯合機率的公式得到的。為什麼能得到這個式子?咱們把分母P(X)乘到式子左邊去,左邊P(Y|X)乘以P(X),不就是X和Y的聯合機率嘛。等式左右兩邊都是一個聯合機率,是以把P(X)拿到右邊作為分母,這個式子就出來了。就是這麼簡單,貝葉斯公式就是這麼簡單。

我們來看一下這個公式裡面各個量的一些含義。按照貝葉斯的語言,X代表了可被觀測到的樣本。觀測到的這個樣本就是可以看見了,可以統計出來,可以數出來的。比如抛硬币,正面朝上多少次,反面朝上多少次,這個可觀測到的。 然後,Y代表了産生這個樣本的内在機制的參數,或者說産生這個樣本的機率模型的這麼一個參數,就比如說均值方差。如果這個模型不是你自己設計出來的,隻是去觀察它的話是無法單純的通過觀察觀察出來的,你是看不出來的,但是它是客觀存在的。Y就是這種機率模型的參數。大家可以了解為均值,方差那一類的東西。很多教科書往往說到這些參數的時候,并沒有指明這個參數是什麼東西。很多人在學的時候就會非常雲裡霧裡的,都不知道參數是啥,我咋往下去看呢。

接着P(Y|X)稱為後驗機率(),我們先來看一下這個P(Y),P(Y)稱為先驗機率()。一個是先驗一個是後驗,它們倆的差別是一個有|X一個沒有|X,這個也展現了貝葉斯派的一個思維模式。這個這部分内容我們待會也會講到。就是頻率派是隻關注觀測到的樣本,但是貝耶斯派說不行,我們在處理這些樣本之前需要對這個樣本背後的機率模型有一個先驗性的一個預判,或者說預估。

打比方說,一個人去稱體重,他大概知道自己幾斤幾兩,大概知道自己的身體體重範圍。可能是在120斤~140斤之間。這個就是先驗的分布的一種預估。他知道自己是落在這個範圍内了,這個就是一種預估。

是以貝耶斯派說必須要先弄一個先驗的分布,這樣子才能安心的去做事情。如果你就是悶頭悶耳去研究這個樣本而對先驗的一個預估都沒有的話,這個做着不放心。貝耶斯派幹事是這個樣子的。

那為什麼P(Y|X)被稱為這個後驗機率了。後驗機率和先驗機率有什麼不一樣?後驗機率多了一個|X。我們知道這是一個條件機率對不對,這個條件機率告訴了我們在X已知或者說被觀測到的前提下,我對Y所做的一個預估。是以它叫做後驗。

因為先驗是我們還沒有處理樣本X的時候,人為去設想的。這個設想可以有理論性的依據,也可以是人主觀的臆斷。

大家注意,在這裡先驗分布是可以有主觀臆斷的。就比如如果你實在沒轍了,從理論分析不出來這個到底是怎麼一回事。OK,那你自己按照你主觀的判斷,按照主觀的意願去設一個都行,但是你不能沒有。

P(Y|X)為什麼叫後驗機率呢?就是因為我們已經掌握了樣本,在掌握了樣本之後 我們再對這個參數的分布去做一個調整。這個時候叫做後驗機率。

P(X)叫做證據(),這個用處往往不是特别的大。這個可能就代表了我用記憶學習模型去做一些分類,或者說去做這個情感分析,在所有的這些資料裡面,積極的、樂觀的這個情感是有多少條。消極的、憤怒的情感是有多少條。這個被稱為證據。往往相對于其它三個用處不是特别的大。

然後還有一個P(X|Y),叫做自然估計,自然估計也是非常重要的一個概念。不要看着它很簡單,就是一個條件機率模型,但是我們在機器學習裡面,尤其是很多傳統機器學習模型,比如高斯混合模型,就用到的這種最大自然估計。

最大自然估計中,首先這個X是我們已經确定的樣本。Y是我們現在所設想,或者說待優化的機率模型的參數,比如說均值或者說方差。

接下來我們來打比方,打比方說我們考慮高斯分布的這種情形有一些資料點。比如說我給了3個資料點,我們還是先來看一下這個圖:

22. 機率與統計 - 貝葉斯統計&機器學習分類名額

在這個圖上面,個頂點的那個位置各挑了3個點,總共這三個點給到你,這個就是我們的樣本X。然後我們可以得到什麼樣的結論? 首先我們已經知道了,這個模型是一個高斯模型,或者說我們覺得高斯模型去做這個拟合效果會比較好。

那現在問題就來了,即便是選中的三個點,我們同樣是用高斯分布去做,那他們也有很多不同的高斯分布可以滿足經過這三點。就像二次函數裡面随機挑兩個點,另外一個二次函數也有可能經過這兩個點一樣,它是一個多值的情況。

在這種情況下我們怎麼樣判斷哪一個高斯分布是最優的一個解呢?這個時候就用到了剛才說的,最大自然估計。

我們再來看一下最大自然估計,在Y的前提X發生的機率,是以用在我們剛才所說的這個例子裡面。比如有兩個高斯分布,都有不同的均值和方差,那如果在模型A這個參數的前提條件下我生成X點,它的機率是有一個值。然後我們就把模型A生成這三個點,剛才抽樣的那三個點的機率給它乘在一起,這三個點的機率是多少。

然後我們再來看模型B的情況下,如果我們認為這三個點是模型B産生的,那在B的參數條件下産生X點的這個機率,同樣把這三個點的這個值給它乘在一起。再比較一下模型A,得到的那個值和模型B得到的那個值哪一個更大。如果更大,我們就認為是更優的,更好的一個模型。這就是自然估計的一個概念。

是以自然估計很符合貝耶斯流派的思想觀點,就是人不是上帝,沒有上帝視角。我們隻能盡可能的從我們作為一個不完備生物的角度去看一下各種情況,哪一個對應的機率最大我們就挑選那一個。

總結一下:

  • 頻率派隻關注X(觀測到的樣本)。也就是說,頻率派不關注先驗分布。
  • 貝葉斯派認為出了X之外,除了關注觀測樣本之外,還應該對樣本産生的機制參數預估一個先驗分布,甚至可以從主管的角度預估,比如去猜測一本書的價格,人會在心裡預估處一個價格範圍,例如不會超過一千美金。
  • 貝葉斯派做分析必須用到參數先驗分布,哪怕主觀意識去臆測。
  • 先驗分布(P(Y))是在抽樣之前對參數的預估,而在獲得樣本之後,人們對于參數的判斷會根據樣本發生變化,便得到了參數的後驗分布(P(Y|X))。
  • 通過貝葉斯公式可以求得後驗分布。

我們來看,貝葉斯的公式看上去這麼簡單,到底能幹點啥呢?讓我們來舉一個例子:

首先我們已知,艾滋病的患病率呢是這個0.0001, 誤診率為0.05, 同時,患有艾滋病的病人被診斷出來的機率為0.99。現在有一位體檢者被診斷為患有艾滋病,則他真的患有艾滋病的機率是多少?

我們來想一下,我們給的這些患病率、誤診率,這些應該怎麼樣用在這個貝耶斯公式裡面?

首先先不要頭大,我會先翻譯給你們了解一下。咱們先令随機變量x,x=1表示診斷結果為陽性,x=0表示診斷結果為未患有艾滋,則我們可以得到:

P(Y=1) = 0.001 P(X=1|Y=0) = 0.05 P(X=1|Y=1) = 0.99

我們已知的是,診斷結果為患有艾滋。診斷結果為患有艾滋就是X=1,那它真的患有艾滋的機率是什麼?在診斷結果為患有艾滋的前提下,真的患有艾滋的這個機率:

22. 機率與統計 - 貝葉斯統計&機器學習分類名額

這個就是我們前面所說的貝葉斯公式。當然這個裡面其實還涉及到一個沒說過的一個概念,叫做邊緣機率。邊緣機率大家可以自己當做一個extra work,自己去查一下。

通過邊緣機率,我們會知道分母這裡其實是代表了P(X=1)。之後我們再來看分子,分子其實就是和貝葉斯公式一樣,就是X=1,Y=1的聯合分布。

這邊的機率我們都已經有了,代進行去算就OK了。最後算出來結果,0.198%。這個機率是非常非常小的,很違反我們直覺。因為根據我們剛才給的這些資訊,誤診率非常低,而且如果一個人有病,真的被診斷出來機率又非常高,那說明科技手段似乎很先進。

現在有一個人被診斷出來患了艾滋病,但他實際上真的患有艾滋病的機率竟然這麼低,連0.2%都不到。

貝耶斯這個公式的威力就展現在這裡,形式上面非常簡單,但是他可以揭露大量有内涵、有本質性的一些思考。這裡是一個很典型的一個例子,這個例子也告訴我們,如果要去醫院去做體檢,被查出來患有什麼比較嚴重的病,第一你要告訴你家裡人不要慌,這可能是這個醫院不行。第二呢,就是去多做幾次體檢,看一下是否真的是有這麼一個情況出現。

是以貝耶斯公式,真是一個非常安慰人的一個公式。

機器學習分類名額

接下來,咱們最後一個話題,機器學習的一個分類名額。

假設,總體裡面隻有兩種樣本,一種為正一種為負,正負其實是相對而言的,正樣本是我們比較關注的樣本。

就比如你要在人群裡面找恐怖分子,平民老百姓不會造成啥破壞,就是找恐怖分子。這時候我們關注正樣本,是想要研究的那種類型。

模型對于這些樣本,判斷總共會有4種結果:

TP FP
FN TN

在這個表格中,行頭表示真實分類,列頭表示預測分類。

真的正樣本被正确的預估為正樣本,就用TP來表示,TP就是true positive,真的正樣本。

一個負樣本如果被模型成功的預測出來,它就被稱為true negative,就是真實的負樣本。

如果實際上是一個負樣本,但是模型把它當做了是一個正的樣本,我們把這種正預測出來的正樣本叫做false positive,假的正樣本。因為它實際上是負的,就是FP

同樣的,如果它本來是正的,你模型把它預測成負的了,它是一個false negative,一個假的負樣本。

這個部分其實它隻是一些概念性的東西,大家看一下,知道每一個字母代表的什麼意思就OK了,不用在這上面花過多的時間。如果不記得了,就回來再看一眼。

除此之外,常用名額我在這裡列了三種:

第一個是精确率: P = TP/TP+FP, 代表預測為正的樣本有多少是真的正樣本。

TP除以TP+FP,TP+FP代表了我們這個模型裡面總共預測了多少個正樣本,是模型預測的正樣本的總數。TP是你正确預測出來的那些正樣本。是以這也就是代表預測為正的樣本裡面有多少是真正的正樣本。

第二個是準确率:A=TP+TN/TP+FN+FP+TN, 代表模型對所有分類預測正确的比例。

TP+TN除以這個模型的預測總數,也就是這個樣本總數。分母中的4個加一塊就是樣本總數。分子是預測正确的兩個量,一個是TP,一個是TN,代表了模型對所有分類預測正确的比例。

精确率和準确率他們兩個其實是有一定類似性的。主要不同是精确率隻關注正樣本,不關心副樣本。準确率是兩個都關心,正的是多少,負的是多少他都管。

接下來咱們再來說一下召回率:R=TP/TP+FN, 代表正的樣本有多少被預測正确(找出來)了。所有的真正的正樣本,有多少是被這個模型真正的找出來了。

比如,恐怖分子有10個,結果這個模型隻預測出來了一個,剩下9個全部在FN裡面。那這個召回率就非常低。是以召回率代表了真正的正樣本總共有多少被模型成功正确的找出來。

為什麼要有這些名額?我們來通過一些例子來說:

比如,商場裡面我們知道已經有1,000人,其中20人是恐怖分子,我們記為正樣本,980人是平民,記為副樣本。現在用一個機器學習模型對這1000人做篩選(模型并不知道恐怖分子和平民個油多少人),判定所有人均為平民。試求模型精确率,召回率以及準确率。

首先我們要根據這個定義把這四個量給找出來:TP=0, FP=0, FN=20, TN=980;

因為在這判定結果全部都是負樣本,也就是判定為所有人都是平民。是以第二個字母為P的都是0,那1,000個人全部判定為平民,正确的隻有20個恐怖分子。

是以在這裡我們成功的預測正确的負樣本是980個,而預測錯的是20個。因為那20個不是平民,是假的負樣本,他們其實是正樣本。

那好,我們來看一下,按照這種定義,精确率是0比0,是沒辦法計算的,這個就起不到作用了。

精确率: P=TP/TP+FP = 0/0(無法計算)

第二個召回率,R=TP/TP+FN = 0/20 = 0, 這個無法找出任何正樣本。

第三個準确率: A=TP+TN/TP+FN+FP+TN = 980/1000 = 98%,準确率高達98%。

說明這個模型判斷正确的準确性達到了98%,但是,我們單純看這個準确率是沒有意義的。因為一個恐怖分子都沒找到,不要說去開發這個模型了,我直接去寫一個if...else就行了。反正我知道恐怖分子人數少,最終得到這個準确率絕對很高。

是以這個就是招回率的意義所在,因為看招回率是0,代表了這個模型沒有找出來任何正樣本。是以召回率的意義就在于這裡,我們判斷一個模型,不能隻看準确率或者精确率,還得判斷召回率怎麼樣。

判斷一個模型,他對于類别數量比較少的,比如說這個恐怖分子人數比較少的,是否也能起到一個很好的作用。

我們再來看一個情況,就還是一樣的例子,隻不過這一回這個模型又把所有人判斷成了恐怖分子,然後同時再讓你求這三個率。

按照這種情況下,我們還是按照定義把這四個量給找出來:TP=20, FP=980, FN=0, TN=0。

因為這個時候機器學習模型判定結果全部都是正樣本,是以TN、FN就都是0了。那在這個1,000人的判定結果裡面 正确的隻有多少人呢?隻有20人。剩下的980人都判斷錯了。

是以很顯而易見,我們就知道什麼這個精确率啊和準确率都非常的低。雖然召回率在這裡非常非常高了,我們來看一下求出來的資料:

精确率: P=TP/TP+FP=20/1000 = 2%(找出真正的正樣本比例太低)

召回率:R=TP/TP+FN = 20/20 = 100%(找出了所有正樣本)

準确率: A=TP+TN/TP+FN+FP+TN = 20/1000 = 2%(模型預測正确比例太低)

所有的恐怖分子都被找出來了,但是精确率太低,這個這種組合,精确率過低,召回率100%代表誤殺太嚴重,典型的甯可錯殺不肯放過一個對吧。這種感覺就是有一個人隻要稍微有點蛛絲馬迹,拿手撓了下腦袋,或者他跟旁邊的人使了個眼色,可能這兩人隻是一個好朋友而已,但是你覺得他們是對暗号的。

這種情況下機器學習模型也很渣,也不行。召回率很高,但也沒有實際意義,因為模型精确度太低了。

是以綜合這兩個例子來看,我們可以發現很多時候得平衡好這個精确率和召回率,往精确率提上去了,但召回率低了;召回率提升了,精确率就低了。

好了,那這就是我們本節課,也就是《機率&統計》部分的全部内容了,在這節課末尾,我來給大家再提一下,之前導論裡我就說過,不太推薦大家專門去看書,因為如果你去看書,不管你是看高數啊還是普林斯頓微積分讀本,都是一個特别體系化的一個東西。看一個體系化東西的會花很長的一個時間,但是對于我們的目标讀者你們來說,現在最主要的是在短時間内能迅速的掌握好跟AI相關的一些數學知識。是以,我個人是建議大家會去看一些關于AI相關的一些數學知識。

然後AUC,F1 score這些,本來是打算會穿插給大家講一下, 但是限于篇幅,大家就自己課下了解一下吧。這些東西帶一下的話不夠了解,但是詳細講的話篇幅又太長,不可能cover所有的東西。

大家要記得保持閱讀「坍縮的奇點」的一個習慣,之後說不定我某篇文章就會寫到這部分。

好,那這節課就到這裡,這一段時間大家也辛苦了。

更多内容,請檢視:22. 機率與統計 - 貝葉斯統計&機器學習分類名額

繼續閱讀