過擬合是什么呢?
過擬合簡單來說就是模型是由訓練數據集得來的,得到的模型只針對訓練集有更好的預測效果,對於未知的數據集預測效果很差。這其實是由於訓練過程中,模型過於偏向於訓練數據集,導致模型對訓練數據集的擬合效果很好,導致模型失去了泛化能力。
模型的泛化能力即指模型對於未知數據的預測能力。往往我們都希望我們的模型泛化能力強,這樣才能真正的具有應用於實際的可靠性。
那么對於過擬合我們應該采取什么方法去解決呢?或者說如何增強模型的泛化能力
兩種常用的方法是正則化和交叉驗證。
正則化是從模型上着手,改變模型的表達式來達到目的。而交叉驗證則是從數據集出發,通過對數據集的各種划分,在進行訓練來提高模型的泛化能力。
正則化的出發點是是什么呢?
往往過擬合的原因是由於模型參數過多或參數為了“迎合”訓練集導致參數分布“太偏”,導致模型過於復雜。正則化則是在損失函數后面加上一個正則化項aJ(f),J(f)也稱結構風險,a為調節經驗和結構風險的系數。J(f)往往為||w||2,其實J(f)的作用相當於將權重向量w的各個分項向0處拉,這樣就會使模型變得簡單,同時,如果w中有的分量接近於零,其實相當於減少了模型權重的參數個數,因為當w的某個分量很接近於0時,x中與該分量對應的數無論是大還是小與該分量相乘都為零。正則化方法也正符合了奧卡姆剃刀原理。
奧卡姆剃刀原理:在所有可能選擇的模型中,能夠很好的解釋已知數據並且十分簡單才是最好的模型。
交叉驗證其實相當於充分利用已有數據,盡量的留有未知數據去驗證模型。
交叉驗證一般三種常見的方法:簡單交叉驗證、S折交叉驗證、留一交叉驗證
簡單交叉驗證:隨機的將數據分為兩份,一般為3:7,訓練集占7份,測試集占3份。當然划分比例不是固定的,可以根據不同的情況去設置。
S折交叉驗證:將數據集隨機分為s份,取出一份,其余用作訓練集,用取出的那一份作測試集。之后放回輪流取出剩下每份數據,重復S次,選擇測試效果最好的那次結果。
留一交叉驗證:留一交叉驗證其實有點像S折交叉驗證的特殊情況,假如樣本數為N,如果S=N,此時S折交叉驗證就相當於留一交叉驗證,往往在數據稀缺的時候采用這種方法。