機器學習之欠擬合和過擬合(一)

2022-08-17 04:45:09 字數 3211 閱讀 9792

1.欠擬合(underfitting)與過擬合(overfitting)

將中位數隨年齡的變化繪製成散點圖,如圖2:

由圖2中的散點可知,先開始身高隨年齡幾乎成一條直線關係,後來增長率逐漸下降。如果我們採用線性函式取擬合,這顯然是不合理的(線性函式的增長率不會發生變化)。如果我們用乙個多項式函式去擬合,雖然這個多項式可能會很複雜,但是我們總可能找到乙個多項式函式使得該函式完美經過圖中的散點,如圖3:

現在,我們來看一下線性擬合(圖3紅線):年齡大於18歲以後,按照散點圖的趨勢,身高應該逐漸趨於穩定,但是線性擬合的結果是身高隨年齡增長依舊保持很高的增長率。顯然這並不是一種很好的擬合方式,對於這種情況,我們稱之為欠擬合,即高偏差(high bias)。

接下來,我們來看一下「完美的多項式擬合」(圖3藍線):藍線的損失函式為0,在回歸問題中,我們求解引數矩陣的方法就是盡可能地讓損失函式的值最小化。這是否意味著當損失函式為0時,這時我們的學習模型最好呢?並不是這樣子的。在」完美的多項式擬合「當中,我們的假設函式通常情況下會非常複雜,一般會涉及到高次多項式,函式影象會非常扭曲。以五次多項式為例,即便我們的自變數之間的偏差數量級為10,但對應輸出結果的偏差會達到\(10^5\)數量級。圖3的例子可能還不明顯,圖4很好的說明了「完美擬合」的扭曲情況。對於這種為了最小化損失函式,而將假設函式「過度扭曲」的情況,我們稱之為過擬合,即高方差(high variance)。

2.偏差(bias)和方差(variance)

2.1偏差和誤差的概念

偏差(bias),是不同資料集在特定模型上**值的期望與實際值之間的差值。如果平均**值與實際值相差甚遠,則偏差較高。高偏差導致演算法無法正確表示輸入和輸出變數之間的相關關係。當模型具有較高的偏差時,則表示該模型過於簡單,無法捕獲資料的複雜性,因此無法擬合資料。

方差(variance),指的是不同資料集在特定模型上的**值的方差。當模型在訓練後的資料集上表現良好但在未訓練的資料集(例如測試資料集或驗證資料集)上表現不佳時,就會發生方差。 方差反映了**值與實際值之間的分散程度。高方差會導致過度擬合,這表明該演算法對訓練資料中存在的隨機雜訊也進行了建模。當模型具有較高的方差時,該模型將變得非常複雜,並將「完美擬合」訓練集的資料點。 當高方差模型遇到尚未學習的其他資料點時,就無法做出正確的**。

圖5顯示了偏差和誤差,其中藍色點表示我們的**值,紅色點表示我們的真實值。可以看到,偏差越高,**值離真實值越遠;方差越高,**值越分散。

2.2.用數學公式表示偏差和誤差

我們用\(y\)表示我們要**的值(樣本真實值),\(x\)表示我們的自變數。考慮到樣本資料其實是取樣,\(y\)並不是真實值,假設真實模型是\(f\),則有這樣的關係:\(y=f(x)+\epsilon\),其中\(\epsilon\)表示噪音,服從均值為0的正態分佈,即\(\epsilon\sim n(\mu,\sigma_\epsilon)\)。用\(\hat f\)來表示我們的模型(即擬合函式),則我們的**值為\(\hat f(x)\),則在點\(x\)處的平方誤差的期望為:

\[\beginerr(x)& =e\left[(y -\hat f(x))^2\right] = e\left[(\epsilon + f(x) -\hat f(x))^2\right]\\&=e[f(x)^2] + e[\hat f(x)^2] + e(\epsilon^2) -2e[f(x)]e[\hat f(x)]-2e(\epsilon)e[f(x)]-2e(\epsilon)e[\hat f(x)]\\& = f(x)^2+(e[\hat f(x)])^2 + var[\hat f(x)] -2f(x)e[\hat f(x)] + var[\epsilon] + e(\epsilon) \\& = \left(e[\hat(x)]-f(x)\right)^2 + e\left[\left(\hat(x)-e[\hat(x)]\right)^2\right] +\sigma_e^2\\&= \mathrm^2 + \mathrm + \mathrm \end

\]注意:\(f(x),\hat f(x), \epsilon\)三者獨立,且\(f(x)\)不是變數,是固定值。所以\(e[f(x)] = f(x),e[f(x)^2] = f(x)^2\)。

即**誤差的期望值 = **值相對真實值的偏差的平方 + 模型**值的方差 + 噪音的方差 **

上式中的第三項,為不可減少的誤差,是真實模型和樣本值的關係中的雜訊項,任何模型都無法從根本上減少雜訊項。 給定真實模型和無窮大資料進行校準,理論上可以將偏差項和方差項都減少到0。但是,在模型和有限資料不完善的現實情況下,需要在最小化偏差和最小化方差之間進行權衡 。

偏差bias和方差variance--機器學習中的模型選擇(中文)

understanding the bias-variance tradeoff(英文)

3.解決方法

模型的效果通常是:方差小,偏差小 > 方差小,偏差大 > 方差大,偏差小 > 方差大,偏差大。所以,我們儘量減少模型的偏差和方差。如果出現了欠擬合和過擬合的情況,我們應該怎麼解決呢?

對於欠擬合而言,我們有如下解決方案:

增加新的特徵,可以考慮加入進特徵組合、高次特徵,來增大假設空間

採用非線性模型,比如核svm 、決策樹、dnn等模型

boosting,boosting 往往會有較小的 bias,比如 gradient boosting 等

如果已正則化,嘗試減少正則化程度\(\lambda\)

對於過擬合而言,我們有如下解決方案:

交叉檢驗,通過交叉檢驗得到較優的模型引數

特徵選擇,減少特徵數或使用較少的特徵組合,對於按區間離散化的特徵,增大劃分的區間

正則化,常用的有 l1、l2 正則

如果已正則化,嘗試增大正則化程度\(\lambda\)

增加訓練資料可以有限的避免過擬合

bagging,將多個弱學習器bagging 一下效果會好很多,比如隨機森林等

偏差bias和方差variance——機器學習中的模型選擇

understanding the bias-variance tradeoff

機器學習防止欠擬合、過擬合方法

機器學習基礎 過擬合,欠擬合

最左邊屬於欠擬合,最右邊過擬合。欠擬合是對資料擬合的不好,在訓練集和測試集上的表現都很差。過擬合在訓練集上表現得很好,在測試集上表現得不好 欠擬合原因 模型過於簡單 使用更複雜的模型,整合 訓練次數不夠 增加訓練次數 過擬合原因 模型過於複雜 訓練資料少 資料中雜訊多 解決過擬合方法 簡化模型 減少...

過擬合和欠擬合

嘗試不同的模型 既然有一種可靠的方法來測量模型精度,那麼可以嘗試使用其他模型,並檢視哪種模型可以提供最佳 但是對模型有什麼選擇?可以在scikit learn的文件中看到決策樹模型有很多選項 比您長期想要或需要的更多 最重要的選項決定了樹的深度。回想一下這個微課程的第一課,樹的深度是衡量它在進行 之...

欠擬合和過擬合

解決欠擬合問題,可以從以下三個方面入手 1 增加特徵項 在大多數情況下出現過擬合是因為沒有準確把握資料的主要特徵,可以嘗試在模型中加入更多的和原始資料有重要相關性的特徵來尋連搭建的模型,著牙嗎嗯得到的模型可能會有更好的泛化能力。2 構造複雜的多項式 3 減少正則化引數 解決過擬合問題 1 增大訓練的...