新型机器学习算法:正则化理解
生活随笔
收集整理的這篇文章主要介紹了
新型机器学习算法:正则化理解
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.過擬合問題
上面是預(yù)測房價(jià)的例子,先對該數(shù)據(jù)做線性回歸,也就是左邊第一張圖。如果這么做,可以獲得擬合直線,但是,實(shí)際上這并不是一個(gè)很好的模型。我們看看這些數(shù)據(jù),很明顯,隨著房子面積增大,住房價(jià)格的變化趨于穩(wěn)定或者說越往右越平緩。因此線性回歸并沒有很好擬合訓(xùn)練數(shù)據(jù)。我們把此類情況稱為欠擬合,或者叫作叫做高偏差。這兩種說法大致相似,都表示沒有很好地?cái)M合訓(xùn)練數(shù)據(jù)。高偏差這個(gè)詞是 machine learning 的研究初期傳下來的一個(gè)專業(yè)名詞,具體到這個(gè)問題,意思就是說如果用線性回歸這個(gè)算法去擬合訓(xùn)練數(shù)據(jù),那么該算法實(shí)際上會產(chǎn)生一個(gè)非常大的偏差或者說存在一個(gè)很強(qiáng)的偏見。 第二幅圖,我們在中間加入一個(gè)二次項(xiàng),也就是說對于這幅數(shù)據(jù)我們用二次函數(shù)去擬合。自然,可以擬合出一條曲線,事實(shí)也證明這個(gè)擬合效果很好。
另一個(gè)極端情況是,如果在第三幅圖中對于該數(shù)據(jù)集用一個(gè)四次多項(xiàng)式來擬合。因此在這里我們有五個(gè)參數(shù)θ0到θ4,這樣我們同樣可以擬合一條曲線,通過我們的五個(gè)訓(xùn)練樣本,我們可以得到如右圖的一條曲線。我們似乎對訓(xùn)練數(shù)據(jù)做了一個(gè)很好的擬合,因?yàn)檫@條曲線通過了所有的訓(xùn)練實(shí)例。但是,這實(shí)際上是一條很扭曲的曲線,它不停上下波動(dòng)。因此,事實(shí)上我們并不認(rèn)為它是一個(gè)預(yù)測房價(jià)的好模型。所以,我們把這類情況叫做過擬合(overfitting),也叫高方差(variance)。
與高偏差一樣,高方差同樣也是一個(gè)歷史上的叫法。從第一印象上來說,如果我們擬合一個(gè)高階多項(xiàng)式,那么這個(gè)函數(shù)能很好的擬合訓(xùn)練集(能擬合幾乎所有的訓(xùn)練數(shù)據(jù)),但這也就面臨函數(shù)可能太過龐大的問題,變量太多。同時(shí)如果我們沒有足夠的數(shù)據(jù)集(訓(xùn)練集)去約束這個(gè)變量過多的模型,那么就會發(fā)生過擬合。
2.什么情況下會出現(xiàn)過擬合現(xiàn)象?
過度擬合的問題通常發(fā)生在變量(特征)過多的時(shí)候。這種情況下訓(xùn)練出的方程總是能很好的擬合訓(xùn)練數(shù)據(jù),也就是說,我們的代價(jià)函數(shù)可能非常接近于 0 或者就為 0。但是,這樣的曲線千方百計(jì)的去擬合訓(xùn)練數(shù)據(jù),這樣會導(dǎo)致它無法泛化到新的數(shù)據(jù)樣本中(過擬合帶來嚴(yán)重問題就是泛化能力差),以至于無法預(yù)測新樣本價(jià)格。 在這里,術(shù)語"泛化"指的是一個(gè)假設(shè)模型能夠應(yīng)用到新樣本的能力。新樣本數(shù)據(jù)是指沒有出現(xiàn)在訓(xùn)練集中的數(shù)據(jù)。
之前,我們看到了線性回歸情況下的過擬合。類似的情況也適用于邏輯回歸。
3.如何處理過擬合現(xiàn)象?
過多的變量(特征),同時(shí)只有非常少的訓(xùn)練數(shù)據(jù),會導(dǎo)致出現(xiàn)過度擬合的問題。因此為了解決過度擬合,有以下兩個(gè)辦法。3.1 方法一:降維
具體而言,我們可以人工檢查每一項(xiàng)變量,并以此來確定哪些變量更為重要,然后,保留那些更為重要的特征變量。至于,哪些變量應(yīng)該舍棄,我們以后在討論,這會涉及到模型選擇算法,這種算法是可以自動(dòng)選擇采用哪些特征變量,自動(dòng)舍棄不需要的變量。這類做法非常有效,但是其缺點(diǎn)是當(dāng)你舍棄一部分特征變量時(shí),你也舍棄了問題中的一些信息。例如,也許所有的特征變量對于預(yù)測房價(jià)都是有用的,我們實(shí)際上并不想舍棄一些信息或者說舍棄這些特征變量。3.2 方法二:正則化
正則化中我們將保留所有的特征變量,但是會減小特征變量的數(shù)量級(參數(shù)數(shù)值的大小θ(j))。這個(gè)方法非常有效,當(dāng)我們有很多特征變量時(shí),其中每一個(gè)變量都能對預(yù)測產(chǎn)生一點(diǎn)影響。正如我們在房價(jià)預(yù)測的例子中看到的那樣,我們可以有很多特征變量,其中每一個(gè)變量都是有用的,因此我們不希望把它們刪掉,這就導(dǎo)致了正則化概念的發(fā)生。接下來我們會討論怎樣應(yīng)用正則化和什么叫做正則化均值,然后將開始討論怎樣使用正則化來使學(xué)習(xí)算法正常工作,并避免過擬合。 損失函數(shù)
在前面的介紹中,我們看到了如果用一個(gè)二次函數(shù)來擬合這些數(shù)據(jù),那么它給了我們一個(gè)對數(shù)據(jù)很好的擬合。然而,如果我們用一個(gè)更高次的多項(xiàng)式去擬合,最終我們可能會得到一個(gè)曲線,它能很好地?cái)M合訓(xùn)練集,但卻并不是一個(gè)好的結(jié)果,因?yàn)樗^度擬合了數(shù)據(jù),因此,一般性并不是很好(泛化能力差)。
讓我們考慮下面的假設(shè),我們想要加上懲罰項(xiàng),從而使參數(shù) θ3 和 θ4 足夠的小:
這里我的意思就是,上圖的式子是我們的優(yōu)化目標(biāo),也就是說我們需要盡量減少代價(jià)函數(shù)的均方誤差。
對于這個(gè)函數(shù)我們對它添加一些項(xiàng),加上 1000 乘以 θ3 的平方,再加上 1000 乘以 θ4 的平方,
1000 只是我隨便寫的某個(gè)較大的數(shù)字而已。現(xiàn)在,如果我們要最小化這個(gè)函數(shù),那么為了最小化這個(gè)新的代價(jià)函數(shù),我們要讓θ3和θ4盡可能小。因?yàn)?#xff0c;如果你在原有代價(jià)函數(shù)的基礎(chǔ)上加上 1000 乘以 θ3 這一項(xiàng) ,那么這個(gè)新的代價(jià)函數(shù)將變得很大,所以,當(dāng)我們最小化這個(gè)新的代價(jià)函數(shù)時(shí), 我們將使 θ3 的值接近于 0,同樣θ4的值也接近于0,就像我們忽略了這兩個(gè)值一樣。如果我們做到這一點(diǎn)(θ3和θ4接近 0 ),那么我們將得到一個(gè)近似的二次函數(shù)。
因此,我們最終恰當(dāng)?shù)財(cái)M合了數(shù)據(jù),我們所使用的正是二次函數(shù)加上一些非常小,貢獻(xiàn)很小項(xiàng)(因?yàn)檫@些項(xiàng)的 θ3、θ4非常接近于0)。顯然,這是一個(gè)更好的假設(shè)。
更一般地,這里給出了正規(guī)化背后的思路。這種思路就是,如果我們的參數(shù)值對應(yīng)一個(gè)較小值的話(參數(shù)值比較小),那么往往我們會得到一個(gè)形式更簡單的假設(shè)。
在我們上面的例子中,我們懲罰的只是θ3和θ4,使這兩個(gè)值均接近于零,從而我們得到了一個(gè)更簡單的假設(shè),實(shí)際上這個(gè)假設(shè)大抵上是一個(gè)二次函數(shù)。
但更一般地說,如果我們像懲罰θ3和θ4這樣懲罰其它參數(shù),那么我們往往可以得到一個(gè)相對較為簡單的假設(shè)。
實(shí)際上,這些參數(shù)的值越小,通常對應(yīng)于越光滑的函數(shù),也就是更加簡單的函數(shù)。因此 就不易發(fā)生過擬合的問題。 來讓我們看看具體的例子,對于房屋價(jià)格預(yù)測我們可能有上百種特征,與剛剛所講的多項(xiàng)式例子不同,我們并不知道θ3和θ4是高階多項(xiàng)式的項(xiàng)。所以,如果我們有一百個(gè)特征,我們并不知道如何選擇關(guān)聯(lián)度更好的參數(shù),如何縮小參數(shù)的數(shù)目等等。
因此在正則化里,我們要做的事情,就是把減小我們的代價(jià)函數(shù)(例子中是線性回歸的代價(jià)函數(shù))所有的參數(shù)值,因?yàn)槲覀儾⒉恢朗悄囊粋€(gè)或哪幾個(gè)要去縮小。
因此,我們需要修改代價(jià)函數(shù),在這后面添加一項(xiàng),就像我們在方括號里的這項(xiàng)。當(dāng)我們添加一個(gè)額外的正則化項(xiàng)的時(shí)候,我們收縮了每個(gè)參數(shù)。
順便說一下,按照慣例,我們沒有去懲罰θ0。因此θ0的值是大的。這就是一個(gè)約定從1到n的求和,而不是從 0 到n的求和。但其實(shí)在實(shí)踐中這只會有非常小的差異,無論你是否包括這θ0這項(xiàng)。但是按照慣例,通常情況下我們還是只從θ1到θn進(jìn)行正則化。
紫色箭頭指示的那一項(xiàng)就是一個(gè)正則化項(xiàng),并且λ在這里我們稱做正則化參數(shù)。 λ要做的就是控制在兩個(gè)不同的目標(biāo)中的平衡關(guān)系。
- 第一個(gè)目標(biāo)就是我們想要訓(xùn)練,使假設(shè)更好地?cái)M合訓(xùn)練數(shù)據(jù)。我們希望假設(shè)能夠很好的適應(yīng)訓(xùn)練集。
- 第二個(gè)目標(biāo)是我們想要保持參數(shù)值較小。(通過正則化項(xiàng))
而 λ 這個(gè)正則化參數(shù)需要控制的是這兩者之間的平衡,即平衡擬合訓(xùn)練的目標(biāo)和保持參數(shù)值較小的目標(biāo)。從而來保持假設(shè)的形式相對簡單,來避免過度的擬合。
對于我們的房屋價(jià)格預(yù)測來說,我們之前所用的非常高的高階多項(xiàng)式來擬合,我們將會得到一個(gè)非常彎曲和復(fù)雜的曲線函數(shù),現(xiàn)在我們只需要使用正則化目標(biāo)的方法,那么你就可以得到一個(gè)更加合適的曲線,但這個(gè)曲線不是一個(gè)真正的二次函數(shù)(二次函數(shù)的高階平滑),而是更加的流暢和簡單的一個(gè)曲線。這樣就得到了對于這個(gè)數(shù)據(jù)更好的假設(shè)。
4.如何設(shè)置正則化參數(shù)
在正則化線性回歸中,如果正則化參數(shù)值 λ 被設(shè)定為非常大,那么將會發(fā)生什么呢?我們將會非常大地懲罰參數(shù)θ1 θ2 θ3 θ4 … 也就是說,我們最終懲罰θ1 θ2 θ3 θ4 … ?在一個(gè)非常大的程度,那么我們會使所有這些參數(shù)接近于零。
如果我們這么做,那么就是我們的假設(shè)中相當(dāng)于去掉了這些項(xiàng),并且使我們只是留下了一個(gè)簡單的假設(shè),這個(gè)假設(shè)只能表明房屋價(jià)格等于θ0的值,那就是類似于擬合了一條水平直線,對于數(shù)據(jù)來說這就是一個(gè)欠擬合 (underfitting)。這種情況下這一假設(shè)它是條失敗的直線,對于訓(xùn)練集來說這只是一條平滑直線,它沒有任何趨勢,它不會去趨向大部分訓(xùn)練樣本的任何值。
因此,為了使正則化運(yùn)作良好,我們應(yīng)當(dāng)注意一些方面,應(yīng)該去選擇一個(gè)不錯(cuò)的正則化參數(shù)λ 。當(dāng)我們以后講到多重選擇時(shí)我們將討論一種方法來自動(dòng)選擇正則化參數(shù)λ,為了使用正則化,接下來我們將把這些概念應(yīng)用到到線性回歸和邏輯回歸中去,那么我們就可以讓他們避免過度擬合了。
5.正則化線性回歸
之前我們已經(jīng)介紹過,回歸的代價(jià)函數(shù)如下:對于線性回歸(的求解),我們之前運(yùn)用了兩種學(xué)習(xí)算法,一種基于梯度下降,一種基于正規(guī)方程
5.1 方法一:梯度下降
5.2 方法二:正則方程
現(xiàn)在考慮 M(即樣本量), 比 N(即特征的數(shù)量)小或等于N。
如果只有較少的樣本,導(dǎo)致特征數(shù)量大于樣本數(shù)量,那么矩陣XTX將是不可逆矩陣或奇異矩陣,或者說這個(gè)矩陣是退化(degenerate)的,那么我們就沒有辦法使用正規(guī)方程來求出 θ。
幸運(yùn)的是,正規(guī)化也為我們解決了這個(gè)問題,具體的說只要正則參數(shù)是嚴(yán)格大于零,實(shí)際上可以證明如下矩陣:
將是可逆的。因此,使用正則還可以照顧任何 XTX 不可逆的問題。
所以,即使在一個(gè)相對較小的訓(xùn)練集里有很多特征。這應(yīng)該可以讓你在很多問題上更好的運(yùn)用線性回歸。
6.正則化Logistic回歸
Regularized Logistic Regression 實(shí)際上與 Regularized Linear Regression 是十分相似的。如果在高級優(yōu)化算法中,使用正則化技術(shù)的話,那么對于這類算法我們需要自己定義costFunction。
這個(gè)我們自定義的 costFunction 的輸入為向量θ,返回值有兩項(xiàng),分別是代價(jià)函數(shù)jVal以及梯度gradient。
總之我們需要的就是這個(gè)自定義函數(shù)costFunction,針對Octave而言,我們可以將這個(gè)函數(shù)作為參數(shù)傳入到 fminunc 系統(tǒng)函數(shù)中(fminunc 用來求函數(shù)的最小值,將@costFunction作為參數(shù)代進(jìn)去,注意 @costFunction 類似于C語言中的函數(shù)指針),fminunc返回的是函數(shù) costFunction 在無約束條件下的最小值,即我們提供的代價(jià)函數(shù) jVal 的最小值,當(dāng)然也會返回向量 θ 的解。
上述方法顯然對正則化邏輯回歸是適用的。
總結(jié)
以上是生活随笔為你收集整理的新型机器学习算法:正则化理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【飞秋】ASP.NET 之 常用类、方法
- 下一篇: 飞鸽传书(http://www.free