2017年7月31日 星期一

Machine Learning & Statistics

這篇的標題有點大,主要是承自上篇,BAD Sample & BAD Data,所遺留的問題:如何解釋下面這道式子?

以及如何解釋教材裡,下面這張表格?



我相信,大部份學習該教材的學生,在唸Connection to Real Learning這一節時,充滿了疑惑。現在,我用一個簡單的例子,幫大家解決這一節裡的所有疑惑。

該例子就是:罐子裡有20個彈珠,其中5個紅色,15個綠色。20個裡抓8個有幾種組合?機率各是多少?

彈珠的英文叫Marbel,我用MAC的Numbers App (類似Windows的Excel)做成下面這張表。
Marble - 罐子裡彈珠數
R (Red) - 罐子裡紅色彈珠數
G (Green) - 罐子裡綠色彈珠數

當然 
Marble = R + G = 20

Eout(h)代表什麼?
Eout(h) = R / Marbel

我們把機器學習的過程,形象類比為彈珠問題。所以h (hypothesis),代表一罐彈珠。R代表h(x) != f(x)發生的次數。所以Eout(h) = R / Marbel的意思就是,該hypothesis,用在此彈珠罐上,發生錯誤的機率。所以R,這個紅色,代表錯誤的意思。

機器學習的目的,是要找到一個hypothesis,讓錯誤率愈小愈好,也就是紅色的彈珠愈少愈好。所以通常,我們會有好幾個hypothesis,也就是好幾個彈珠罐,每罐的紅色彈珠數量會不一樣。機器學習的過程,就是從所有彈珠罐裡,找到紅色彈珠數量最少的那一罐出來。

若罐裡的彈珠數量非常大,如上億個,這種做法效率不高。更糟的是,大部份情況下,甚至不知道罐裡有多少顆彈珠。記得小學有學過基本統計學方法,不管母體個數多少,用抽樣的方法,只要樣本數量夠多,就能推估母體的性質。亦即,若取樣的彈珠100個裡,有10個是紅色的,那麼,就可以預估,罐裡紅色的彈珠佔所有彈珠1/10。

對於我們來說,有一億顆彈珠的罐子,數量太大了。還是習慣用比較簡單的方式,去思考這個問題,把罐子彈珠的數量,設定為20顆,於是,又拉回到原來的問題:

罐子裡有20個彈珠,其中5個紅色,15個綠色。20個裡抓8個有幾種組合?機率各是多少?

圖示如下:
我們發現,若取出的8顆彈珠中,有2顆是紅色,6顆是綠色,那麼,該樣本出現紅色彈珠的機率為25%,該機率剛好與母體罐裡出現紅色彈珠的機率是一樣的。天底下會有這麼巧的事情發生嗎?發生的機率是多少?

這個問題,簡單來講,就是去計算:
「樣本出現紅色彈珠的機率與母體出現紅色彈珠的機率,這兩個機率幾乎一樣的機率是多少」

是不是有點繞口?用數學式子表達,就是:
再拉回問題:
罐子裡有20個彈珠,其中5個紅色,15個綠色。20個裡抓8個有幾種組合?機率各是多少?

我用MAC的Numbers App 做成下面這張表:



高中應該有學過排列組合吧?這個問題,可以拆成6個獨立的小問題:D1, D2, …, D6。

D1:從20個彈珠,取出5個紅色的及3個綠色的。
D2:從20個彈珠,取出4個紅色的及4個綠色的。
D3:從20個彈珠,取出3個紅色的及5個綠色的。
D4:從20個彈珠,取出2個紅色的及6個綠色的。
D5:從20個彈珠,取出1個紅色的及7個綠色的。
D6:從20個彈珠,取出0個紅色的及8個綠色的。

各位可以想一下,為何這個問題,剛剛好就能拆解成上面這6個小問題?為何沒有取出6個紅色彈珠的情況?因為罐子裡只有5個紅色彈珠,所以取出6個紅色彈珠的情況是不存在的。

有了所有小問題的R和G之後,我們就可以計算每個小問題發生的機率。如求D3發生的機率的公式為:
其它小問題的機率就不多說了。我用Numbers的COMBIN公式,直接算出來,這樣做最快:



我們發現,把所有小問題的機率加起來,剛好為100%。更加驗證了,這個大問題,剛好拆解成6個小問題,而且不會漏掉。

這6個小問題,其實就是6種樣本。接下來,我們關心,每一種樣本,代表母體的程度為何?白話一點就是,樣本裡出現紅色彈珠的機率,和母體的是否一樣?所以我們要計算每一種樣本的:

Ein(h) = ?
|Ein(h)-Eout(h)| = ?

然後,從|Ein(h)-Eout(h)| 值的大小,判斷該樣本是否為BAD。我認為,25%含以上,就是BAD。所以D1、D2、D6都是BAD。那麼,所有BAD Data加起,發生的機率就是:

P(D1) + P(D2) + P(D6) = 0.4% + 5.4% + 5.1% = 10.9%

所有BAD Data加起,發生的機率就是下面這道式子的白話解釋:

-Count

沒有留言:

張貼留言