轉載請注明出處:http://www.cnblogs.com/ymingjingr/p/4271742.html
目錄
機器學習基石筆記1——在何時可以使用機器學習(1)
機器學習基石筆記2——在何時可以使用機器學習(2)
機器學習基石筆記3——在何時可以使用機器學習(3)(修改版)
機器學習基石筆記4——在何時可以使用機器學習(4)
機器學習基石筆記5——為什么機器可以學習(1)
機器學習基石筆記6——為什么機器可以學習(2)
機器學習基石筆記7——為什么機器可以學習(3)
機器學習基石筆記8——為什么機器可以學習(4)
機器學習基石筆記9——機器可以怎樣學習(1)
機器學習基石筆記10——機器可以怎樣學習(2)
機器學習基石筆記11——機器可以怎樣學習(3)
機器學習基石筆記12——機器可以怎樣學習(4)
機器學習基石筆記13——機器可以怎樣學得更好(1)
機器學習基石筆記14——機器可以怎樣學得更好(2)
機器學習基石筆記15——機器可以怎樣學得更好(3)
機器學習基石筆記16——機器可以怎樣學得更好(4)
十五、Validation
驗證。
15.1 Model Selection Problem
模型選擇問題。
到目前為止,已經學過了許多算法模型,但一個模型需要很多參數的選擇,這是本章討論的重點。
以二元分類為例,在學過的算法有PLA、pocket、線性回歸、logistic回歸;算法中需要用到迭代方法,就需要選擇迭代步驟T;同理也需要選擇學習步長 ;處理非線性問題時,需要用到不同的轉換函數,可能是線性的,二次式,10次多項式或者10次勒讓德多項式;如果加上正則化項,則可以選擇L2正則化項,L1正則化項;有了正則化項,則參數
值也需要選擇。
在如此多的選項中設計一個適用於各種情況各個數據集的模型顯然是不可能的,因此針對不同的情況,對各個參數的選擇是必須的。
選擇的依據當然是在各種假設空間 及各種算法
組成的模型中通過算法
尋找到一個使得
最小的
。但問題是不知道
與
的情況下,即不知道
。
顯然通過方式尋找最佳模型的方式行不通,通過尋找最小
是否可行呢?如公式15-1所示。
(公式15-1)
但是此舉扔不合理,顯然高次轉換函數比低次轉換函數得到的更小,加上正則化的比不加正則化的
可能更大。
此種方式很容易產生過擬合現象,因此不好。
此外不同的算法A在不同的假設空間H中尋找各假設空間中使得最小的假設函數g,將各假設函數g作對比,選擇其中
最小的作為
,本質上是在各假設空間的聯合空間中尋找
最小的
,其VC維
,將有不好的泛化性能。
訓練數據集不行,那么使用測試數據集 ,選擇
最小的假設函數,公式如15-2所示。
(公式15-2)
不同於使用訓練數據,此種情況有霍夫丁不等式保證了泛化,如公式15-3所示。
(公式15-3)
該霍夫丁不等式在7.4節給出了解釋,其中表示模型復雜度。但是這樣做就正確了?實際上使用測試數據來選擇模型參數是一種作弊的行為。
將以上兩種方式進行對比,如表15-1所示。
表15-1 在選擇參數時,使用和
的對比
訓練數據錯誤 |
測試錯誤 |
數據來自於訓練數據D |
測試來自於測試數據 |
可行的(擁有該數據) |
不可行(沒有該數據) |
被污染過了(訓練數據決定了假設空間,不可再用來做參數選擇) |
干凈的 |
兩種方式(和
)都不好,因此設計一種中間的方法
。將訓練數據預留出一部分作為選擇參數的驗證(validation)數據,使用
表示。此種數據是本身具有的,同時也是沒受過污染的,使用確認數據尋找最小的
。
15.2 Validation
驗證。
接着上一節提到的驗證數據繼續講,為了達到數據既可用又不出現污染的情況,將原本的樣本數據D分為兩個部分:訓練數據和驗證數據
,如公式15-4所示。
(公式15-4)
從原大樣本數據集D得到的最佳函數如公式15-5所示。
(公式15-5)
而從訓練樣本數據集得到的最佳函數
如公式15-6所示。
(公式15-6)
注意驗證數據集是以聯合概率分布概率,獨立同分布的從數據集D中抽取的K個樣本。類似於上一節公式15-3,此處使用
取代
做測試,通過公式15-7做泛化保證。注意其中根號中分母的部分也換成了驗證數據的數據量。
(公式15-7)
再總結下,使用此種方式的算法流程,如圖15-1所示。
圖15-1 使用訓練數據集和驗證數據集的算法流程
首先將原數據集D分為兩部分:訓練數據集和驗證數據集
。不同的模型(不同的假設空間H和不同的算法A,算法中包括不同參數)用訓練數據集
得到不同的最佳函數
,如圖中各假設空間H得到的各最佳函數
。再使用驗證數據集
,選擇驗證錯誤
最小的,得出最佳模型,該過程可以寫成公式15-8的形式。
(公式15-8)
通過該模型訓練整個數據集D,得到最終的假設 以及最小的
。注意最后是使用整個數據集D重新做的訓練,而不是直接使用原本訓練數據集
原本訓練得到的結果,因為理論上數據量越大越接近最終的
,如公式15-9所示。
(公式15-9)
將公式15-7與公式15-9連接起來得公式15-10。
(公式15-10)
上述只是理論,甚至是直覺上得到的結論,以下是通過實驗得到的數據繪制成圖表,以表明不等式確實成立,如圖15-2所示。圖中橫軸表示驗證數據集的大小K,縱軸表示錯誤率 ,黑色虛線表示使用測試數據集
得到的最佳情況(現實中是不可能辦到的);藍色表示通過驗證數據集算得的最佳模型號,再用整個樣本集重新訓練得到的最佳函數
;黑色直線表示使用整個樣本集得到的最佳函數
;紅色線表示直接通過訓練樣本得到的最佳函數
。從該圖也可以得到
的結論。
圖15-2 驗證數據集的可行性
解釋下為何紅色線在驗證樣本大於一定數量時變得越來越差,,原因是樣本總是是固定的,當驗證樣本增加時,訓練樣本變得越來越小,因此得到的假設函數越來越差。
注意公式15-10有兩個近似關系,其中當K足夠大時, 與
越接近,但是因為N-K在變小,導致
與
相差更大;同理當K足夠小時,
與
足夠接近,但是
與
相差很大。K的選擇成為了一個新的問題,林老師推薦K的選擇為
。
15.3 Leave-One-Out Cross Validation
留一法交叉驗證。
上一節中提到K的取值很重要,假設一種極端的情況K=1,即驗證數據集為 ,則驗證錯誤率為
。如何使得
更接近
,使用留一法交叉驗證(Leave-One-Out Cross Validatio),其公式如15-11。
(公式15-11)
看公式可能會覺得復雜,接着說明如何使用留一法交叉驗證。假設有三個樣本點和兩種模型:線性模型和常數模型,其結果如圖15-3和圖15-4所示。
圖15-3 線性模型留一法交叉驗證
線性模型留一法交叉驗證的求解公式如公式15-12所示。
(公式15-12)
圖15-4常數模型留一法交叉驗證
常數模型留一法交叉驗證的求解公式如公式15-13所示。
(公式15-13)
通過公式15-14選擇最佳的模型。
(公式15-14)
從公式15-12到公式15-14可得常數模型比線性模型錯誤率更小,這個結果體現降低復雜度的思想。
最重要的問題是是否接近
?以下從理論的角度推導在樣本數量為N-1時,平均
與
的關系。
( 與
都是線性函數,因此可以調換位置。)
(可以將樣本數據集拆為去除驗證樣本后的 和單一驗證樣本
,而
也寫成其真正的形式
)
(公式15-14)
因此證明了與
(就是
)接近,而
與
又幾乎一致,因為只差了一個樣本。
理論上證明留一法交叉驗證有效可能還是比較抽象,以下從實驗角度,以手寫數字集為例,如圖15-5所示,藍色表示為"1"的樣本,紅色表示非"1"樣本,以對稱性(symmetry)和密度(intensity)為樣本的特征值,中間的一幅圖為以 作為依據得到的最優函數划分,明顯很不平滑,右圖為以
為依據得到的最優函數划分,平滑很多。
圖 15-5 手寫數據集表明留一法交叉驗證的效果
而通過實驗繪制了特征數量(即模型的復雜度,特征越多模型越復雜)與各錯誤率(、
及
)之間的關系圖。如圖15-6所示。
圖15-6 特征數量與各錯誤率之間的關系圖
從圖中不難得出,隨着模型復雜度提高,不斷降低(因為更高次的函數擬合樣本點),與實際的
相差越來越大;同時
則在不斷增加;而
和
的曲線非常接近。因此
比
好得多。
15.4 V-Fold Cross Validation
K-折交叉驗證。
上一節中介紹的留一法交叉驗證存在兩個問題,一是當數據量稍大時選擇模型的成本多大,比如樣本為1000個,則每個模型要使用999個樣本運行1000次,因此在實際運用中可用性不高;二是穩定性不好,因為總是單一樣本做驗證,導致如圖15-6曲線的曲線波動性過大,很不穩定。實際應用中很少使用留一法交叉驗證。
為了解決留一法交叉驗證的兩個問題,提出了一種交叉驗證方式,將樣本數據集分成V個大小相等的部分,選擇其中V-1個部分做訓練,其中一部分做驗證。交叉錯誤如公式15-15所示。
(公式15-15)
選擇最優模型的公式如公式15-16所示。
(公式15-16)
林老師推薦V的選擇為10。