1. 程式人生 > >機器學習之Validation(驗證,模型選擇)

機器學習之Validation(驗證,模型選擇)

  對於機器學習的模型選擇來說,即使只是對於二元分類,我們已經學習了很多方法,比如PLA,LR等;很多學習演算法都是可迭代的,需要決定迭代次數;你可能還需要決定每一次迭代走多大,例如梯度下降;或者有很多的轉換可以選擇,例如線性、二次等;同時規則化又有很多的選擇L1,L2;再來規則化到底要加多強的λ。況且這些選擇是組合起來的,某種程度上來說是組合爆炸的,那麼我們怎麼做出正確的選擇?

這裡寫圖片描述

這裡寫圖片描述

  那麼對於以上兩個模型,你會選擇哪一個模型呢?也許你會說,可以根據自己視覺上的判斷來選擇模型,但是我們必須注意到,當選擇的模型不是二元的,而是多元的時候,我們就不能通過視覺上的判斷來選擇了。還有一點,如果通過視覺上的判斷來選擇,我們就必須考慮到自己腦袋裡那個強大的VC維模型,那麼我們就不見得有多大的好處。

  如果以上方法不行的話 ,那我們是不是可以選一個Ein最小的方法呢?

  我們可以把待選擇的模型跑在我們的資料上,那麼我們就可以通過選擇Ein最小的模型來完成機器學習。

這裡寫圖片描述

  那麼,這麼做有什麼問題呢?

  首先,我們可以想象,在這樣的設定之下,我們肯定會選擇複雜度很高的模型,以減小Ein,就會可能造成overfitting(過擬合)。

  其次,這樣選擇模型,相當於在1班中選擇一個最好的學生s1,在2班中選擇一個最好的學生s2,然後再選擇出s1和s2中相對較好的學生。這無疑增加了模型複雜度。

這裡寫圖片描述

  那我們可不可以通過選一個Etest最小的方法呢?通過一個測試集來判斷Ete

st的大小,從而選出較好的模型?

這裡寫圖片描述

  看起來這是一個很好的方法。但是問題是我們能找到測試資料嗎?這就好像測試考試,在正式考試之前,你會得到考卷嗎?

  我們今天是要找到一箇中間方式,就是把一部分資料先拿出來當作測試資料,以保證測試資料不被汙染,當要進行驗證時,再把這部分資料拿出來進行測試!

  我們選出K個數據用來進行驗證,這K個數據的誤差記作Eval,稱為驗證誤差,那麼剩下的N-K個數據用來訓練模型,記作Dtrain

這裡寫圖片描述

  一般來說,K的值大約為整個資料集數量的五分之一。
K=N5