模型優化、正則化、損失函數

一、前言

對於理解機器學習或者深度學習的人來說,需要了解基本的學習框架是什麼?無論是聚類、迴歸,對於參數的求解以及參數的正則化(防止過擬合的措施)來源於什麼原理或者基於什麼?,這是需要我們理解的。一般而言從誤差出發,有式子:
Loss_function=Est_error+Regularization of parameters

下面我們來說說估計誤差中的損失函數以及模型優化的手段。

二、常見的損失函數以及應用
這裏寫圖片描述
這裏寫圖片描述
三、train_data、validation_data、test_data之間的聯繫與區別

對應某個問題,我們獲得樣本集合data={(x(i),y(i)),i=1…n},備選的模型有很多,分類問題就可以使用決策樹、LR、RF、gbdt等,先假設有備選模型的集合爲{M1,M2…..Mk}.現在問題是選擇哪個模型?該模型對應的參數是多少?模型效果怎樣?

一般地,data分爲兩個部分(7:3),一部分作爲模型的訓練,通常叫做train_data;另外一部分作爲模型的測試,通常叫做 test_data。

但是對於多個模型比較或者某個模型它本身具有超參數,此時就需要validation_data,也叫做驗證數據,比如神經網絡模型,超參數就是隱層層數與隱層節點數。其實就是將原來的 train_test分成了兩個部分,訓練集合new_train_test(爲了區分)以及validation_data。有時候因爲前人的多次實踐,我們已經知道了最優的超參數,此時就不需要 validation_data來驗證,這就是我們常見的只有train_data,test_data。

一般的過程爲:
這裏寫圖片描述
這裏寫圖片描述
四、模型過擬合與欠擬合

1.過擬合與欠擬合

假設需要擬合下面的點,得到兩個擬合結果:
這裏寫圖片描述
左圖欠擬合,高偏差,是指模型未訓練出數據集的特徵,導致模型在訓練集、測試集上的精度都很低。

右圖過擬合,高方差(high variance),是指模型訓練出包含噪點在內的所有特徵,導致模型在訓練集的精度很高,但是應用到新數據集時,精度很低。

2.如何判斷過擬合與欠擬合——繪製損失函數隨數據集增加的學習曲線
這裏寫圖片描述
3.模型欠擬合與過擬合的優化方法
欠擬合:增加特徵、提升模型複雜度、減少正則項權重
這裏寫圖片描述
過擬合:增加樣本數量、減少特徵數目、增加正則項權重
這裏寫圖片描述
五、模型優化的方法

無論是迴歸還是分類問題,目的都是找到最好或者說比較好的模型去擬合原來的問題,這裏的好就就是使得損失函數的值較小且模型的泛化能力好。

(1)交叉驗證

上面已經介紹了主要思想,這個主要是選擇最優的模型以及最優的超參數,對於某個模型來說,最優參數與默認參數對模型的提高不會很大。

(2)特徵選擇

特徵工程是建模的核心,如果特徵選擇好,那麼模型的效果至少好了一半,模型準確率提高特徵工程是佔絕對作用的。常見的特徵選擇,我們可以從兩個方面去考慮:

1)從已有的特徵中選擇—–特徵選擇

基於AIC\BIC\CP值等統計指標:前進法、後退法、前進後退法
基於信息熵:決策樹(ID3、CD4.5、CART)
基於編碼分箱:woe與iv

2)獲取新的特徵——–特徵提取

常見方法:PCA(主成分分析)、ICA(獨立成分分析)\CCA(典型相關分析)、LDA(判別分析)、plsr(偏最小二乘迴歸)、神經網絡

(3)正則化以及常見正則化手段
這裏寫圖片描述
六、爲何正則化可以避免過擬合?

1.Dropout爲什麼可以減少overfitting?

一般情況下,對於同一組訓練數據,利用不同的神經網絡訓練之後,求其輸出的平均值可以減少overfitting。Dropout就是利用這個原理,每次丟掉一定比率的隱藏層神經元,相當於在不同的神經網絡上進行訓練,這樣就減少了神經元之間的依賴性,即每個神經元不能依賴於某幾個其他的神經元(指層與層之間相連接的神經元),使神經網絡更加能學習到與其他神經元之間的更加健壯robust的特徵。在Dropout的作者文章中,測試手寫數字的準確率達到了98.7%!所以Dropout不僅減少overfitting,還能提高準確率。

2.L1、L2正則化爲何可以減少overfitting?
這裏寫圖片描述
這裏寫圖片描述
回到爲什麼會減少overfitting這個問題,兩個解釋:
1.從上面可以看出,正則化後效果是均能夠使得權值減小。更小的權值w,從某種意義上說,表示網絡的複雜度更低,對數據的擬合剛剛好(這個法則也叫做奧卡姆剃刀)
2.過擬合的時候,擬合函數的係數往往非常大,爲什麼?因爲擬合函數需要顧忌每一個點,最終形成的擬合函數波動很大。在某些很小的區間裏,函數值的變化很劇烈。這就意味着函數在某些小區間裏的導數值(絕對值)非常大,由於自變量值可大可小,所以只有係數足夠大,才能保證導數值很大。而正則化是通過約束參數的範數使其不要太大,所以可以在一定程度上減少過擬合情況。

參考:
吳恩達機器學習視頻
The Elements of statistical learning 第二版
統計學習方法—李航
機器學習–周志華
https://hit-scir.gitbooks.io/neural-networks-and-deep-learning-zh_cn/content/chap3/c3s5ss1.html
https://blog.csdn.net/Mona_yang/article/details/80937802
https://blog.csdn.net/woniu201411/article/details/80696711

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章