機器學習:什麼是過擬合和欠擬合
阿新 • • 發佈:2018-12-21
1. 什麼是欠擬合和過擬合
先看三張圖片,這三張圖片是線性迴歸模型 擬合的函式和訓練集的關係
-
第一張圖片擬合的函式和訓練集誤差較大,我們稱這種情況為
欠擬合
-
第二張圖片擬合的函式和訓練集誤差較小,我們稱這種情況為
合適擬合
-
第三張圖片擬合的函式完美的匹配訓練集資料,我們稱這種情況為
過擬合
類似的,對於邏輯迴歸同樣也存在欠擬合和過擬合問題,如下三張圖
2. 如何解決欠擬合和過擬合問題
欠擬合問題,根本的原因是特徵維度過少,導致擬合的函式無法滿足訓練集,誤差較大。
欠擬合問題可以通過增加特徵維度來解決。
過擬合問題,根本的原因則是特徵維度過多,導致擬合的函式完美的經過訓練集,但是對新資料的預測結果則較差 。
解決過擬合問題,則有2個途徑:
- 減少特徵維度; 可以人工選擇保留的特徵,或者模型選擇演算法
- 正則化; 保留所有的特徵,通過降低引數θ的值,來影響模型
3. 正則化
回到前面過擬合
例子,
h(x) = θ0 + θ1x1 + θ2x2 + θ3x3
+ θ4x4
從圖中可以看出,解決這個過擬合問題可以通過消除特徵x3和x4的影響, 我們稱為對引數的懲罰
,
也就是使得引數θ3, θ4接近於0。
最簡單的方法是對代價函式進行改造,例如
這樣在求解最小化代價函式的時候使得引數θ3, θ4接近於0。
正則化
其實就是通過對引數θ的懲罰來影響整個模型
4. 線性迴歸使用正則化
前面幾篇文章中,線性迴歸的代價函式
J(θ)表示式如下
正則化後,代價函式J(θ)表示式如下,注意j從1開始
注意λ值不能設定過大,否則會導致求出的引數除了θ0,其它θ1,θ2 ... θn值約等於0,導致預測函式h(x)出現極大偏差
我們的目標依然是求J(θ)最小值,我們還是用梯度下降演算法
和正規方程
求解最小化J(θ)
1. 梯度下降演算法(注意需要區分θ0和其它引數的更新等式)
2. 正規方程
對於正規方程來,需要修改等式如下
係數λ 所乘的矩陣為 (n+1)*(n+1)維
5. 邏輯迴歸使用正則化
和線性迴歸模型型別,邏輯迴歸也可以通過正則化來解決過擬合問題。
邏輯迴歸的代價函式
J(θ)表示式如下
正則化邏輯迴歸的代價函式,是在等式後加上一項,注意j從1開始
同樣的用梯度下降演算法
求解最小化J(θ),也需要做改變
不同的是邏輯迴歸模型中的預測函式 h(x)和線性迴歸不同