天天看點

過度拟合(overfitting)

我們之前解決過一個理論問題:機器學習能不能起作用?現在來解決另一個理論問題:過度拟合。

正如之前我們看到的,很多時候我們必須進行nonlinear transform。但是我們又無法确定Q的值。Q過小,那麼Ein會很大;Q過大,就會出現過度拟合問題。如下圖所示:

過度拟合(overfitting)

那麼overfitting具體受什麼因素影響呢?

現在我們又兩個例子:

過度拟合(overfitting)

第一個例子的資料來源是:一個10-th的目标函數+noise;第二個例子的資料來源是:一個50-th的目标函數。現在我們用2-th函數(H2)和10-th函數(H10)分别對兩個例子進行拟合。我們來預測一下結果。

我認為:對于這兩個例子來說,H10效果會更好。因為無論是對于第一個例子還是第二個例子,從階數上來說,H10都不存在overfitting問題。

下面是真正的結果:

過度拟合(overfitting)

我們可以看出,對于兩個例子,都是H2效果最好。

通過這個違反直覺的例子,我們可以一窺overfitting的端倪。

過度拟合(overfitting)

通過這個學習曲線,我們可以看出,H10可以結果很好,但是是建立在N足夠大的基礎上;如果N很小的話,還是H2的結果好!

補充一點:對于第二個例子,明明沒有noise,為什麼H10表現的不如H2呢?

因為50-th的複雜度太高,H10和H2都無法準确地拟合。此時目标函數的複雜度對于H2和H10來說,就相當于noise。

我們現在認為資料點數N、noise、還有目标函數的complexity level(階數)Q都會影響overfitting。

下面進行詳細說明。

過度拟合(overfitting)

從這個目标函數中,産生資料,然後用H2和H10去拟合。什麼時候我們說會發生過度拟合呢?當使用H10得到的Eout大于使用H2得到的Eout,則必然發生了過度拟合,也即:overfit measure:Eout(g10)-Eout(g2)。

過度拟合(overfitting)

對于第一幅圖,Q=20。我們可以很容易看到:1)N越小,noise越大,越容易發生過度拟合。2)當N很小的時候(此處為N<80),必然會發生過度拟合;3)當N很大,noise越大,越容易發生過度拟合。  N起到決定性作用。

對于第二幅圖,noise固定。我們可以很容易看到:1)N約小,Q越大,越容易發生過度拟合;2)當N很小的時候,幾乎必然會發生過度拟合;

第一幅圖和第二幅圖有所不同:1)對于左下方那一塊紅色區域,因為目标函數階數足夠小的時候,肯定會發生過度拟合。然而為什麼随着N增加,反而不會有過度拟合了呢?2)當階數夠大,N很小的時候,就會發生過度拟合,但是一旦N足夠大(此處N>100),就不會發生過度拟合了;

我們把noise成為stochastic noise,把Q成為deterministic noise。

過度拟合(overfitting)

overfitting的幾個影響因素,N(最重要),noise,Q。

如何解決overfitting問題呢?

我們把overfitting比作出了一起車禍,出車禍的原因可能是:開的太快了、路上有很多坑、路上的辨別太少。與此對應的overfitting原因是:dvc太大(Q太大)、noise太多、資料量太少。

過度拟合(overfitting)

怎麼避免“這起車禍”呢?可以開得慢一點,避開路面上的坑坑窪窪、或者是多擷取一些路面辨別。亦或者踩刹車、多看看儀表盤。

開的慢一點:從simple model開始;

避開路面坑坑窪窪:data cleaning:修正有noise的資料;data pruning:删除有noise的資料。

多擷取路面辨別:擷取更多的資料(有可能無法實作);或者采用Data Hinting技術;

踩刹車:regularization;

看儀表盤:validation。

後兩個之後會詳細講述。

過度拟合(overfitting)

轉載于:https://www.cnblogs.com/wangyanphp/p/5469954.html

繼續閱讀