前情回顧算法
機器學習100天|Day1數據預處理100天搞定機器學習|Day2簡單線性迴歸分析100天搞定機器學習|Day3多元線性迴歸100天搞定機器學習|Day4-6 邏輯迴歸100天搞定機器學習|Day7 K-NN100天搞定機器學習|Day8 邏輯迴歸的數學原理100天搞定機器學習|Day9-12 支持向量機100天搞定機器學習|Day11 實現KNN100天搞定機器學習|Day13-14 SVM的實現100天搞定機器學習|Day15 樸素貝葉斯100天搞定機器學習|Day16 經過內核技巧實現SVM100天搞定機器學習|Day17-18 神奇的邏輯迴歸100天搞定機器學習|Day19-20 加州理工學院公開課:機器學習與數據挖掘機器學習
Day17,Avik-Jain第22天完成Yaser Abu-Mostafa教授的Caltech機器學習課程-CS156中的課程2。函數
1 Hoeffding不等式學習
假設有一個罐子裝滿了橙色和綠色的球,爲了估計罐子中橙色和綠色的比例,咱們隨機抓一把球,稱爲樣本:測試
其中,設罐子中橙色球的比例爲μ,樣本中橙色球比例爲v,樣本的大小爲N,咱們對真實分佈μ和樣本分佈v的差別容忍度爲ε,則有下面的不等式成立:3d
也就是存在一個機率上界,只要咱們保證樣本容量N很大,就能使得「μ和v的差別大」這件事的機率是很小的。cdn
若是咱們的假設函數h已經肯定了,那麼咱們能夠這樣把咱們的問題對應到罐子模型:每一個球表示一個輸入x,橙色表示h與真實的函數f預測的值不相同,綠色表示相同,即:blog
那麼罐子中的全部球就是全部可能的輸入x,而抓的一把球表示咱們的訓練集(注意!這裏實際上是作了一個假設:咱們的訓練集和測試集都由同一個未知的機率分佈P來產生,也就是來源於同一個罐子),那麼橙色球佔的比例μ就表示咱們的假設函數h在真正的輸入空間中的預測錯誤率Eout(咱們最後想要下降的),v就表示咱們在訓練集中的預測錯誤率Ein(咱們的算法能最小化的),由Hoeffding不等式,就能獲得:get
也就是說,只要咱們能保證訓練集的量N足夠大,就能保證訓練集的錯誤率與真實的預測錯誤率是有很大機率接近的。數學
上面一節咱們證實了,對於一個給定的假設函數h,只要訓練集足夠大,咱們能保證它在訓練集上的預測效果與真正的預測效果很大機率是接近的。可是,咱們只能保證它們的預測效果接近,也可能預測效果都是壞呢?
咱們的機器學習算法是在假設空間裏面選一個h,使得這個h在訓練集上錯誤率很小,那麼這個h是否是在整個輸入空間上錯誤率也很小呢?這一節咱們要證實的就是,對於假設空間只有有限個h時,只要訓練集N足夠大,這也是很大機率成立的。
首先咱們來看這張表:
首先,對於一個給定的h,咱們能夠定義一個概念:「壞的訓練集」(對應於表中紅色的bad)。所謂壞的訓練集,就是h在這個訓練集上面的Ein和真實的Eout的差別超過了咱們定義的容忍度ε。Hoeffding不等式保證了,對於一個給定的h(表中的一行),選到壞的訓練集的機率是很低的。
而後,對於假設空間裏面有M個候選的h,咱們從新定義「壞的訓練集」的概念(對應於表中橙色的bad),只要它對於任何一個h是壞的,那麼它就是一個壞的。那麼咱們選到橙色壞的訓練集的機率能夠以下推導:
因爲M是有限的,只要訓練集N足夠大,咱們選到壞訓練集的機率仍然是很小的。也就是說,咱們的訓練集很大多是一個好的訓練集,全部的h在上面都是好的,算法只要選取一個在訓練集上表現好的h,那麼它的預測能力也是PAC好的。也就是有不等式:
所以機器學習過程以下圖:
(這裏多出來的橙色部分表示,訓練集和測試集是由同一個機率分佈產生的)
所以當有限個h的狀況下,機器學習算法確實是能學到東西的。
以後咱們會討論,當假設空間存在無限個h時,機器學習是否還有效。
上一節咱們證實了,當假設空間的大小是M時,能夠獲得機率上界:
即,只要訓練數據量N足夠大,那麼訓練集上的Ein與真實的預測錯誤率Eout是PAC(大機率)接近的。
可是,咱們上面的理論只有在假設空間大小有限時才成立,若是假設空間無限大,右邊的機率上界就會變成無限大。
事實上,右邊的邊界是一個比較弱的邊界,這一節咱們要找出一個更強的邊界,來證實咱們的機器學習算法對於假設空間無限大的情形仍然是可行的。咱們將會用一個m來代替大M,而且證實當假設空間具備break point時,m具備N的多項式級別的上界。
對於一組給定的訓練集x1,x2,...,xN。定義函數H(x1,x2,......,xN),表示使用假設空間H裏面的假設函數h,最多能把訓練集劃分紅多少種圈圈叉叉組合(即產生多少種Dichotomy,最大是2^N)。
例如,假設空間是平面上的全部線,訓練數據集是平面上的N個點,則有:
N = 1 時,有2種劃分方式:
N = 2時,有4種劃分方式:
N = 3 時, 有8種劃分方式:
N = 4時,有14種劃分方式(由於有兩種是不可能用一條直線劃分出來的):
…………
另外,劃分數與訓練集有關,(例如N=3時,若是三個點共線,那麼有兩種劃分就不可能產生,所以只有6種劃分而不是8種):
爲了排除對於訓練數據的依賴性,咱們定義成長函數:
所以,成長函數的意義就是:使用假設空間H, 最多有多少種對訓練集(大小爲N)的劃分方式。成長函數只與兩個因素有關:訓練集的大小N,假設空間的類型H。
下面列舉了幾種假設空間的成長函數:
這裏咱們定義break point。所謂break point,就是指當訓練集的大小爲k時,成長函數知足:
即假設空間所不能shatter的訓練集容量。
容易想到,若是k是break point,那麼k + 1, k + 2....也是break point。
因爲第一個break point會對後面的成長函數有所限制,因而咱們定義上界函數B(N,k),表示在第一個break point是k的限制下,成長函數mH(N)的最大可能值:
如今咱們開始推導這個上界函數的上界:
首先,B(N,k)產生的Dichotomy能夠分爲兩種類型,一種是前N-1個點成對的出現,一種是前N-1個點只出現一次:
所以顯然有:
而後,對於前N-1個點在這裏產生的全部狀況:
顯然這裏的個數就是α+β,顯然,這前N-1個點產生的Dichotomy數仍然要受限於break point是k這個前提,所以:
而後,對於成對出現的Dichotomy的前N-1個點:
咱們能夠說,這裏的前N-1個點將會受限於break point是k-1。反證法:若是這裏有k-1個點是可以shatter的,那麼配合上咱們的第N個點,就能找出k個點能shatter,這與B(N,k)的定義就矛盾了。所以咱們有:
綜合上面,咱們有:
利用這個遞推關係以及邊界情形,咱們能夠用數學概括法簡單證實獲得(事實上能夠證實下面是等號關係):
所以成長函數具備多項式級別的上界。
這裏咱們不涉及嚴格的數學證實,而是用一種通俗化的方法來引出VC-Bound。也就是如何用m來替換M。
因而咱們就獲得了機器學習問題的PAC機率上界,稱爲VC-Bound:
所以咱們獲得了更強的邊界,當右邊的成長函數具備break point時,它的上界是N^k-1級別的,只要咱們的N足夠大,「存在一個假設函數h使得壞狀況發生」這件事的概率就會很小。
結論:當假設空間的成長函數具備break point時,只要N足夠大,咱們能PAC地保證訓練集是一個好的訓練集,全部h在上面的Ein和Eout都是近似的,算法能夠對這些h作自由選擇。也就是機器學習算法確實是能work的。
通俗的說,機器學習能work的條件:
1 好的假設空間。使得成長函數具備break point。
2 好的訓練數據集。使得N足夠大。
3 好的算法。使得咱們能選擇在訓練集上表現好的h。
4 好的運氣。由於仍是有必定小几率會發生壞狀況。
END
本文轉自:https://www.cnblogs.com/coldyan/