機器學習基礎篇(二) 過擬合與欠擬合

2021-10-19 06:23:18 字數 2726 閱讀 8101

在機器學習時,時常會出現許多問題。最常見的兩個問題是過擬合欠擬合

為了更形象的理解這些概念,我們想象乙個機器學習模型,它試圖學習如何對數字分類,並且能夠訪問一組訓練資料和一組測試資料

當模型從訓練資料中學習得太徹底的時候哦,模型會受到過度擬合的影響,在實際測試中表現不佳,這通常是因為在訓練資料中學習了過多特徵引起的。

例如在數字分類問題的訓練中,如果學習了特徵中容易引起誤導的微小細節(例如以雜散標記作為特定數字的指示),模型將會出現過度擬合的情況。

當我們僅僅觀察下圖的中間部分時,會發現模型擬合的不錯,然而當我們觀察邊緣時,會發現邊緣上有著極大的誤差。實際上,這種誤差並不僅僅出現在邊緣處,他可以出現在擬合圖形的任何位置。而訓練中的噪音是導致這些誤差的原因

在圖示中,該資料通過多項式進行擬合,標記的點對函式y=x²成立,但其他的點不能很好地逼近函式

當乙個模型在訓練中學習的不夠,就會出現擬合不足的問題,在實際測試中表現不佳。與過擬合相反,欠擬合的模型在訓練資料集中沒有學習到足夠的特徵

在數字分類的例子中,如果訓練集太小或者模型沒有足夠的嘗試去學習,那他就不能識別出數字的關鍵特徵。

在下圖中,正確的模型是非線性的而不是直線。但在機器學習中,如果因為訓練資料不足而導致欠擬合,就會得出簡單的直線模型

找到乙個合適的模型是機器學習的核心問題之一,在掌握待定方法之前,學會如何避免擬合問題可以使模型不出現基礎錯誤,尋找合適的思維方式,而不是在模型上投入更多的學習時間,這一點非常重要

import matplotlib.pyplot as plt

plt.rcparams[

'font.sans-serif']=

['simhei'

]# 指定字型

plt.rcparams[

'axes.unicode_minus']=

false

# 圖畫中正常顯示負數

# 定義實際值函式

defreal_func

(x):

return[-

(i**2)

for i in x]

# 定義過擬合值函式

defover_func

(x):

return[-

0.5*

(i**3)

-(i**2)

for i in x]

# 定義欠擬合值函式

defunder_func

(x):

return[6

*i+9

for i in x]

# 建立自變數x,並執行函式

x=range(-

3,4,

1)real_y=real_func(x)

over_y=over_func(x)

under_y=under_func(x)

# 用matplotlib來繪製函式的影象

plt.plot(x,real_y,

'k',label=

'真實'

)plt.plot(x,over_y,

'r',label=

'過擬合'

)plt.plot(x,under_y,

'b',label=

'欠擬合'

)plt.legend(

)plt.show(

)# 以相同的格式輸出資料

print

('欠擬合模型輸出資料:'

)for i in

range(0

,7):

print

('x:'

+str

(x[i])+

',real y:'

+str

(real_y[i])+

',y:'

+str

(under_y[i]))

print

('過擬合模型輸出資料:'

)for i in

range(0

,7):

print

('x:'

+str

(x[i])+

',real y:'

+str

(real_y[i])+

',y:'

+str

(over_y[i]

))

執行結果

理想狀態下,合適的模型看起來如下圖:

當我們使用機器學習建模時,經常會出現過度擬合等問題,因此這是機器學習中最重要的模組,無論是用什麼樣的模型,都會包含這些基礎知識。

自學自用,希望可以和大家積極溝通交流,小夥伴們加油鴨,如有錯誤還請指正,不喜勿噴

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

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

機器學習(十六)欠擬合與過擬合

問題 訓練資料訓練的很好啊,誤差也不大,為什麼在測試集上面有問題呢?當演算法在某個資料集當 現這種情況,可能就出現了過擬合現象。那麼是什麼原因導致模型複雜?線性回歸進行訓練學習的時候變成模型會變得複雜,這裡就對應前面再說的線性回歸的兩種關係,非線性關係的資料,也就是存在很多無用的特徵或者現實中的事物...

機器學習(13)欠擬合與過擬合

應用 當演算法在某個資料集當 現這種情況,可能就出現了過擬合現象。那麼是什麼原因導致模型複雜?線性回歸進行訓練學習的時候變成模型會變得複雜,這裡就對應前面再說的線性回歸的兩種關係,非線性關係的資料,也就是存在很多無用的特徵或者現實中的事物特徵跟目標值的關係並不是簡單的線性關係。過擬合原因以及解決辦法...