iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 23
0
AI & Data

Machine Learning for Dummies系列 第 23

[Day 23] Underfitting and Overfitting

昨天聊完一些關於梯度下降法的實作問題之後,今天要來看看另外一個問題

如果我們用不同的模型來做梯度下降法呢?

昨天提到的種種問題,其實都發生在同一個模型當中,也就是

y = a * x + b

如果我們用不同的模型,能不能找到更好的曲線,進而降低 Loss function 的值呢?

這是原本簡單線性模型的模擬圖
Imgur

如果我們改用二次式

y = a * x^2 + b * x + c

看起來好像貼近了一點

Imgur

如果我們改用三次式

y = a * x^3 + b * x^2 + c * x + d

Imgur

如果我們改用四次式

y = a * x^4 + b * x^3 + c * x^2 + d * x + e

Imgur

到了這邊,都可以看到前後兩個點都直接落在線上了,想必會是一個更好的模型吧

不同模型的計算結果

單用眼睛看當然不準,讓我們實際來算算看。結果如下

模型 error
一次式 1879.6
二次式 1658.4
三次式 1455.7
四次式 1385.2

看起來模型的確是越來越準確,Loss function 的值很明顯越來越小,而且比昨天我們在那邊調整 learning rate 與 iteration 所帶來的效果還要大

訓練完的模型真的準嗎?

當我們用訓練資料訓練完機器後,你可以想像我們唸完參考書之後,接下來還不能直接上考場,而是會先來個模擬考,來測驗看看這個機器是不是真的訓練好了。

如果你還記得的話,在 [Day 3] 機器學習的步驟 中我們有提到 評估分析(Evaluation) 的這個階段

當我們覺得我們的機器訓練到某個程度之後,我們就可以拿先前準備好的測試資料來考考它,看看機器是不是真的可以面對實際沒有見過的狀況,而不是只會處理有看過的訓練資料而已。

因此我們這裡準備了測試資料如下

x_test_data = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]
y_test_data = [18.8, 20.9, 23.2, 27.0, 32.9, 39.7, 47.8, 58.0, 68.6, 81.1]

然後保險起見,同時帶入剛剛訓練的四種模型,來看看結果如何

模型 error
一次式 260.9
二次式 2.6
三次式 194.8
四次式 339.9

哇這時候竟然發現,表現最好的是第二個模型,而不是第四個模型,這是為什麼呢?

Underfitting and Overfitting

這裡就要進入今天要提到的重點了:Underfitting and Overfitting,中文叫做低度擬合過度擬合(也有人叫欠擬合與過擬合)

簡單來說,就是我們所使用的訓練資料,不代表真實世界的所有情況,因此當我們盡可能的去訓練模型,讓模型可以非常精確的去預測「看過的資料」,但是不代表這個訓練完的模型,就可以精準地去預測「沒有看過的資料」。

這也就是為什麼我們需要把手上的資料拆成「訓練資料」以及「測試資料」,就是要在這個時候派上用場

在低度擬合的狀態,模型沒有辦法很準確地去解釋資料之間的關係,有可能是我們選擇的特徵過少,或者是迭代的次數不夠。在低度擬合的情況下,機器連參考書裡面的題目都搞不定,更不用說去應付模擬考或是大考。

而在過度擬合的狀態,譬如剛剛的「三次式」模型與「四次式」模型,在訓練資料檔中可以很準確,但是在測試資料中的表現不如預期,有可能是我們加入了太多的特徵值,或者是訓練資料太少,導致訓練出來的機器沒有辦法應付測試資料或真實世界的狀況。在高度擬合的情況下,機器太會做參考書裡面的題目了,但是遇到沒看過的題目,像是模擬考中的題目,就沒有辦法舉一反三的去應對了。


(備註:我想通常訓練資料出來 error 應該會小於測試資料的 error,這裡出現相反的情況,可能的原因是訓練不足,或者是訓練資料不夠好)


上一篇
[Day 22] 更多關於梯度下降法
下一篇
[Day 24] Error 哪裡來的?
系列文
Machine Learning for Dummies30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言