過(guò)擬合(Overfitting)和正則化(Regularized)

在應(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)在邏輯回歸上。

解決辦法

  1. 減少特征值的數(shù)量
    可以通過(guò)觀察手動(dòng)刪掉一些特征值,或者用模型選擇算法來(lái)達(dá)到目的。
  2. 正則化
    保留所有特征值,但是減少參數(shù)\theta_j的大小,因?yàn)樗坪趺總€(gè)特征值都或多或少的在預(yù)測(cè)函數(shù)起了作用。

這兩種方法的本質(zhì)類似,就是弱化不必要的特征值,從而解決過(guò)擬合。

代價(jià)函數(shù)

假設(shè)線性回歸的預(yù)測(cè)函數(shù)為:
h(\theta) = \theta_0+\theta_1x+\theta_2x^2+\theta_3x^3+\theta_4x^4

這是一個(gè)四次項(xiàng)的公式,通過(guò)上面的可以知道這是一個(gè)過(guò)擬合的預(yù)測(cè)函數(shù),需要解決過(guò)擬合,需要忽略后面的三次和四次項(xiàng),這要改一下代價(jià)函數(shù):

J(\theta) = \frac{1}{2m} \sum_{i=0}^m(h_\theta(x^{(i)})-y^{(i)})^2 +1000\cdot \theta_3^2 +1000\cdot \theta_4^2

在原油的代價(jià)函數(shù)上我們添加了1000\cdot \theta_3^21000\cdot \theta_4^2這兩個(gè),為了使代價(jià)函數(shù)盡量小,我們就需要讓\theta_3\theta_4盡量小,接近于零。

這樣就給了一個(gè)正則化的思路。將關(guān)聯(lián)小的特征值的參數(shù)趨向于0,使得預(yù)測(cè)函數(shù)從過(guò)擬合的狀態(tài)修正過(guò)來(lái)。

正則化后的代價(jià)函數(shù)為:
J(\theta)= \frac{1}{2m} [\sum_{i=0}^m (h_\theta(x^{(i)})-y^{(i)})^2 + \lambda \sum_{j=1}^n\theta_j^2 ]

其中\lambda為正則化參數(shù),為了平衡代價(jià)函數(shù)。\lambda需要選擇合適的值。

可以看到,在代價(jià)函數(shù)后面添加了\lambda \sum_{j=1}^n\theta_j^2 這一項(xiàng)。注意,這一項(xiàng)中的j 是從1到m的,因?yàn)?img class="math-inline" src="https://math.jianshu.com/math?formula=x_0" alt="x_0" mathimg="1">固定為0,不需要修正,所以參數(shù)\theta_0,不需要添加進(jìn)來(lái)。

線性回歸正則化

梯度下降算法:
重復(fù) {
\theta_0 = \theta_0-\alpha\frac{1}{m}\sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})x_0^{(i)}
\theta_j = \theta_j -\alpha [\frac{1}{m}\sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} +\frac{\lambda}{m}\theta_j ], j \in [1,2,3,...,n]
}

同樣的\theta_0不需要修正

下面的式子可以稍作調(diào)整:
\theta_j = \theta_j(1-\alpha\frac{\lambda}{m}) -\alpha\frac{1}{m}\sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}, j \in [1,2,3,...,n]

可以看出\theta_j是在原來(lái)梯度下降的基礎(chǔ)上又減去了\alpha\frac{\lambda}{m}\theta_j

邏輯回歸正則化

代價(jià)函數(shù):
J(\theta)=-\frac{1}{m} \sum_{i=1}^m [y^{(i)} \log(h_\theta(x^{(i)})) + (1-y^{(i)}) \log(1-h_\theta(x^{(i)}))] + \frac{\lambda}{2m} \sum_{j=1}^n \theta_j^2

同樣的\theta_0不需要修正

它的梯度下降算法是:

重復(fù) {
\theta_0 = \theta_0-\alpha\frac{1}{m} \sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})x_0^{(i)}
\theta_j = \theta_j -\alpha[\frac{1}{m}\sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} +\frac{\lambda}{m}\theta_j ], j \in [1,2,3,...,n]
}

正規(guī)方程(Normal Equation)

在求解線性回歸時(shí),除了梯度下降,還有一種正規(guī)方程的方式直接求解出\theta。使用正規(guī)方程的也需要正則化。

正規(guī)方程的公式為:
\theta=(X^TX)^{-1}X^Ty

需要作出修改:
\theta=(X^TX + \lambda\cdot L)^{-1}X^Ty

其中L是一個(gè)n+1的方陣 L=\left[ \begin{matrix} 0&&&& \\\ &1&&& \\\ &&1&& \\\ &&&...& \\\ &&&&1 \end{matrix} \right],L是一個(gè)對(duì)角線矩陣,對(duì)角線第一個(gè)元素為0。

轉(zhuǎn)載自:
https://codeeper.com/2020/01/14/tech/machine_learning/overfitting_and_regularized.html

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

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

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