科普一下機器學習熱門概念

語言: CN / TW / HK

偏差與方差、欠擬合與過擬合

機器學習日常:不是在建模,就是在建模的路上。

而在建模過程中,又能聽到煉丹愛好者時而唸唸有詞“怎麼又過擬合了?”,時而自我安慰“找到偏差和方差的平衡點是成功的訣竅”。

所以為了能讓非專業者也能愉快地玩(zhuang)耍(bi),今天就來科普一下機器學習的幾個常見概念。

泛化

如何判別一個每天都刷題的高中班級的成績怎麼樣呢?

拉去考一場。

那怎麼判斷一個機器學習領域的新演算法到底棒不棒呢?

去新資料裡溜一圈。

這種對於訓練集以外的資料也能進行良好的判別,或得到合適輸出的能力,就稱為機器學習模型的 泛化 (generalization)能力。

並且,說一個模型泛化能力弱,那也是有很多種弱法的。

過擬合與欠擬合

有些模型,直接死在提取資料特徵這一步。

訓練集上就沒有完全擬合數據,實際樣本中的表現同樣誤差很大。

類似一個高中生每天都拿著五三刷,但是始終找不到做題規律,模擬題做得拉跨,考試就更不用說。

這種在訓練集和測試集(實際樣本)中都表現不好的情況,就叫做欠擬合(Underfitting)。

這通常是因為模型複雜度低引起的(就是菜得很實在)。

而有些模型在訓練時表現良好:

但一到實戰就撲街。

這種在訓練集上表現良好,但在測試集上表現很差的情況,就叫做過擬合(Overfitting)。

訓練集質量不高就可能導致過擬合,比如樣本不足,或者訓練資料中的噪聲(干擾資料)過多。

也有可能因為模型複雜度高於實際問題,只是死記硬背下了訓練資料的資訊,但完全無法推廣到沒見過的新資料上。

不管菜到底有幾種方式,對於一個機器模型來說,總歸是在實際應用裡表現不好,發生了泛化誤差(Generalization Error)。

而這種誤差,可以再次細化為兩個方面:

誤差(Error) = 偏差(Bias) + 方差(Variance)

偏差與方差

在機器學習領域,偏差(bias)是指模型的預測值相對於真實結果的 偏離程度

△其中f(x)為預測函式,y為樣本資料真實值

而方差(variance)與真實值沒有關係,只描述通過模型得到的預測值之間的 分佈情況

對於一個模型來說,偏差反映模型本身的精確度,而方差則衡量模型的穩定性。

如果模型過於簡單且引數很少,那麼它可能具有高偏差和低方差的特徵,也就會造成欠擬合。

而如果模型複雜而具有大量引數,那麼它將具有高方差和低偏差的特徵,造成過擬合。

看上去,一個好的機器模型就是要同時追求更低的偏差和方差。

但在實際應用中,偏差和方差往往不可兼得。

偏差與方差的權衡

先來看這兩個模型:

右邊的模型明顯比左邊要複雜很多,也因此它的偏差更低,方差更高,與左邊的模型相反。

這種偏差與方差之間的衝突就是偏差-方差窘境(Bias- Variance dilemma):

在改進演算法時,要減少偏差就會增大方差,反之亦然。

因此,我們需要找到一個合適的平衡點,既不會因為高偏差而造成欠擬合,也不會因為高方差而造成過擬合。

這種偏差與方差之間的權衡(bias and variance trade-off),實際上也就是模型複雜度的權衡。

為什麼要提出這些概念?

簡單來說,為了讓計算機也學會人類的 概括 能力。

比如,如果我們要通過某地房屋面積與房價之間的關係,進而幫助房屋售賣者選取更合適的售價,那麼下面哪個函式最好呢?

△紅色為事先給定的樣本資料

第一個明顯欠擬合。都沒有從給定的資料中找到一般規律,更不用說讓函式去預測新房價面積可能對應的售價了。

第三個就是過擬合,函式引數過多,想要抓住所變化,反而導致模型的通用性下降,預測效果大打折扣。

而第二個函式基本擬合了樣本資料,形成了一般規律,也保證了對新資料的預測能力。

能從海量資料中找到一般規律,這就是一個模型的泛化能力。

模型的泛化能力越高,通用性也就越強,這樣能完成的任務範圍也就越廣。

但就算是ANN(人工神經網路)這樣優秀的機器學習模型,目前也還是受限於偏差與方差的權衡。

演算法工程師們提出了各種方法,如正則化(Regularization)、套袋法(Bagging)、貝葉斯法(Bayesian),使模型能夠更好地概括舊資料,預測新資料。

並期望著最終能構建一個機器學習模型,使其能力無限逼近目前最強的通用模型——人類大腦。

版權所有,未經授權不得以任何形式轉載及使用,違者必究。

分享到:
「其他文章」