在應(yīng)用線性回歸和邏輯回歸去解決某些機(jī)器學(xué)習(xí)的實(shí)際應(yīng)用時(shí),它們可能會(huì)出現(xiàn)一種叫做“過(guò)度擬合”(Overfitting)的問(wèn)題。這會(huì)使得學(xué)習(xí)的結(jié)果很糟糕。
什么是過(guò)擬合
用預(yù)測(cè)房?jī)r(jià)的線性回歸的例子:

最左邊一張圖片用一條直線來(lái)擬合數(shù)據(jù),這種情況下隨著x軸的變大,房?jī)r(jià)增長(zhǎng)的幅度一直不變,這樣的結(jié)果誤差很大,這意味這該算法沒(méi)有很好的擬合訓(xùn)練數(shù)據(jù),
這種稱之為 “欠擬合”;
中間一張圖用的二次曲線來(lái)擬合數(shù)據(jù),擬合情況良好,稍有偏差;
右邊一張圖用了四次項(xiàng),擬合的更好,在圖中,它貫穿了所有樣本,但是它的曲線很扭曲,這不是一個(gè)很好的預(yù)測(cè)房?jī)r(jià)的模型,這稱之為 “過(guò)擬合”;
定義
過(guò)擬合: 假如有很多特征值,且學(xué)習(xí)算法能夠很好的擬合訓(xùn)練集,但是在新的樣本上卻表現(xiàn)的性能很差。
數(shù)據(jù)擬合有兩個(gè)極端,當(dāng)預(yù)測(cè)函數(shù)過(guò)于簡(jiǎn)單或者使用的相關(guān)特征值過(guò)少,就會(huì)出現(xiàn)欠擬合(高偏差high bias)的情況。
另一個(gè)極端,當(dāng)函數(shù)過(guò)于復(fù)雜,使用的非常多的特征值,使得學(xué)習(xí)算法在訓(xùn)練樣本上非常適合,但是不能推廣到新的樣本集上,這就是過(guò)擬合(高方差high variance)
過(guò)擬合問(wèn)題除了出現(xiàn)在線性回歸問(wèn)題上,也會(huì)出現(xiàn)在邏輯回歸上。
解決辦法
- 減少特征值的數(shù)量
可以通過(guò)觀察手動(dòng)刪掉一些特征值,或者用模型選擇算法來(lái)達(dá)到目的。 - 正則化
保留所有特征值,但是減少參數(shù)的大小,因?yàn)樗坪趺總€(gè)特征值都或多或少的在預(yù)測(cè)函數(shù)起了作用。
這兩種方法的本質(zhì)類似,就是弱化不必要的特征值,從而解決過(guò)擬合。
代價(jià)函數(shù)
假設(shè)線性回歸的預(yù)測(cè)函數(shù)為:
這是一個(gè)四次項(xiàng)的公式,通過(guò)上面的可以知道這是一個(gè)過(guò)擬合的預(yù)測(cè)函數(shù),需要解決過(guò)擬合,需要忽略后面的三次和四次項(xiàng),這要改一下代價(jià)函數(shù):
在原油的代價(jià)函數(shù)上我們添加了和
這兩個(gè),為了使代價(jià)函數(shù)盡量小,我們就需要讓
和
盡量小,接近于零。
這樣就給了一個(gè)正則化的思路。將關(guān)聯(lián)小的特征值的參數(shù)趨向于0,使得預(yù)測(cè)函數(shù)從過(guò)擬合的狀態(tài)修正過(guò)來(lái)。
正則化后的代價(jià)函數(shù)為:
其中為正則化參數(shù),為了平衡代價(jià)函數(shù)。
需要選擇合適的值。
可以看到,在代價(jià)函數(shù)后面添加了 這一項(xiàng)。注意,這一項(xiàng)中的
是從1到m的,因?yàn)?img class="math-inline" src="https://math.jianshu.com/math?formula=x_0" alt="x_0" mathimg="1">固定為0,不需要修正,所以參數(shù)
,不需要添加進(jìn)來(lái)。
線性回歸正則化
梯度下降算法:
重復(fù) {
}
同樣的不需要修正
下面的式子可以稍作調(diào)整:
可以看出是在原來(lái)梯度下降的基礎(chǔ)上又減去了
邏輯回歸正則化
代價(jià)函數(shù):
同樣的不需要修正
它的梯度下降算法是:
重復(fù) {
}
正規(guī)方程(Normal Equation)
在求解線性回歸時(shí),除了梯度下降,還有一種正規(guī)方程的方式直接求解出。使用正規(guī)方程的也需要正則化。
正規(guī)方程的公式為:
需要作出修改:
其中L是一個(gè)的方陣
,L是一個(gè)對(duì)角線矩陣,對(duì)角線第一個(gè)元素為0。
轉(zhuǎn)載自:
https://codeeper.com/2020/01/14/tech/machine_learning/overfitting_and_regularized.html