擬合問題:
還是來看預(yù)測房價的這個例子手形,我們先對該數(shù)據(jù)做線性回歸,也就是左邊第一張圖悯恍。如果這么做库糠,我們可以獲得擬合數(shù)據(jù)的這樣一條直線,但是涮毫,實際上這并不是一個很好的模型曼玩。我們看看這些數(shù)據(jù),很明顯窒百,隨著房子面積增大黍判,住房價格的變化趨于穩(wěn)定或者說越往右越平緩。因此線性回歸并沒有很好擬合訓(xùn)練數(shù)據(jù)篙梢。
我們把此類情況稱為欠擬合(underfitting)顷帖,或者叫作叫做高偏差(bias)。
第二幅圖渤滞,我們在中間加入一個二次項贬墩,也就是說對于這幅數(shù)據(jù)我們用二次函數(shù)去擬合。自然妄呕,可以擬合出一條曲線陶舞,事實也證明這個擬合效果很好。
另一個極端情況是绪励,如果在第三幅圖中對于該數(shù)據(jù)集用一個四次多項式來擬合肿孵。因此在這里我們有五個參數(shù)θ0到θ4,這樣我們同樣可以擬合一條曲線疏魏,通過我們的五個訓(xùn)練樣本停做,我們可以得到如右圖的一條曲線。
一方面大莫,我們似乎對訓(xùn)練數(shù)據(jù)做了一個很好的擬合蛉腌,因為這條曲線通過了所有的訓(xùn)練實例。但是只厘,這實際上是一條很扭曲的曲線烙丛,它不停上下波動。因此羔味,事實上我們并不認(rèn)為它是一個預(yù)測房價的好模型河咽。
所以,我們把這類情況叫做過擬合(overfitting)介评,也叫高方差(variance)库北。
過度擬合的問題通常發(fā)生在變量(特征)過多的時候爬舰。這種情況下訓(xùn)練出的方程總是能很好的擬合訓(xùn)練數(shù)據(jù),也就是說寒瓦,我們的代價函數(shù)可能非常接近于 0 或者就為 0情屹。
同時如果我們沒有足夠的數(shù)據(jù)集(訓(xùn)練集)去約束這個變量過多的模型,那么就會發(fā)生過擬合杂腰。
但是垃你,這樣的曲線千方百計的去擬合訓(xùn)練數(shù)據(jù),這樣會導(dǎo)致它無法泛化到新的數(shù)據(jù)樣本中喂很,以至于無法預(yù)測新樣本價格惜颇。在這里,術(shù)語"泛化"指的是一個假設(shè)模型能夠應(yīng)用到新樣本的能力少辣。
之前凌摄,我們看到了線性回歸情況下的過擬合。類似的情況也適用于邏輯回歸漓帅。
解決方法:
方法一:盡量減少選取變量的數(shù)量
具體而言锨亏,我們可以人工檢查每一項變量,并以此來確定哪些變量更為重要忙干,然后器予,保留那些更為重要的特征變量。至于捐迫,哪些變量應(yīng)該舍棄乾翔,我們以后在討論,這會涉及到模型選擇算法施戴,這種算法是可以自動選擇采用哪些特征變量反浓,自動舍棄不需要的變量。這類做法非常有效暇韧,但是其缺點是當(dāng)你舍棄一部分特征變量時勾习,你也舍棄了問題中的一些信息浓瞪。例如懈玻,也許所有的特征變量對于預(yù)測房價都是有用的,我們實際上并不想舍棄一些信息或者說舍棄這些特征變量乾颁。
方法二:正則化
正則化中我們將保留所有的特征變量涂乌,但是會減小特征變量的數(shù)量級(參數(shù)數(shù)值的大小θ(j))。
這個方法非常有效英岭,當(dāng)我們有很多特征變量時湾盒,其中每一個變量都能對預(yù)測產(chǎn)生一點影響。正如我們在房價預(yù)測的例子中看到的那樣诅妹,我們可以有很多特征變量罚勾,其中每一個變量都是有用的毅人,因此我們不希望把它們刪掉,這就導(dǎo)致了正則化概念的發(fā)生尖殃。
接下來我們會討論怎樣應(yīng)用正則化和什么叫做正則化均值丈莺,然后將開始討論怎樣使用正則化來使學(xué)習(xí)算法正常工作,并避免過擬合送丰。
代價函數(shù):
在前面的介紹中缔俄,我們看到了如果用一個二次函數(shù)來擬合這些數(shù)據(jù),那么它給了我們一個對數(shù)據(jù)很好的擬合器躏。然而俐载,如果我們用一個更高次的多項式去擬合,最終我們可能會得到一個曲線登失,它能很好地擬合訓(xùn)練集遏佣,但卻并不是一個好的結(jié)果,因為它過度擬合了數(shù)據(jù)揽浙,因此贼急,一般性并不是很好。
讓我們考慮下面的假設(shè)捏萍,我們想要加上懲罰項太抓,從而使參數(shù)足夠的小。
這里我的意思就是令杈,上圖的式子是我們的優(yōu)化目標(biāo)走敌,也就是說我們需要盡量減少代價函數(shù)的均方誤差。
對于這個函數(shù)我們對它添加一些項逗噩,加上 1000 乘以 θ3?的平方掉丽,再加上 1000 乘以 θ4?的平方,
1000 只是我隨便寫的某個較大的數(shù)字而已∫煅悖現(xiàn)在捶障,如果我們要最小化這個函數(shù),那么為了最小化這個新的代價函數(shù)纲刀,我們要讓 θ3?和 θ4?盡可能小项炼。因為,如果你在原有代價函數(shù)的基礎(chǔ)上加上 1000 乘以 θ3?這一項 示绊,那么這個新的代價函數(shù)將變得很大锭部,所以,當(dāng)我們最小化這個新的代價函數(shù)時面褐, 我們將使 θ3?的值接近于 0拌禾,同樣 θ4?的值也接近于 0,就像我們忽略了這兩個值一樣展哭。如果我們做到這一點( θ3?和 θ4?接近 0 )湃窍,那么我們將得到一個近似的二次函數(shù)闻蛀。
這里給出了正規(guī)化背后的思路。這種思路就是您市,如果我們的參數(shù)值對應(yīng)一個較小值的話(參數(shù)值比較醒堋),那么往往我們會得到一個形式更簡單的假設(shè)墨坚。
在我們上面的例子中秧饮,我們懲罰的只是 θ3?和 θ4 ,使這兩個值均接近于零泽篮,從而我們得到了一個更簡單的假設(shè)盗尸,實際上這個假設(shè)大抵上是一個二次函數(shù)。
更一般地說帽撑,如果我們像懲罰 θ3?和 θ4?這樣懲罰其它參數(shù)泼各,那么我們往往可以得到一個相對較為簡單的假設(shè)。
實際上亏拉,這些參數(shù)的值越小扣蜻,通常對應(yīng)于越光滑的函數(shù),也就是更加簡單的函數(shù)及塘。因此 就不易發(fā)生過擬合的問題莽使。
在正則化里,我們要做的事情笙僚,就是把減小我們的代價函數(shù)(例子中是線性回歸的代價函數(shù))所有的參數(shù)值芳肌,因為我們并不知道是哪一個或哪幾個要去縮小。
因此肋层,我們需要修改代價函數(shù)亿笤,在這后面添加一項,就像我們在方括號里的這項栋猖。當(dāng)我們添加一個額外的正則化項的時候净薛,我們收縮了每個參數(shù)。
順便說一下蒲拉,按照慣例肃拜,我們沒有去懲罰 θ0,因此 θ0?的值是大的全陨。這就是一個約定從 1 到 n 的求和爆班,而不是從 0 到 n 的求和。但其實在實踐中這只會有非常小的差異辱姨,無論你是否包括這 θ0?這項。但是按照慣例戚嗅,通常情況下我們還是只從 θ1?到 θn?進(jìn)行正則化雨涛。
下面的這項就是一個正則化項:
并且 λ 在這里我們稱做正則化參數(shù)枢舶。
λ 要做的就是控制在兩個不同的目標(biāo)中的平衡關(guān)系阔逼。
第一個目標(biāo)就是我們想要訓(xùn)練膏孟,使假設(shè)更好地擬合訓(xùn)練數(shù)據(jù)。
而第二個目標(biāo)是我們想要保持參數(shù)值較小清钥。
而 λ 這個正則化參數(shù)需要控制的是這兩者之間的平衡蚯根,即平衡擬合訓(xùn)練的目標(biāo)和保持參數(shù)值較小的目標(biāo)后众。從而來保持假設(shè)的形式相對簡單,來避免過度的擬合颅拦。
在正則化線性回歸中蒂誉,如果正則化參數(shù)值 λ 被設(shè)定為非常大,那么將會發(fā)生什么呢距帅?
我們將會非常大地懲罰參數(shù)θ1?θ2?θ3?θ4?… 也就是說右锨,我們最終懲罰θ1?θ2?θ3?θ4?…? 在一個非常大的程度,那么我們會使所有這些參數(shù)接近于零碌秸。
就是我們的假設(shè)中相當(dāng)于去掉了這些項绍移,并且使我們只是留下了一個簡單的假設(shè),這個假設(shè)只能表明房屋價格等于 θ0?的值讥电,那就是類似于擬合了一條水平直線蹂窖,對于數(shù)據(jù)來說這就是一個欠擬合 (underfitting)。這種情況下這一假設(shè)它是條失敗的直線恩敌,對于訓(xùn)練集來說這只是一條平滑直線恼策,它沒有任何趨勢,它不會去趨向大部分訓(xùn)練樣本的任何值潮剪。
這句話的另??一種方式來表達(dá)就是這種假設(shè)有過于強(qiáng)烈的"偏見" 或者過高的偏差 (bais)涣楷,認(rèn)為預(yù)測的價格只是等于 θ0?。對于數(shù)據(jù)來說這只是一條水平線抗碰。
因此狮斗,為了使正則化運(yùn)作良好,我們應(yīng)當(dāng)注意一些方面弧蝇,應(yīng)該去選擇一個不錯的正則化參數(shù) λ 碳褒。當(dāng)我們以后講到多重選擇時我們將討論一種方法來自動選擇正則化參數(shù) λ? ,為了使用正則化看疗,接下來我們將把這些概念應(yīng)用到到線性回歸和邏輯回歸中去沙峻,那么我們就可以讓他們避免過度擬合了。
線性回歸求解方法:
梯度下降两芳,如下:
正規(guī)方程摔寨,如下:
通過之前的博文,我們知道如果你只有較少的樣本怖辆,導(dǎo)致特征數(shù)量大于樣本數(shù)量是复,那么矩陣 XTX 將是不可逆矩陣或奇異(singluar)矩陣删顶,或者用另一種說法是這個矩陣是退化(degenerate)的,那么我們就沒有辦法使用正規(guī)方程來求出 θ 淑廊。
幸運(yùn)的是逗余,正規(guī)化也為我們解決了這個問題,具體的說只要正則參數(shù)是嚴(yán)格大于零季惩,實際上录粱,可以證明如下矩陣:
將是可逆的。因此画拾,使用正則還可以照顧任何 XTX 不可逆的問題啥繁。
所以,你現(xiàn)在知道如何實現(xiàn)嶺回歸碾阁,利用它输虱,你就可以避免過度擬合,即使你在一個相對較小的訓(xùn)練集里有很多特征脂凶。這應(yīng)該可以讓你在很多問題上更好的運(yùn)用線性回歸宪睹。
分類問題求解:
Logistic回歸算法同樣存在過擬合問題:
同樣使用梯度下降:
雜合文章,切勿傳播2锨铡Mげ !