iT邦幫忙

2021 iThome 鐵人賽

DAY 7
0
AI & Data

30天搞懂機器學習是否搞錯了什麼系列 第 7

【Day 7】機器學習基本功(五)

  • 分享至 

  • xImage
  •  

誤差(Error)來自什麼地方?

  • 來自於偏差(Bias)
  • 來自於方差(Variance)

假設我們需要估測靶的中心 https://chart.googleapis.com/chart?cht=tx&chl=%5Chat%20f,收集了一些資料進行一次訓練結果找到的可能是 https://chart.googleapis.com/chart?cht=tx&chl=f%5E*
我們只要做很多次實驗把所有 https://chart.googleapis.com/chart?cht=tx&chl=f%5E* 的期望值 https://chart.googleapis.com/chart?cht=tx&chl=%5Cbar%20f 算出來,就可以發現 https://chart.googleapis.com/chart?cht=tx&chl=%5Cbar%20fhttps://chart.googleapis.com/chart?cht=tx&chl=%5Chat%20f 有一個Bias,而 https://chart.googleapis.com/chart?cht=tx&chl=f%5E*https://chart.googleapis.com/chart?cht=tx&chl=%5Cbar%20f 之間的距離就是Variance。因此我們最希望找到的是圖中左上角的狀況,沒有什麼bias,variance也很小。

方差(Variance)

我們只要抓不同的訓練資料進行訓練就可以找到很多的 https://chart.googleapis.com/chart?cht=tx&chl=f%5E*,而當今天模型比較簡單的時候,Variance就會比較小,相反的,模型比較複雜的時候,Variance就會很大,會這樣是因為簡單的模型比較不會受到資料的影響。

偏差(Bias)

前面有提到Bias就是把所有 https://chart.googleapis.com/chart?cht=tx&chl=f%5E*的平均值 https://chart.googleapis.com/chart?cht=tx&chl=%5Chat%20f 算出來,並去看 https://chart.googleapis.com/chart?cht=tx&chl=f%5E*https://chart.googleapis.com/chart?cht=tx&chl=%5Chat%20f 的差距,但事實上我們並不會知道 https://chart.googleapis.com/chart?cht=tx&chl=%5Chat%20f 是什麼,因此我們就要自己假設一個 https://chart.googleapis.com/chart?cht=tx&chl=%5Chat%20f

在前幾天的機器學習基本功(一)裡有提到,我們要找的function就是從我們定義的model裡面找出來的,但如果是簡單的模型,它包含的範圍是比較小的,就有可能根本就沒有包含我們要找的目標,但如果模型是比較複雜的就很有機會會是包含我們要找的目標。

Bias v.s. Variance

  • Error = Bias + Variance

簡單的model就是Bias比較大但是Variance比較小,而複雜的model就是Variance比較大,Bias比較小。當我們同時考慮了Bias跟Variance就會是我們的Error。
當我們的誤差來自於Variance很大的時候就會產生Overfitting,而當我們的誤差來自於Bias很大的時候就會產生Underfitting。

如何判斷Large Bias?

Large Bias就是你的model沒有辦法fit你的訓練資料的時候,就代表你的model跟正確的model有很大的差距,也就是Underfitting。
如果遇到Underfitting的情況發生,就需要重新設計模型,像是考慮更多feature或是讓模型變得更複雜等等。

如何判斷Large Variance?

Large Variance就是你可以fit你的訓練資料,你在訓練資料上得到的誤差很小,但是在測試資料上卻得到很大的誤差,即Overfitting。
昨天在機器學習基本功(四)也介紹過Overfitting了,解決方法就是增加更多的訓練資料或是正規化(Regularization),但是正規化可能會影響到你的Bias,必須要調整你的權重來在Variance跟Bias之間取得平衡。

交叉驗證(Cross Validation)

如果使用全部的訓練資料去訓練模型,就會導致那些實際的測試資料得到的誤差大於你在自己的測試資料上面反映的誤差,也就是說找到的就不會是最好的模型。

因此我們必須要將訓練資料分成兩組,一組是要拿去訓練模型的Training set,另一組是拿來選模型的Validation set。先在Training set上找出最好的 https://chart.googleapis.com/chart?cht=tx&chl=f%5E*,再用Validation set來選擇模型,當找到一個最好的model時,就可以再用全部的訓練資料去訓練,這時候拿去測試資料反映出的誤差才是真正的誤差。

N-fold Cross Validation

顧名思義就是將訓練資料分成 https://chart.googleapis.com/chart?cht=tx&chl=N 份,拿某一份出來當Validation set,其他當作Training set。去計算平均誤差找到最好的模型後,一樣再將全部的訓練資料拿去訓練。


參考資料

李宏毅老師 - ML Lecture 2


上一篇
【Day 6】機器學習基本功(四)
下一篇
【Day 8】梯度下降法(Gradient Descent) --- Tip 1
系列文
30天搞懂機器學習是否搞錯了什麼30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言