過擬合

上圖展示了不同線性回歸模型對(duì)訓(xùn)練集樣本的擬合情況,可以發(fā)現(xiàn),第一個(gè)模型是一條直線,不能很好的擬合訓(xùn)練集,這就是欠擬合(Underfitting)或者說模型是高偏差的(high bias)。第三個(gè)模型是一個(gè)高階多項(xiàng)式,雖然對(duì)訓(xùn)練集擬合的很好,但它的特征過多,如果沒有足夠的數(shù)據(jù)約束,就不會(huì)有良好的泛化能力(泛化能力是指一個(gè)模型應(yīng)用到新樣本的能力,比如這里的新樣本是指沒有出現(xiàn)在訓(xùn)練集的樣本),也就不能對(duì)新樣本做出正確的預(yù)測(cè),這就是過度擬合(Overfitting)或者說模型是高方差的(high varience)。第二個(gè)則是一個(gè)理想的模型。
過擬合問題會(huì)在特征過多的模型中出現(xiàn), 雖然訓(xùn)練出的假設(shè)函數(shù)能很好的擬合訓(xùn)練數(shù)據(jù),通過代價(jià)函數(shù)也能夠得到很小的損失,但因?yàn)樗Х桨儆?jì)地?cái)M合訓(xùn)練集,所以通常會(huì)是一個(gè)非常復(fù)雜的曲線,導(dǎo)致無法泛化到新樣本中,從而無法對(duì)新樣本做出正確的預(yù)測(cè)。不僅是線性回歸,其他機(jī)器學(xué)習(xí)算法也都有可能面臨過擬合問題,下圖展示了邏輯回歸模型中過擬合的情況:

通常來說過擬合的解決方法包括:
- 減少特征的個(gè)數(shù)
- 使用正則化,減少參數(shù)的權(quán)重
- 增加數(shù)據(jù)量
正則化

通常過擬合是由于模型特征過多,過于復(fù)雜引起的,所以我們可以通過降低特征的權(quán)重來簡(jiǎn)化模型。我們嘗試將圖中較為復(fù)雜的模型(藍(lán)色): 中的
和
的參數(shù)
和
調(diào)小來簡(jiǎn)化模型,如果使
和
的參數(shù)調(diào)整的非常小,甚至接近于 0,那么就相當(dāng)于在原模型中去掉了這兩個(gè)高階項(xiàng),這樣模型就被簡(jiǎn)化為了二次函數(shù)(紫色):
,從而可以避免過擬合。然而實(shí)際情況中,我們并不知道預(yù)測(cè)結(jié)果與哪個(gè)特征的相關(guān)度低,所以不知道應(yīng)該將哪個(gè)特征的參數(shù)變小,那么我們可以嘗試修改代價(jià)函數(shù),將所有參數(shù)都變小,如下所示:
注意參數(shù) 中的
是從 1 開始的,意味著我們只對(duì)特征的參數(shù)進(jìn)行縮小,不對(duì)偏差項(xiàng)
進(jìn)行縮小,實(shí)際上并沒有什么差別。上式在原有代價(jià)函數(shù)的基礎(chǔ)上加入了正則化項(xiàng)(紅色),正則化參數(shù)
相當(dāng)于在兩個(gè)不同目標(biāo)之間做取舍,一方面是最小化損失值,也就是代價(jià)函數(shù)的前半部分,另一方面是最小化參數(shù),也就是代價(jià)函數(shù)的后半部分。也就是說
要在更好地?cái)M合訓(xùn)練集和控制參數(shù)更小,從而使模型簡(jiǎn)單,避免過擬合之間保持平衡。所以需要選擇合適的
參數(shù),如果過小則起不到簡(jiǎn)化模型的作用,仍然具有很高的方差及過擬合問題,如果過大的話則不能很好地?cái)M合訓(xùn)練數(shù)據(jù),具有很高的偏差,比如將
設(shè)為
,那么所有特征接近于 0,相當(dāng)于模型變成了一條直線:
,如下圖所示:

線性回歸的正則化
梯度下降
將線性回歸的代價(jià)函數(shù)加入正則化項(xiàng):
優(yōu)化目標(biāo)為最小化代價(jià)函數(shù) 的參數(shù)
:
對(duì) 求關(guān)于
的偏導(dǎo),使用梯度下降公式重復(fù)迭代更新參數(shù),注意
和
單獨(dú)更新:
關(guān)于 的計(jì)算公式可以簡(jiǎn)化為:
通常 ,后半部分則和原有梯度下降一樣,可以理解為正則化項(xiàng)只是在原有梯度下降基礎(chǔ)上,讓參數(shù)
乘以一個(gè)小于 1 的數(shù)(比如 0.99),從而使得參數(shù)值更小。
正規(guī)方程
我們可以通過正規(guī)方程直接求得最小化代價(jià)函數(shù) 的參數(shù)
:
其中 是
維的設(shè)計(jì)矩陣,每一行代表一個(gè)單獨(dú)的訓(xùn)練樣本。
是
維的向量,包含訓(xùn)練集所有的標(biāo)簽。正則化項(xiàng)是一個(gè)
維的矩陣,對(duì)角線第二至最后一個(gè)元素都為 1,其他元素都為 0。比如
,那么正則化項(xiàng)矩陣為:
將正規(guī)方程加入正則化項(xiàng):
正則化項(xiàng)矩陣實(shí)際上是對(duì)代價(jià)函數(shù)關(guān)于參數(shù)的求導(dǎo),我們知道如果樣本數(shù) 小于特征數(shù)
,那么矩陣
是不可逆的,或者叫做奇異矩陣,雖然用偽逆函數(shù)(
Octave:pinv)可以得到從數(shù)字上看似有意義的解,但不會(huì)得到很好的假設(shè)模型。不過,在加入正則化項(xiàng)后,只要正則化參數(shù) 大于 0,即可保證括號(hào)內(nèi)的矩陣一定是可逆的,所以正則化解決了不可逆問題,也就可以解決過擬合問題(樣本過少,特征過多)。
邏輯回歸的正則化
通常邏輯回歸模型中如果包含大量的多項(xiàng)式特征,會(huì)容易導(dǎo)致過擬合問題,如下圖所示:

假設(shè)函數(shù)為:
代價(jià)函數(shù)為:
將代價(jià)函數(shù)加入正則化項(xiàng):
這樣能減小參數(shù)的權(quán)重,即使有過多的參數(shù)也能得到平滑的決策邊界,從而避免過擬合。此時(shí),我們需要單獨(dú)更新 和
,和線性回歸梯度下降類似,將
的更新加入正則化,分別迭代更新: