機(jī)器學(xué)習(xí) Week4 —— 訓(xùn)練模型的優(yōu)化:測試集,驗(yàn)證集

之前介紹了幾種不同的監(jiān)督學(xué)習(xí)算法:

但是有時(shí)將模型訓(xùn)練出來之后,會發(fā)現(xiàn)模型與實(shí)際之間的誤差還是很大的,這時(shí)應(yīng)該怎么辦呢,這篇文章就介紹一下可以從哪些角度考慮模型的優(yōu)化。一般來說,有以下角度:

  • 向數(shù)據(jù)集中添加更多的數(shù)據(jù)
  • 減少特征的數(shù)量
  • 嘗試更多不同的特征
  • 嘗試使用多項(xiàng)式特征
  • 增加或減少正則化參數(shù) λ

下面具體地介紹一下分析誤差的方法

測試集(Test Set)

對于我們訓(xùn)練出的模型來說,并不是誤差越小越好,因?yàn)檫@樣也可能導(dǎo)致過擬合,那么怎么判斷是不是過擬合了呢,方法是將數(shù)據(jù)集分為兩部分:訓(xùn)練集和測試集(Test Set),分的比例大致是 70% 和 30%,使用訓(xùn)練集中的數(shù)據(jù)最小化損失函數(shù),得到最優(yōu)化的參數(shù),再使用這組參數(shù)計(jì)算測試集上的損失函數(shù)值。比如對于線性回歸模型,測試集上的損失函數(shù)計(jì)算:
J_{test}(\Theta) = \dfrac{1}{2m_{test}} \sum_{i=1}^{m_{test}}(h_\Theta(x^{(i)}_{test}) - y^{(i)}_{test})^2
對于分類問題,我們計(jì)算測試集上的損失函數(shù)時(shí)可以使用:
err(h_\Theta(x),y) = \begin{matrix} 1 & \mbox {if } h_\Theta(x) \geq 0.5\ and\ y = 0\ or\ h_\Theta(x) < 0.5\ and\ y = 1\newline 0 & \mbox otherwise \end{matrix}
\text{Test Error} = \dfrac{1}{m_{test}} \sum^{m_{test}}_{i=1} err(h_\Theta(x^{(i)}_{test}), y^{(i)}_{test})
這樣我們就可以得到測試集中被錯(cuò)誤分類的數(shù)據(jù)的比例
如果模型出現(xiàn)了過擬合的情況,則會在訓(xùn)練集上有較小的損失函數(shù)值,而在測試集上有較大的損失函數(shù)。因此,使用測試集,我們就可以評估我們在訓(xùn)練集上訓(xùn)練出的模型的誤差

驗(yàn)證集(Validation Set)

還會遇到這種情況,我們建立了不同的模型,比如一次模型,二次,三次多項(xiàng)式模型,然后對每個(gè)模型都在訓(xùn)練集上訓(xùn)練出了最優(yōu)的參數(shù),現(xiàn)在我們?nèi)绾螐闹羞x擇到底使用模型并且評估它的誤差呢。一種方法是,我們可以將這些模型在測試集上面運(yùn)行,然后看哪個(gè)的誤差最小,這樣我們就選出了模型,但是我們?nèi)绾卧u估這個(gè)模型的誤差呢,如果繼續(xù)使用測試集來評估誤差的話,誤差肯定會比較小因?yàn)橹斑x擇模型的時(shí)候就已經(jīng)使用過測試集了。
因此,一般我們會將數(shù)據(jù)集分為三部分:訓(xùn)練集,驗(yàn)證集(Validation set),測試集,比例一般為 60%, 20%, 20%,選擇模型的步驟為:先在訓(xùn)練集上對每個(gè)模型求出最優(yōu)的參數(shù);然后使用驗(yàn)證集選擇出誤差最小的模型,這一步驟也叫做交叉驗(yàn)證(Cross-Validation);最后使用測試集評估這個(gè)選擇出的模型的誤差

判斷欠擬合和過擬合

在過擬合(High variance)和欠擬合(High bias)的情況下,模型的誤差都會很大,判斷到底是屬于哪種情況有助于我們優(yōu)化模型,那么怎么判斷到底是欠擬合還是過擬合呢。我們先來看一下在欠擬合,剛好擬合,和過擬合的情況下,訓(xùn)練集和驗(yàn)證集上的誤差變化情況:

Distinguish underfitting and overfitting

欠擬合的情況下,模型即使在訓(xùn)練集上也不能很好的擬合,因此在訓(xùn)練集和驗(yàn)證集上的誤差都很高,剛好擬合的情況下,兩者的誤差都很低,而在過擬合的情況下,模型很好的擬合了訓(xùn)練集,但是在驗(yàn)證集上的誤差依然很大,這樣我們就可以通過模型在訓(xùn)練集和驗(yàn)證集上的誤差來判斷模型到底是欠擬合還是過擬合。
同樣,在選擇正則化參數(shù)的時(shí)候,我們也可以使用驗(yàn)證集幫助我們選擇出最好的值,方法是使用不同的值訓(xùn)練出多個(gè)模型,比如: 取λ∈{0,0.01,0.02,0.04,0.08,0.16,0.32,0.64,1.28,2.56,5.12,10.24}。然后在驗(yàn)證集上選擇出誤差最小的模型,最后使用測試集評估模型的誤差。對于變化的情況下,欠擬合和過擬合的判斷,圖像如下:
Distinguish underfitting and overfitting

學(xué)習(xí)曲線(Learning Curves)

使用驗(yàn)證集,我們可以進(jìn)行不同特征的選擇,以及正則化參數(shù)的選擇,接下來我們還需要知道是否應(yīng)該向數(shù)據(jù)集中添加更多的數(shù)據(jù),我們可以使用學(xué)習(xí)曲線(Learning Curves)
學(xué)習(xí)曲線(Learning Curves),反映了訓(xùn)練集和驗(yàn)證集的誤差隨著數(shù)據(jù)的增加而改變的趨勢,下圖分別是模型在欠擬合和過擬合情況下的學(xué)習(xí)曲線:

Learning curve for underfitting

Learning Curve for overfitting

可以看到,當(dāng)模型面臨欠擬合的問題時(shí),增加數(shù)據(jù)并不能解決欠擬合的問題,當(dāng)模型過擬合時(shí),增加數(shù)據(jù)可能會有所幫助

總結(jié)一下之前提到的優(yōu)化方法,適用于哪些情況:

  • 向數(shù)據(jù)集中添加更多的數(shù)據(jù):改善過擬合
  • 減少特征的數(shù)量:改善過擬合
  • 增加特征的數(shù)量:改善欠擬合
  • 嘗試使用多項(xiàng)式特征:改善欠擬合
  • 減小正則化參數(shù) λ: 改善欠擬合
  • 增加正則化參數(shù) λ: 改善過擬合

對于神經(jīng)網(wǎng)絡(luò)模型的優(yōu)化,較少的層數(shù)和神經(jīng)元可能會導(dǎo)致欠擬合,較多的數(shù)目可能會導(dǎo)致過擬合,類似于之前的優(yōu)化方法,可以嘗試不同的隱藏層數(shù)目,利用驗(yàn)證集選擇誤差最小的模型,然后使用測試集評估模型的誤差
在實(shí)際應(yīng)用中,對于模型的優(yōu)化,我們可以手動找到模型分類錯(cuò)誤的數(shù)據(jù),然后從中發(fā)現(xiàn)是否可以嘗試一下新的特征,再使用驗(yàn)證集,看加入新的特征之后誤差是增大還是減少了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容