吳恩達(dá)機(jī)器學(xué)習(xí)——第七章 正則化(Regularization)

7.1 過擬合問題

到現(xiàn)在為止,我們已經(jīng)學(xué)習(xí)了幾種不同的學(xué)習(xí)算法,包括線性回歸和邏輯回歸,它們能夠有效地解決許多問題,但是當(dāng)將它們應(yīng)用到某些特定的機(jī)器學(xué)習(xí)應(yīng)用時(shí),會(huì)遇到過擬合(over-fitting)的問題,可能會(huì)導(dǎo)致它們效果很差。

接下來,我將會(huì)解釋什么是過度擬合問題,并且會(huì)談?wù)撘环N稱為正則化(regularization)的技術(shù),它可以改善或者減少過度擬合問題。

如果我們有非常多的特征,我們通過學(xué)習(xí)得到的假設(shè)可能能夠非常好地適應(yīng)訓(xùn)練集(代價(jià)函數(shù)可能幾乎為0),但是可能會(huì)不能推廣到新的數(shù)據(jù)。

下圖是一個(gè)回歸問題的例子:

第一個(gè)模型是一個(gè)線性模型,欠擬合,不能很好地適應(yīng)我們的訓(xùn)練集;第三個(gè)模型是一個(gè)四次方的模型,過于強(qiáng)調(diào)擬合原始數(shù)據(jù),而丟失了算法的本質(zhì):預(yù)測(cè)新數(shù)據(jù)。我們可以看出,若給出一個(gè)新的值使之預(yù)測(cè),它將表現(xiàn)的很差,是過擬合,雖然能非常好地適應(yīng)我們的訓(xùn)練集但在新輸入變量進(jìn)行預(yù)測(cè)時(shí)可能會(huì)效果不好;而中間的模型似乎最合適。

分類問題中也存在這樣的問題:

就以多項(xiàng)式理解,x的次數(shù)越高,擬合的越好,但相應(yīng)的預(yù)測(cè)的能力就可能變差。

問題是,如果我們發(fā)現(xiàn)了過擬合問題,應(yīng)該如何處理?

1.丟棄一些不能幫助我們正確預(yù)測(cè)的特征??梢允鞘止みx擇保留哪些特征,或者使用一些模型選擇的算法來幫忙(例如PCA

2.正則化。保留所有的特征,但是減少參數(shù)的大?。?b>magnitude)。



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

上面的回歸問題中如果我們的模型是:h_\theta (x)=\theta _0+\theta _1x_1+\theta _2{x_2}^2+\theta _3{x_3}^3 +\theta _4{x_4}^4

我們可以從之前的事例中看出,正是那些高次項(xiàng)導(dǎo)致了過擬合的產(chǎn)生,所以如果我們能讓這些高次項(xiàng)的系數(shù)接近于0的話,我們就能很好的擬合了。

所以我們要做的就是在一定程度上減小這些參數(shù)\theta 的值,這就是正則化的基本方法。我們決定要減小\theta _3\theta _4的大小,我們要做的便是修改代價(jià)函數(shù),在其中\theta _3\theta _4設(shè)置一點(diǎn)懲罰。這樣做的話,我們?cè)趪L試最小化代價(jià)時(shí)也需要將這個(gè)懲罰納入考慮中,并最終導(dǎo)致選擇較小一些的\theta _3\theta _4。

修改后的代價(jià)函數(shù)如下:min\frac{1}{2m}[\sum\nolimits_{i=1}^m(h_\theta (x^{(i)})-y^{(i)} ] )^2+{1000\theta _3}^2+{10000\theta _4}^2]

通過這樣的代價(jià)函數(shù)選擇出的\theta _3\theta _4對(duì)預(yù)測(cè)結(jié)果的影響就比之前要小許多。假如我們有非常多的特征,我們并不知道其中哪些特征我們要懲罰,我們將對(duì)所有的特征進(jìn)行懲罰,并且讓代價(jià)函數(shù)最優(yōu)化的軟件來選擇這些懲罰的程度。這樣的結(jié)果是得到了一個(gè)較為簡(jiǎn)單的能防止過擬合問題的假設(shè):J(\theta )=\frac{1}{2m}[\sum\nolimits_{i=1}^m(h_\theta (x^{(i)})-y^{(i)} ] )^2+\lambda \sum\nolimits_{j=1}^n\theta _j^2]

其中\lambda 又稱為正則化參數(shù)(Regularization Parameter)。注:根據(jù)慣例,我們不對(duì)\theta _0進(jìn)行懲罰。經(jīng)過正則化處理的模型與原模型的可能對(duì)比如下圖所示:

如果選擇的正則化參數(shù)\lambda 過大,則會(huì)把所有的參數(shù)都最小化了,導(dǎo)致模型變成h_\theta (x)=\theta _0,也就是上圖中紅色直線所示的情況,造成欠擬合。

那為什么增加的一項(xiàng)\lambda \sum\nolimits_{j=1}^n\theta _j^2可以使\theta 的值減小呢?

因?yàn)槿绻覀兞?img class="math-inline" src="https://math.jianshu.com/math?formula=%5Clambda%20" alt="\lambda " mathimg="1">的值很大的話,為了使Cost Function盡可能的小,所有的\theta 的值(不包括\theta _0)都會(huì)在一定程度上減小。

但若\lambda 的值太大了,那么\theta (不包括\theta _0)都會(huì)趨近于0,這樣我們所得到的只能是一條平行于x軸的直線。

所以對(duì)于正則化,我們要取一個(gè)合理的\lambda 的值,這樣才能更好的應(yīng)用正則化。

回顧一下代價(jià)函數(shù),為了使用正則化,讓我們把這些概念應(yīng)用到到線性回歸和邏輯回歸中去,那么我們就可以讓他們避免過度擬合了。


7.3 正則化線性回歸

對(duì)于線性回歸的求解,我們之前推導(dǎo)了兩種學(xué)習(xí)算法:一種基于梯度下降,一種基于正規(guī)方程。

正則化線性回歸的代價(jià)函數(shù)為:J(\theta )=\frac{1}{2m}[\sum\nolimits_{i=1}^m(h_\theta (x^{(i)})-y^{(i)} ] )^2+\lambda \sum\nolimits_{j=1}^n\theta _j^2]

如果我們要使用梯度下降法令這個(gè)代價(jià)函數(shù)最小化,因?yàn)槲覀兾磳?duì)進(jìn)行正則化,所以梯度下降算法將分兩種情形:

\theta _0:=\theta _0-a\frac{1}{m} \sum\nolimits_{i=1}^m (h_\theta (x^{(i)})-y^{(i)})x_0^{(i)})

\theta _j:=\theta _j-a[\frac{1}{m} \sum\nolimits_{i=1}^m (h_\theta (x^{(i)})-y^{(i)})x_j^{(i)}+\frac{\lambda }{m} \theta _j]

對(duì)上面的算法中j=1,2,...n時(shí)的更新式子進(jìn)行調(diào)整可得:

\theta _j:=\theta _j(1-a\frac{\lambda }{m}) -a\frac{1}{m} \sum\nolimits_{i=1}^m (h_\theta (x^{(i)})-y^{(i)})x_j^{(i)}

可以看出,正則化線性回歸的梯度下降算法的變化在于,每次都在原有算法更新規(guī)則的基礎(chǔ)上令\theta 值減少了一個(gè)額外的值(j=0)。

我們同樣也可以利用正規(guī)方程來求解正則化線性回歸模型,方法如下所示:

圖中的矩陣尺寸為(n+1)*(n+1)


7.4? 正則化的邏輯回歸模型

針對(duì)邏輯回歸問題,我們?cè)谥暗恼n程已經(jīng)學(xué)習(xí)過兩種優(yōu)化算法:我們首先學(xué)習(xí)了使用梯度下降法來優(yōu)化代價(jià)函數(shù)J(\theta ),接下來學(xué)習(xí)了更高級(jí)的優(yōu)化算法,這些高級(jí)優(yōu)化算法需要你自己設(shè)計(jì)代價(jià)函數(shù)J(\theta )

自己計(jì)算導(dǎo)數(shù)同樣對(duì)于邏輯回歸,我們也給代價(jià)函數(shù)增加一個(gè)正則化的表達(dá)式,得到代價(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

python代碼:

import?numpy as?np

def?costReg(theta, X, y, learningRate):

? ? ? ? ? ? ? ?theta =?np.matrix(theta)

? ? ? ? ? ? ? ?X =?np.matrix(X)

? ? ? ? ? ? ? ?y =?np.matrix(y)

? ? ? ? ? ? ? ?first =?np.multiply(-y, np.log(sigmoid(X*theta.T)))

? ? ? ? ? ? ???second =?np.multiply((1?-?y), np.log(1?-?sigmoid(X*theta.T)))

? ? ? ? ? ? ? ?reg =?(learningRate /?(2?*?len(X))*?np.sum(

? ? ? ? ? ? ? ? ? ? ? ? ? np.power(theta[:,1:theta.shape[1]],2))

? ? ? ? ? ? ? ?return?np.sum(first -?second) /?(len(X)) +?reg

要最小化該代價(jià)函數(shù),通過求導(dǎo),得出梯度下降算法為:

\theta _0:=\theta _0-a\frac{1}{m} \sum\nolimits_{i=1}^m (h_\theta (x^{(i)})-y^{(i)})x_0^{(i)})

\theta _j:=\theta _j-a[\frac{1}{m} \sum\nolimits_{i=1}^m (h_\theta (x^{(i)})-y^{(i)})x_j^{(i)}+\frac{\lambda }{m} \theta _j]

for j=1,2,...n

注:看上去同線性回歸一樣,但是知道h_\theta (x)=g(\theta ^TX),所以與線性回歸不同。


參考:https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes

最后編輯于
?著作權(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)容

  • 其中第五章是一些軟件教程,這里就跳過了,繼續(xù)跟著吳恩達(dá)老師學(xué)習(xí)接下來的內(nèi)容。 6.1 分類問題 在分類問題中,你要...
    Colleen_oh閱讀 1,654評(píng)論 1 5
  • 多變量線性回歸(Linear Regression with Multiple Variables) 多維特征 n...
    鋼的煉金術(shù)士閱讀 1,075評(píng)論 0 1
  • 以西瓜書為主線,以其他書籍作為參考進(jìn)行補(bǔ)充,例如《統(tǒng)計(jì)學(xué)習(xí)方法》,《PRML》等 第一章 緒論 1.2 基本術(shù)語(yǔ) ...
    danielAck閱讀 4,905評(píng)論 0 5
  • 最近在整理 Coursera 上 Andrew Ng 的 Machine Learning 課程的筆記,總共近 8...
    kamidox閱讀 1,382評(píng)論 2 2
  • 今天是我正式操作公眾號(hào)項(xiàng)目,對(duì)于一個(gè)網(wǎng)絡(luò)小白難度可想而知,好在有心理準(zhǔn)備,單單是一個(gè)菜單設(shè)置就弄了多半個(gè)小時(shí),又是...
    林強(qiáng)_a818閱讀 80評(píng)論 0 0

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