標籤:

機器學習-模型選擇與評價

交叉驗證

首先選擇模型最簡單的方法就是,利用每一種機器學習演算法(邏輯回歸、SVM、線性回歸等)計算訓練集的損失值,然後選擇其中損失值最小的模型,但是這樣是不合理的,因為當訓練集不夠、特徵過多時容易過擬合,那麼訓練集的損失值就會不斷變小,但是此時針對測試集可能損失值很高,所以訓練集上的損失值是無法衡量模型的好壞的。

我們的辦法就是增加交叉驗證集,即將所有數據分為三部分:訓練集、交叉驗證集和測試集。交叉驗證集不僅在選擇模型時有用,在超參數選擇、正則項參數 lambda 和評價模型中也很有用。

簡單交叉驗證

  1. 利用訓練集訓練模型
  2. 利用交叉驗證集在每一種模型上測試並計算損失值
  3. 選擇損失值最小的模型

但是簡單交叉驗證存在一個問題,就是因為增加了驗證集後,導致訓練集的數據更少了,這樣模型可能無法更好地的體現整體數據,所以提出以下交叉驗證的方法。

k-摺疊交叉驗證

  1. 假設訓練集為 S ,將訓練集等分為 k 份: left{ S_{1},S_{2},...,S_{k} 
ight}
  2. 然後每次從集合中拿出 k-1 份進行訓練
  3. 利用集合中剩下的那一份來進行測試並計算損失值
  4. 最後得到 k 次測試得到的損失值,並選擇平均損失值最小的模型

Bias與Variance,欠擬合與過擬合

如下圖,針對同一組數據的三種模型,可以看出來中間的模型可以更好的表現數據,其中左邊的模型一般稱為欠擬合,右邊的模型稱為過擬合。

欠擬合一般表示模型對數據的表現能力不足,通常是模型的複雜度不夠,並且Bias高,訓練集的損失值高,測試集的損失值也高。

過擬合一般表示模型對數據的表現能力過好,通常是模型的複雜度過高,並且Variance高,訓練集的損失值低,測試集的損失值高。

具體如下圖所示:

針對Bias於Variance,有多種解釋方法。

第一種:

一般用下面兩張圖表示:

Bias描述的是模型與數據表現的真實情況的差別,Variance描述的是我們的假設與最好的假設之間的差別。

第二種:

  • Bias是表明模型在整體數據上表現,不在乎其中某一個樣本的正確與否
  • 對於Variance,一個樣本的變動會給整個模型帶來很大的影響,是模型抗樣本干擾能力有多強

如下圖所示:

高Bias的模型,單個樣本對模型影響不大。

高Variance的模型,一個樣本的變化可以改變整個模型。

第三種:

解決方法

針對機器學習模型,在效果不佳時可以有如下解決辦法:

  1. 增加訓練樣本----解決高Variance情況
  2. 減少特徵維數----解決高Variance情況
  3. 增加特徵維數----解決高Bias情況
  4. 增加模型複雜度----解決高Bias情況
  5. 減小模型複雜度----解決高Variance情況

針對過擬合的情況,我們可以採取上述中的1、2、5的方法,除此之外,我們還可以在損失函數中增加正則項(L0、L1、L2範數)來解決過擬合的問題。

一般監督學習可以看做最小化下面目標函數:

w^{*}=argmin_{w}sum_{i}^{}{L(y^{(i)},h(x^{(i)};w))+lambdaOmega(w)}

其中 L 函數為損失函數, Omega(w) 就是規則化函數,也可以叫做正則項。我們增加正則項的主要原因是為了讓 w 更稀疏,使模型不容易過擬合(後面會詳細解釋)。 Omega(w) 函數具體可以有很多種選擇,常見的有L0範數、L1範數、L2範數等。其中:

  • L0範數是向量中非零元素的個數
  • L1範數是向量中各個元素絕對值之和, sum_{i}^{}{left| w_{i} 
ight|}
  • L2範數是向量的模, ||w||

其中L0範數由於不好實現,所以一般不採用。

針對L1範數,它能實現特徵的自動選擇,一般來說, x^{(i)} 的大部分元素(也就是特徵)都是和最終的輸出 y^{(i)} 沒有關係或者不提供任何信息的,在最小化目標函數的時候考慮 x^{(i)} 這些額外的特徵,雖然可以獲得更小的訓練誤差,但在預測新的樣本時,會干擾了對正確 y^{(i)} 的預測。稀疏規則化運算元就是為了完成特徵自動選擇,它會自己學習去掉這些沒有信息的特徵,也就是把這些特徵對應的權重置為0。

針對L2範數,與L1範數的區別是不會將權重置為0,而會是一個很小的數,這樣可以通過 lambda 來控制模型擬合程度,如下圖所示

針對正則項,我們還可以有如下理解(來自知乎問題機器學習中常常提到的正則化到底是什麼意思? @陶輕鬆的回答 ):

  1. 將函數 h_{	heta}(x) 泰勒展開, h_{	heta}(x)=w_{0}x_{0}+w_{1}x_{1}+w_{2}x_{2}+...+w_{n}x_{n}
  2. 當n很大的時候,特徵就越多,模型就越複雜,越容易過擬合。
  3. 因為 w 是我們學習到的,所以我們要做的就是改變 w 的大小減少特徵維數,降低模型複雜度,也是讓一部分 w 趨近於0。
  4. 所以在目標函數中加入正則項,利用L0、L1、L2範數來改變 w

參考

  • JerryLead的博客
  • yuyangzhang的博客
  • 機器學習中常常提到的正則化到底是什麼意思?

推薦閱讀:

機器學習篇-評估機器學習的模型
模型部署
機器學習篇:XGB為啥這麼萬能
【頂級資源】掌握線性代數為機器學習打下堅實基礎!
初級智能機器人與高級智能機器人有什麼區別?

TAG:機器學習 |