iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 5
0
AI & Machine Learning

機器學習你也可以 - 文組帶你手把手實做機器學習聖經系列 第 5

概論 - 曲線擬合 Curve Fitting (2) Overfitting!

  • 分享至 

  • xImage
  •  

昨天我們把Curve Fitting分成了

  • 推測曲線
  • 預測新資料

其實這兩個部份我們可以把他看作是:

  • training 訓練
  • testing 測試

這兩個階段,基本上機器學習方法,都有這兩個階段!
以準備考試的例子來說,training就是唸書,testing就是考試!

我們昨天介紹了怎麼推測曲線,也是就training的階段。
並再最後留下了一個問題,那就是我們可能fit了太多有問題的資料,拿昨天舉的例子,就是我們亂點的點,其實不一定在我們要的曲線上面。所以如果我們去fit這些資料,而且我們還fit的很好!

那這就非常容易造成一個問題叫做Overfitting
也就是我們的E(w)在我們看過資料中表現的非常的好,E(w)值非常的低,可是在我們還沒看過,那些用來測試的資料表現的非常的差,E(w)值非常的高。

再以準備考試的例子來說,就是你準備太多了,甚至到了鑽牛角尖的地步,看了很多很多很多很多很多不會考的東西!結果最後考試的時候你反而不太記得會考得東西有哪些了!

這是一個非常實際的問題,因為我們得到的資料,一定會有noise(雜訊)
不管我們再怎麼小心篩選資料,一定都還是會有雜訊在。
我們可以簡單的把noise分成兩種:

  • 離群值
  • 既有的偏差

離群值,你可以把它當作錯的資料。
而所謂既有的偏差就是說,你在同一個x不一定會有同樣的y,這樣講可能有點抽象。
簡單的例子就是說,每個人寫同一個字,一定都會長的不一樣。 每個人說同一個字,所得到的聲波一定也不一樣。同一條曲線,每個人亂點,點出來的點點分佈一定也不一樣。

我們來看一個簡單的例子!

我們phi 的 M 分別從1 ~ 9

紅線是我鉛筆畫的線,紅點就是手殘的我點的點點,而藍色虛線就是我推測出來的曲線!

可以發現,第一排fit得很差,這樣的情況叫做underfitting,而第三排雖然fitting的很好(他通過了每一個紅點),可是我們看得出來他跟我們原本的紅線差很多很多,這就是overfitting!反而是第二排的狀況,雖然fitting的情況沒有第三排好(也就是第二排的E(w)大於第三排的),可是卻比較接近我們想要的紅線。

而從這個圖也可以看出來,如果要預測新的資料,一定是第二排的預測會比較好!!

第三排的fitting能力十分的好,可是預測效果卻會很差!
這樣的情況要怎麼解決呢?

其實很簡單,我們第三排的Regression曲線之所以會overfitting,就是因為他太會fit了,所以我們就讓他不要那麼會fit就好了!

首先呢,我們先看看什麼叫做太會fit了。
假設我們的特徵還是只有一個x,並且我們利用phi,將x變成5維。
也就是 ,其中M = 4

接著我們考慮兩個不同的w向量叫做AB

其中的字母都可以是任意值,零則是一定要是零!

那這樣一來,誰fitting的能力會比較好呢?

意思就是說我們把AB分別與我們的phi做內積,誰可以表現更複雜的曲線?
很明顯一定是B!因為A的後兩項是零,所以他根本無法利用x是三次方與四次方的特徵,那當然表現能力會比B差。

所以!其實我們只要限制我們的w不要去用到高維度的特徵就好了!
但是這件事情其實很難,所以我們不直接這樣做,我們的作法呢是限制w這個向量的2norm!

2norm是什麼?我們可以把他當成長度!
他的算法是一個向量中全部的平方合再開根號,舉例來說

這個w 的2norm就是

我們以|| . || 來表示 . 的 2norm

也就是我們不直接限制w的哪一項要是零,而是限制w的每一項的平方加起來不能太大。

還記得我們昨天提到的的E(w)嗎?

我們去最小化這個E(w),結果得到overfitting的曲線。
所以在知道了我們w其實應該要有限制之後,我們把E(w)改成

其中我們把 x 改成phi x來表示我們對那個 x 做了一些基底轉換。

新增的這那一項我們稱作L2 Regularization,其中那個入字形狀的東西,唸作做lambda,這是我們要手動去設定的,lambda越大,我們就越會懲罰2norm太高的那種w!

什麼意思呢?

也就是說現在我們要去最小化的不是昨天的那一個E(w),而是最小化我們今天這個新的E(w)
既然要最小化他,自然要把今天新增的這一項考慮近來,所以如果這項數字很大,那這種w儘管他可能很會fit,不過在最小化的過程中他也會被我們淘汰。也就是說我們就不會得到太會fit的w了!

看個簡單的結果,我使用十維去fit
黑色曲線是真正的曲線,藍色是用昨天的式子最小化之後的結果,橘色則是用今天的式子最小化的結果!
可以看到橘色未來預測黑色曲線其他點的表現,一定會比藍色好很多!


講了那麼多,那實際上到底要怎麼做呢?
這個部份就讓我們留到明天再跟大家討論囉!


上一篇
概論 - 曲線擬合 Curve Fitting (1)
下一篇
概論 - 動手做看看 Regression回歸篇
系列文
機器學習你也可以 - 文組帶你手把手實做機器學習聖經30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言