昨天我們把Curve Fitting分成了
其實這兩個部份我們可以把他看作是:
這兩個階段,基本上機器學習方法,都有這兩個階段!
以準備考試的例子來說,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向量叫做A跟B
其中的字母都可以是任意值,零則是一定要是零!
那這樣一來,誰fitting的能力會比較好呢?
意思就是說我們把A跟B分別與我們的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
黑色曲線是真正的曲線,藍色是用昨天的式子最小化之後的結果,橘色則是用今天的式子最小化的結果!
可以看到橘色未來預測黑色曲線其他點的表現,一定會比藍色好很多!
講了那麼多,那實際上到底要怎麼做呢?
這個部份就讓我們留到明天再跟大家討論囉!