Solving the Problem of Overfitting
Last updated
Was this helpful?
Last updated
Was this helpful?
當我們要尋找 Hypothesis 來 fit 我們的 training set 時
可以遇到三種情況
Underfit (High bias)
Hypothesis 不是很好的 fit 這些 example data
Just right
Hypothesis 很好的 fit 這些 example data
Overfit (High variance)
Hypothesis 太過 "鑽牛角尖" 於每一個 training set
我們為 Overfitting 下一個定義 :
太多的 features,讓求得的 Hypothesis 在 training data 得到不錯分數 (cost function J 接近 0)
但完全沒辦法讓 test set 或是真實資料套入使用
同樣的事情可以發生在 logistic regression :
會造成 overfitting 的原因就是因為 features 使用太多了
但又不知道哪些 features 可以完全消除掉 (可能對 training 有益)
有兩種方法可以解決 :
減少 features 數量
手動選擇不要的 features
使用 model selection algorithm (later in other course)
Regularization
留下全部 features,但降低 theta's 的 magnitude
這方法就可以不用擔心會不會刪掉對 training 有益的 features
若我們想降低多餘 (可能) 的 features 所帶來的 overfitting 影響
我們只要將這些 features 在 cost function 的代價提高,讓他們對 hypothesis 的影響下降就好
我們將他的 Cost function 調整為
讓兩者對 hypothesis 的影響降低
1000 可以是其他較大數值,但不能夠過大
右上的紫線就是在 implement regularization 過後的新 hypothesis function
得到了新的公式 :
只是多了後面一個式子,就可以讓 overfitting 的影響減少
變回 underfit 的狀況
現在我們將 regularization 的公式套入 linear regression 和 logistic regression
先從 linear regression 的 gradient descent 開始
而後面一項跟原本的 gradient descent 一模一樣
要將 regularization 加入 normal equation 中
將 regularization 套入 normal equation 也有另一個好處
之前說過若 features 大於 training examples 數量太多
我們一樣來將 regularization 套用在 logistic regression
讓 overfitting 的藍線變為正常的紫線 hypothesis
一樣在 logistic cost function
的最後加上 regularization 的式子得到 :
所以 regularization 的 summation 從 1 開始 !
接著套進 gradient descent
其實跟 linear regression 一樣
在 Octave 實作 logistic regression 的 advanced optimization 時
這些 code 又該怎麼跟 regularization 一起實作 :
以 為例
新的 cost function 就可以在不去除 跟 的情況
不然會使得 跟 直接不見
所以除了 不用變更以外
我們將 regularization 套用到所有的 (因為我們也不知道到底是哪一個 feature 造成 overfitting)
為 regularization parameter
將會作為 對於整個 cost function 的影響指標
但要小心,若 非常大的話
會讓每個 都變為 0
我們會改變所有 但是 要維持原本的樣子
我們發現第二行 的公式可以在簡化成這樣 :
可以發現 永遠都會是小於 1 的正數
所以負號的前一項能表示每回合的 會固定變小
只需簡單加入 即可,其中 為一個像是 identity matrix 但第一項為 0 的特殊矩陣
這個矩陣為一個 的矩陣
有一個 0 的原因就是不想要變動到 的值
則 有可能會為 non-invertible
但現在有了
就一定是 invertible 的矩陣了 !
注意我們一樣不想變動到
只是