哲哲的ML筆記(十四:正則化)

過擬合的表現

如果我們有非常多的特徵,我們通過學習得到的假設可能能夠非常好地適應訓練集(代價函數可能幾乎爲0),但是可能會不能推廣到新的數據



第一個模型是一個線性模型,欠擬合,不能很好地適應我們的訓練集;第三個模型是一個四次方的模型,過於強調擬合原始數據,而丟失了算法的本質:預測新數據。我們可以看出,若給出一個新的值使之預測,它將表現的很差,是過擬合,雖然能非常好地適應我們的訓練集但在新輸入變量進行預測時可能會效果不好;而中間的模型似乎最合適

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


過擬合定義:如果我們有非常多的特徵,我們通過學習得到的假設可能能夠非常好地適應訓練集(代價函數可能幾乎爲0),但是可能會不能推廣到新的數據

處理過擬合的方法有兩個:

  1. 丟棄一些不能幫助我們正確預測的特徵。可以是手工選擇保留哪些特徵,或者使用一些模型選擇的算法來幫忙(例如PCA,主成分分析)
  2. 正則化。 保留所有的特徵,但是減少參數的大小(magnitude)

正則化

正則化的基本方法:第一張圖中如果我們的模型是:h_\theta(x)=\theta_0+\theta_1x+\theta_2x^2+\theta_3x^3+\theta_4x^4 正是那些高次項導致了過擬合的產生,所以如果我們能讓這些高次項的係數接近於0的話,我們就能很好的擬合了。 所以我們要做的就是在一定程度上減小這些參數的值。
具體方法是修改代價函數,在其中\theta_3\theta_4 設置一點懲罰。這樣做的話,我們在嘗試最小化代價時也需要將這個懲罰納入考慮中,並最終導致選擇較小一些的\theta_3\theta_4
\mathop{\arg\min}\limits_{\theta}[\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{i})-y^{i})+1000\theta_3+1000\theta_4]
根據慣例,我們不對\theta_0 進行懲罰.正則項:\lambda \sum_{j=1}^n\theta_j,正則參數:\lambda

\mathop{\arg\min}\limits_{\theta}[\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{i})-y^{i})+\lambda \sum_{j=1}^n\theta_j]
經過正則化處理的模型與原模型的可能對比如下圖所示:

如果選擇的正則化參數\lambda 過大,則會把所有的參數都最小化了,假設函數會趨近於一條直線

線性迴歸中的正則化

對於線性迴歸的求解,我們之前推導了兩種學習算法:一種基於梯度下降,一種基於正規方程
正則化線性迴歸的代價函數爲:
J(\theta)=\frac{1}{2m}[\sum_{i=1}^m(h_\theta(x^{i})-y^{i})+\lambda \sum_{j=1}^n\theta^2_j]
如果我們要使用梯度下降法令這個代價函數最小化,因爲我們未對進行正則化,所以梯度下降算法將分兩種情形:

\theta_j=\theta_j(1-\frac{\lambda}{m})-\frac{\alpha}{m}\sum_{i=1}^m(h_\theta(x^{i})-y^{i})x^{i}_j,可以看出,正則化線性迴歸的梯度下降算法的變化在於,每次都在原有算法更新規則的基礎上令\theta值縮放後減少了一個額外的值。
同樣也可以利用正規方程來求解正則化線性迴歸模型


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

邏輯迴歸中的正則化


邏輯迴歸中的代價函數是
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})) ]
也給代價函數增加一個正則化的表達式
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^{2}_j再不斷進行梯度下降,這一步看起來和線性迴歸中的梯度下降沒什麼區別,但是h_\theta(x)=g(\theta^TX)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章