1. 程式人生 > >機器學習—過擬合overfitting

機器學習—過擬合overfitting

面對各個網友的回答,突然發現自己對於過擬合的概念似乎理解的不是很透徹,或者說之前就沒有完全理解透。

其中有個人這麼說“樣本少feature多才overfitting”

這裡寫圖片描述

也有人提到

這裡寫圖片描述

看紅框標註部分,也就是說樣本多就不會發生過擬合麼。

先不管知乎這個問題了,為了搞清過擬合的概念,再次跑到wikipedia去搜尋答案。

下面是wikipedia對於overfitting的解釋

Overfitting

在統計學和機器學習中,overfitting一般在描述統計學模型隨機誤差或噪音時用到。它通常發生在模型過於複雜的情況下,如引數過多等。overfitting會使得模型的預測效能變弱,並且增加資料的波動性。

發生overfitting是因為評判訓練模型的標準不適用於作為評判該模型好壞的標準,模型通常會增強模型在訓練模型的預測效能。但是模型的效能並不是由模型在訓練集的表現好壞而決定,它是由模型在未知資料集上的表現確定的。當模型開始“memorize”訓練資料而不是從訓練資料中“learning”時,overfitting就出現了。比如,如果模型的parameters大於或等於觀測值的個數,這種模型會顯得過於簡單,雖然模型在訓練時的效果可以表現的很完美,基本上記住了資料的全部特點,但這種模型在未知資料的表現能力會大減折扣,因為簡單的模型泛化能力通常都是很弱的。


這裡寫圖片描述

上面這個圖,是通過線性函式和多項式函式來擬合這些資料點,顯然多項式函式擬合效果很完美,包含了所有的點,而線性函式丟失了大部分點。但實際上,線性函式有一個很好的泛化能力,如果用這些點來做一個迴歸線,多項式函式過擬合的情況更糟糕。

過擬合不僅和引數的個數以及資料有關,也和資料形狀模型結構的一致性有關。

為了避免過擬合,有必要使用一些額外的技術(如交叉驗證、正則化、early stopping、貝斯資訊量準則、赤池資訊量準則或model comparison),以指出何時會有更多訓練而沒有導致更好的一般化。

Overfitting的概念在機器學習中很重要。通常一個學習演算法是藉由訓練樣本來訓練的,在訓練時會伴隨著訓練誤差。當把該模型用到未知資料的測試時,就會相應的帶來一個validation error。下面通過訓練誤差和驗證誤差來詳細分析一下overfitting。如下圖:


這裡寫圖片描述

在上圖總,藍色表示訓練誤差training error,紅色表示validation error。當訓練誤差達到中間的那條垂直線的點時,模型應該是最優的,如果繼續減少模型的訓練誤差,這時就會發生過擬合。

其實你可以這樣來理解overfitting:資料集中資訊分為兩部分,一部分是和預測未來資料有關的資料,另一部分是無關的,兩者地位是平等的。用來作為預測的評判標準越不精確,表明噪聲資料就越多,需要忽略掉的資料也就越多,而關鍵就是究竟那一部分應該忽略掉。所以我們把一個學習演算法對噪聲的削減能力就叫做它的魯棒性。我們需要的就是魯棒性很強的學習演算法

舉一個簡單的例子,一個零售購物的資料庫包括購買項、購買人、日期、和購買時間。根據這個資料可以很容易的建立一個模型,並且在訓練集上的擬合效果也會很好,通過使用日期、購買時間來預測其它屬性列的值,但是這個模型對於新資料的泛化能力很弱,因為這些過去的資料不會再次發生。

這樣分析之後,可以看出,之前在知乎看到的“資料少特徵多就發生過擬合”似乎有點道理。

相對於過擬合是指,使用過多引數,以致太適應當前資料而非一般情況,另一種常見的現象是使用太少引數,以致於不適應當前的訓練資料,這則稱為欠擬合(英語:underfitting,或稱:擬合不足)現象。

References