mle(極大似然估計)、map(最大後驗估計)以及貝葉斯估計(bayesian)
仍有可能一知半解。對於乙個基礎模型,通常都可以從這三個角度去建模,比如對於邏輯回歸(logistics regression)來說:
: logistics regression
map:
regularized logistics regression
bayesian
: bayesian logistic regression
一旦選擇了乙個演算法,就相當於我們選擇了乙個假設空間。
在乙個假設空間裡,我們通常會有無數種不同的解(或者可以理解成模型),
乙個優化演算法(比如梯度下降法)做的事情就是從中選擇最好的乙個解或者多個解/模型
,當然優化過程要依賴於樣本資料。舉個例子,如果我們選擇用支援向量機,那相當於我們可選的解/模型集中在上半部分(藍色點)。
策略去尋求幫助呢?
三種不同的策略
可以選擇。
。比如我們可以選擇過去三次考試中成績最優秀的學生。
在這裡,
學習過程相當於從所有系的學生中挑選出成績最好的學生。
所以,這裡的「學生過往成績單」就是我們已知的
訓練資料
d , 選出成績最好的學生(計算歷史平均分數,並選出最高的),這個過程就是mle。一旦我們找到了成績最好的學生,就可以進入**環節。
在**環節中,我們就可以讓他回答張三手裡的難題 x', 之後就可以得到他給出的解答
第二種策略中我們聽取了老師的建議
,老師就是張三的朋友。這位老師給出了自己的觀點:
「小明和小花的成績中可能存在一些水分」。
當我們按照成績的高低給學生排序,假設前兩名依次為小明和小花,如果我們不考慮這位老師的評價,則我們肯定把小明作為目標物件。然而,既然老師已經對小明和小花做了一些負面的評價,那這個時候,
我們很有可能最後選擇的是班級裡的第三名
,而不是小明或者小花。
唯一的區別在於這裡多出了老師的評價,我們稱之為 prior。
也就是說我們根據學生以往的成績並結合老師評價,選擇了一位我們認為最優秀的學生(可以看成是模型)。之後就可以讓他去回答張老師的難題 x',並得到他的解答 y'。整個過程類似於map的估計以及**。
老師的評價(prior)跟學生過往的成績(observation)是怎麼結合在一起的?」
。 為了回答這個問題,我們不得不引出乙個非常著名的定理,叫做
貝葉斯定理,
如下圖所示。左邊的項是map需要優化的部分,通過貝葉斯定理這個項可以分解成mle(第一種策略)和prior,也就是老師的評價。在這裡,分母是常數項(constant),所以不用考慮。
其實就是讓所有人都去參與回答張三的難題,但最後我們通過一些加權平均的方式獲得最終的答案。
比如有三個學生,而且我們對這三個學生情況沒有任何了解。通過提問,第乙個學生回答的答案是a,第二個學生回答的答案也是a,但第三個學生回答的是b。在這種情況下,我們基本可以把a作為標準答案。接著再考慮乙個稍微複雜的情況,假設我們通過以往他們的表現得知第三個學生曾經多次獲得過全國奧賽的金牌,那這個時候該怎麼辦? 很顯然,
在這種情況下,我們給予第三個學生的話語權肯定要高於其他兩位學生
。 這就是貝葉斯估計做的事情!
我們這裡的目標不再是- 「選出最優秀的學生」,而是通過觀測資料(d)去獲得每一位學生的發言權(權重),
而且這些權重全部加起來要等於1, 相當於是乙個valid分布(distribution)。
給定過去考試成績(
d )和老師的評價(
prior
), 我們的目標是估計學生權重的分布,
也稱之為
posterior distribution
。 那這個分布具體怎麼去估計呢? 這部分就是貝葉斯估計做的事情,有很多種方法可以做這件事情,比如mcmc, variational method等等,但這並不是本文章的重點,所以不在這裡進一步解釋,有興趣的讀者可以關注之後關於貝葉斯的專欄文章。從直觀的角度思考,因為我們知道每一位學生過往的成績,所以我們很容易了解到他們的能力水平進而估計出每一位學生的話語權(權重)。
過去三次考試中的成績。
但在這裡,我們進一步假定可以獲得每一位學生過去
100次考試中的成績。
在過去100次考試中全部獲得了班裡第一名
,但同時老師又告訴我們這位學生的能力其實不怎麼樣,那這時候我們會有什麼樣的反應? 兩三次考試或許可以算做是運氣,但連續100次都是第一名這件事情很難再跟運氣畫等號吧? 我們甚至可能會去懷疑老師的品德,是不是故意汙衊人家?
,因為最後我們獲得的答案是所有學生給出的答案的加權平均,而且所有學生的權重加起來要保證等於1(任何乙個分布的積分和必須要等於1)。 假設我們知道每一位學生的能力值,a1, a2,.... an,這個能作為權重嗎? 顯然不能。為了獲得權重,有一種最簡單的方法就是先求和,然後再求權重。比如先計算 a1+...+an = s, 再用a1/s 作為權重。這貌似看起來也不難啊,只不過多做了乙個加法操作?
mle不考慮先驗(prior),map和貝葉斯估計則考慮先驗(prior);
mle、map是選擇相對最好的乙個模型(point estimation), 貝葉斯方法則是通過觀測資料來估計後驗分布(posterior distribution),並通過後驗分布做群體決策,所以後者的目標並不是在去選擇某乙個最好的模型;
當樣本個數無窮多的時候,map理論上會逼近mle;
貝葉斯估計複雜度大,通常用mcmc等近似演算法來近似
機器學習 貝葉斯
bayes.py包含了所有函式的實現,需要做的是,明白各個函式的功能作用及輸入輸出,在指令碼中完成函式的呼叫,給出要求的格式的結果。from numpy import import csv import random random.seed 21860251 def loaddataset post...
機器學習 樸素貝葉斯
樸素貝葉斯原理 1.貝葉斯公式 2.樸素貝葉斯的模型 3.後驗概率最大化的含義 4.樸素貝葉斯的引數估計 4.1.特徵是離散值 假設符合多項式分布 4.2.特徵是稀疏的離散值 假設符合伯努利分布 4.3.特徵是連續值 假設符合正態分佈 5.樸素貝葉斯演算法過程 6.樸素貝葉斯演算法小結 scikit...
機器學習之貝葉斯
scikit learn 樸素貝葉斯類庫使用小結 demo 貝葉斯定理是18世紀英國數學家托馬斯 貝葉斯 thomas bayes 提出得重要概率論理論。以下摘一段 wikipedia 上的簡介 所謂的貝葉斯定理源於他生前為解決乙個 逆概 問題寫的一篇文章,而這篇文章是在他死後才由他的一位朋友發表出...