機器學習-模型選擇與評價
交叉驗證
首先選擇模型最簡單的方法就是,利用每一種機器學習演算法(邏輯回歸、SVM、線性回歸等)計算訓練集的損失值,然後選擇其中損失值最小的模型,但是這樣是不合理的,因為當訓練集不夠、特徵過多時容易過擬合,那麼訓練集的損失值就會不斷變小,但是此時針對測試集可能損失值很高,所以訓練集上的損失值是無法衡量模型的好壞的。
我們的辦法就是增加交叉驗證集,即將所有數據分為三部分:訓練集、交叉驗證集和測試集。交叉驗證集不僅在選擇模型時有用,在超參數選擇、正則項參數 和評價模型中也很有用。
簡單交叉驗證
- 利用訓練集訓練模型
- 利用交叉驗證集在每一種模型上測試並計算損失值
- 選擇損失值最小的模型
但是簡單交叉驗證存在一個問題,就是因為增加了驗證集後,導致訓練集的數據更少了,這樣模型可能無法更好地的體現整體數據,所以提出以下交叉驗證的方法。
k-摺疊交叉驗證
- 假設訓練集為 ,將訓練集等分為 份:
- 然後每次從集合中拿出 份進行訓練
- 利用集合中剩下的那一份來進行測試並計算損失值
- 最後得到 次測試得到的損失值,並選擇平均損失值最小的模型
Bias與Variance,欠擬合與過擬合
如下圖,針對同一組數據的三種模型,可以看出來中間的模型可以更好的表現數據,其中左邊的模型一般稱為欠擬合,右邊的模型稱為過擬合。
欠擬合一般表示模型對數據的表現能力不足,通常是模型的複雜度不夠,並且Bias高,訓練集的損失值高,測試集的損失值也高。
過擬合一般表示模型對數據的表現能力過好,通常是模型的複雜度過高,並且Variance高,訓練集的損失值低,測試集的損失值高。
具體如下圖所示:
針對Bias於Variance,有多種解釋方法。
第一種:
一般用下面兩張圖表示:
Bias描述的是模型與數據表現的真實情況的差別,Variance描述的是我們的假設與最好的假設之間的差別。
第二種:
- Bias是表明模型在整體數據上表現,不在乎其中某一個樣本的正確與否
- 對於Variance,一個樣本的變動會給整個模型帶來很大的影響,是模型抗樣本干擾能力有多強
如下圖所示:
高Bias的模型,單個樣本對模型影響不大。
高Variance的模型,一個樣本的變化可以改變整個模型。
第三種:
解決方法
針對機器學習模型,在效果不佳時可以有如下解決辦法:
- 增加訓練樣本----解決高Variance情況
- 減少特徵維數----解決高Variance情況
- 增加特徵維數----解決高Bias情況
- 增加模型複雜度----解決高Bias情況
- 減小模型複雜度----解決高Variance情況
針對過擬合的情況,我們可以採取上述中的1、2、5的方法,除此之外,我們還可以在損失函數中增加正則項(L0、L1、L2範數)來解決過擬合的問題。
一般監督學習可以看做最小化下面目標函數:
其中 函數為損失函數, 就是規則化函數,也可以叫做正則項。我們增加正則項的主要原因是為了讓 更稀疏,使模型不容易過擬合(後面會詳細解釋)。 函數具體可以有很多種選擇,常見的有L0範數、L1範數、L2範數等。其中:
- L0範數是向量中非零元素的個數
- L1範數是向量中各個元素絕對值之和,
- L2範數是向量的模,
其中L0範數由於不好實現,所以一般不採用。
針對L1範數,它能實現特徵的自動選擇,一般來說, 的大部分元素(也就是特徵)都是和最終的輸出 沒有關係或者不提供任何信息的,在最小化目標函數的時候考慮 這些額外的特徵,雖然可以獲得更小的訓練誤差,但在預測新的樣本時,會干擾了對正確 的預測。稀疏規則化運算元就是為了完成特徵自動選擇,它會自己學習去掉這些沒有信息的特徵,也就是把這些特徵對應的權重置為0。
針對L2範數,與L1範數的區別是不會將權重置為0,而會是一個很小的數,這樣可以通過 來控制模型擬合程度,如下圖所示
針對正則項,我們還可以有如下理解(來自知乎問題機器學習中常常提到的正則化到底是什麼意思? @陶輕鬆的回答 ):
- 將函數 泰勒展開,
- 當n很大的時候,特徵就越多,模型就越複雜,越容易過擬合。
- 因為 是我們學習到的,所以我們要做的就是改變 的大小減少特徵維數,降低模型複雜度,也是讓一部分 趨近於0。
- 所以在目標函數中加入正則項,利用L0、L1、L2範數來改變 。
參考
- JerryLead的博客
- yuyangzhang的博客
- 機器學習中常常提到的正則化到底是什麼意思?
推薦閱讀:
※機器學習篇-評估機器學習的模型
※模型部署
※機器學習篇:XGB為啥這麼萬能
※【頂級資源】掌握線性代數為機器學習打下堅實基礎!
※初級智能機器人與高級智能機器人有什麼區別?
TAG:機器學習 |