機器學習筆記 學習曲線的繪製

2021-10-24 03:12:17 字數 2417 閱讀 4806

重點總結

來看看在神經網路上的應用

如何你要檢查演算法執行是否正常或者希望優化演算法的表現那麼就需要一款工具來實現,學習曲線就是乙個很好的工具。

同樣的,使用學習曲線可以檢查出演算法是處於偏差問題還是方差問題,或者是二者皆有!

先來看看資料樣本數量與誤差之間的關係,通過下圖看一下:

在右側,可以看到,當樣本數量很小的時候,很容易就可以將其擬合出來了,誤差也很小,但是得到的擬合函式的泛化能力很弱。所以:

當 m ≈ low 時,j(train)θ ≈ 0 ,但是 j(cv)θ ≈ high;

在右側,可以看到,當樣本數量很大的時候,很難就可以將其擬合出來了,誤差也很大,但是得到的擬合函式的泛化能力相對增強。所以:

當 m ≈ high 時,j(train)θ ⬆ ,但是 j(cv)θ ⬇;

這樣就獲得左側學習曲線的樣子。

直接看圖:

解釋:在高偏差的時候,隨著樣本數量的增大,j(train)θ是逐漸增大的,可以這麼理解,一條直線擬合很少的資料時,效果還可以,但是擬合較多的資料時,就不能很好的兼顧擬合效果了,但是隨著要擬合資料的增加,擬合效果其實並沒有多大的改變;

再來看j(cv)θ,隨著樣本數量的增大,j(cv)θ是逐漸減小的,可以這麼理解,一條直線擬合很少的資料時,效果還可以,但是這個直線的泛化能力很差,所以j(cv)θ很大,但是擬合較多的資料時,這條直線已經在盡可能地擬合較多的資料點了,所以這條直線的泛化能力是相對增大的,但是隨著要擬合資料的增加,擬合效果其實並沒有多大的改變,所以他的泛化能力也就相對沒有多大變化了。

重點來了

當擬合函式處於高偏差的時候,繼續的增大樣本資料量是無意義的!

直接看圖:

在高方差的情況下,隨著樣本數量的增大,j(train)θ是逐漸增大的,可以這麼理解,一條曲線擬合很少的資料時,效果還可以,但是擬合較多的資料時,雖然可以,但是要不斷地提高多項式的次數,所以現有的多項式曲線就不能很好的兼顧擬合效果了,所以隨著要擬合資料的增加,j(train)θ是逐漸增大的;

來看j(cv)θ,因為是高偏差情況,j(cv)θ本身就很大,隨著樣本數量的增大,j(cv)θ是逐漸減小的,可以參考「」直線的「」理解,曲線擬合很少的資料時,效果還可以,但是這個曲線的泛化能力很差,所以j(cv)θ很大,但是擬合較多的資料時,這條曲線已經在盡可能地擬合較多的資料點了,所以這條曲線的泛化能力是相對增大的,所以隨著要擬合資料的增加,j(cv)θ是逐漸下降的,所以他的泛化能力是相對變好的。

重點來了

當擬合函式處於高方差的時候,繼續的增大樣本資料量是有意義的!

不同的做法對應不同的問題:

(1)增加樣本數量

(2)減少特徵

(1)增加樣本特徵

(2)增加高次多項式

(1)λ⬆ 解決高方差(high variance)的問題

(2)λ⬇ 解決高偏差(high bias)的問題

**參考這裡:機器學習筆記——正則化(regularization)對偏差(bias)和方差(variance)的影響

到了這裡基本對學習曲線的使用就有了更清晰的認識了。

直接上圖:

(1)相對小的神經網路模型容易出現「欠擬合 under fit」 的情況,但是優點是計算量小;

(2)相對大的神經網路模型容易出現「過擬合 over fit」 的情況,但是優點是**準確;可是計算量很大;

(3)解決「過擬合」的問題,可以使用正則化的方法,優化過擬合的情況;

(4)如何選擇隱含層的的數量?

這個可以參考之前將的將資料集劃分為訓練集、測試集、交叉驗證集的方法,然後選擇不同隱含層的神經網路模型(隱含層=「1」、「2」、「3」.。。。),然後分別計算出不同隱含數量對應的j(cv)θ,最後選擇誤差最小的隱含層數量即可。

機器學習 學習曲線

檢視模型的學習效果 通過學習曲線可以清晰的看出模型對資料的過擬合和欠擬合 len x train 個訓練樣本,訓練出 len x train 個模型,第一次使用乙個樣本訓練出第乙個模型,第二次使用兩個樣本訓練出第二個模型,第 len x train 次使用 len x train 個樣本訓練出最後乙...

機器學習筆記5 學習曲線

sklearn中的學習曲線函式可以幫到我們。它可以讓我們通過資料點來了解模型表現的好壞。可以先引入這個模組 from sklearn.learning curve import learning curve sklearn 0.17 from sklearn.model selection impo...

sklearn機器學習之 學習曲線

本文精髓源自b站 莫煩python 系列教程 適用於python3版本,相應第三方庫建議公升級至最新版本 下面展示兩種學習曲線的繪製方法 sklearn.learning curve 中的 learning curve學習曲線 可以很直觀的看出我們的 model 學習的進度,對比發現 有沒有over...