iT邦幫忙

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

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

概論 - 曲線擬合 Curve Fitting (1)

今天我們終於要開始瞭解到底要怎麼學了!

首先,我們將問題分為兩類

  • Regression 回歸
  • Classification 分類

回歸問題就是我要預測的值是一個實數值,也就是填空題,例如我要預測台股明天多少點,這就是一個回歸問題!
分類問問題就是我要預測的值是哪一個類別,也就是選擇題,例如明天會不會下雨,就是"是或不是"的是非題,對於只有兩個選擇的問題,我們又稱他為二元分類(Binary Classification)。

那今天要跟大家討論的Curve Fitting,是屬於回歸問題。
我們這邊考慮二維空間的情況,以方便作圖,也就是x軸會是我的輸入、y會是我的輸出。

問題是這這樣的:

我先用鉛筆畫一條曲線,然後用原子筆沿著這一條曲線隨便點一些點。點好之後,我用擦布把曲線擦掉。接著我要利用這些點點推測你剛剛的曲線。有了你推測的曲線之後,接下來你給我x值,我就會利用我猜的這條曲線告訴你,這個x對應的y是多少!

我們先把問題分成兩個部份!

  • 推測曲線
  • 預測新資料

今天我們介紹推測曲線這個部份!

先給大家看一張我已經擦掉曲線的圖!

好,有點沒頭緒!
讓我們先定義一下,什麼是好的fitting。

還沒出現的資料我們不知道,我們也先不想管他,我們就看已經出現的這些資料。
我們要畫出一條跟原本很像的線,應該至少就是要通過現在這些已經出現的點吧,沒錯吧!

就像你要準備考試,老師上課洩了幾題,就算剩下的題目你不想管,也至少要準備老師說的那幾題吧!
那怎麼樣才算是你準備好了呢?非常簡單的寫一次那些題目,然後對答案就知道你會不會了。

我們這邊也是一樣的,怎麼樣檢視我們的曲線像不像呢?
就是把現在已經有的資料的x值放到我們的曲線,看一下我們的曲線在那個x值對應的y值是多少!
接著把我們推測的y值與真正的y值相減,這個值的絕對值越小,我們在這個點就fit的越好。

所以整條曲線fitting的好不好,從這個角度來看,就是把每一個點相減的絕對值加起來。
這個值越小,我們的曲線就fit的越好!

我們把我們已經x對應的正確答案稱為t,我們猜測的稱為y
再把剛剛的敘述用數學式表達,就得到

其中 n 是每一筆資料,在這邊就是每一個點;w指的是我們的曲線的係數(上一次有提到,學習就是學習這些係數)

所以我們推測的 y 是怎麼算的呢?
w是曲線的係數,x是我們帶入這個函數的值

舉例來說,若有三個維度:

  • w = [1 2 -1] 那我們的曲線的表示式就是
  • x = [1 2 3] 就是 x1 = 1, x2 = 2, x3 = 3

那我們在這個x得到的y就是 2 (1 + 4 - 3)

利用昨天寫到的表示法來表示的話呢


我們可以簡單的用向量內積來表示這個 y (內積就是兩個向量對應項相乘的加總)
也就是

所以我們的問題就可以寫成

這就是我們在回歸問題中,很常使用的Error funtion!

  • 為什麼要取平方呢?因為我們不喜歡絕對值!
  • 為什麼要乘上二分之一呢?因為之後比較好算!

那為什麼可以亂乘一個值???
你今天是全台灣最窮的人,哪一天全台灣的人錢一起多十倍,雖然你存款數字變大了,可是你還是全台灣最窮!
大概這個概念

所以我們就可以把上述的問題以數學的方式表達!

其中argmin 的意思就是 取讓 E(w) 最小的 w

首先我們先看張圖,這是 圖形

他最小的點在哪?很明顯就是在 x = 0的那個位置。
那0那個位置對於這個曲線有什麼特性呢?

微積分裡面告訴我們,就是他的一次微分等於零!

媽呀微積分是什麼??
這個問題也是很多修了一年微積分之後大一同學的問題,或是某些驚奇四修人的問題。

不過我們這邊只需要大概知道

微分為零,就是極值
不過這個極值,不一定會是整個曲線上最極的那個極值,也就是Global Extreme,可能僅僅是Local Extreme。但是對於convex function或是concave function,微分為零的那個極就是最極那個!也就是Global的!

詳細的定義大家可以去看微積分,這邊我們知道這個就好了!

回到我們剛剛的圖!很明顯的他是一個convex function!convex就是凸函數,凸函數就是凹的……,我想你還是就記得convex就好了吧,中文名字好神秘。

接著我們要知道convex函數 + convex函數還是convex函數
所以我們可以看出來我們的 E(w) 他是一個convex function!

接著最神奇的步驟來了!
我們令 

(那個倒過來的6是偏微分的意思,偏微分你可以直接想像是,除了你要微分的東西之外都把他當成常數)

接著我們就可以求 w !


怎麼得到這個結果的呢?簡單的利用微積分的chain rule就可以了!
我要對E(w)微分,可是E(w)裡面那一個括號的東西我不會微,那怎麼辦?我就把那個括號令為u,對u微分再乘上u對w微分!這就是chian rule!
也就是下式

就會得到我們上面的式子了!

接著經過一些簡單的整理,並且把變數換成以向量形式表示,就可以得到!

這邊的-1次方指的是反矩陣,反矩陣指的是,你跟你的反矩陣相乘,會變成單位矩陣,單位矩陣就是對角線是一剩下都是零的矩陣。

雖然經過一連串的計算,看起來好像很複雜
其實我們最後寫成程式的時候,只會用到

這個式子保證我們所得到的 w 是在現有維度下最接近我們的點的,也就是他的 E(w) 會是所有w中最小的!

看看今天一開始的那個圖

我們讓輸入的 x 從1維到9維來看一下我們fitting的狀況
讓x增加維度的表示法我們就用上一篇提到的phi,也就是這個式子
增加到幾維就是M = 多少

可以很明顯的看到越高維度fitting的情況越好!

以上大概就是curve fitting的第一個部份 - 推測曲線
程式碼的部份我到完整介紹完再跟大家說明!

但是!!!

正如一開始所說的,你有一條曲線,你拿原子筆順著曲線隨便亂點!
一定很多時候你都不會正好點在曲線上!

不過我們的推測卻是以你亂點的點點來推測,因此這會造成你在推斷沒看過的新資料的時候表現的非常非常的差,可是根據上面的推導,這個w在你看過得資料裡面,是表現最好的。

那我們要怎麼樣解決這樣的狀況呢?
就讓我們明天再來討論囉!

有什麼不懂的地方或是寫錯的地方歡迎留言指教!


上一篇
概論 - 機器到底怎麼學???
下一篇
概論 - 曲線擬合 Curve Fitting (2) Overfitting!
系列文
機器學習你也可以 - 文組帶你手把手實做機器學習聖經30

1 則留言

0
weiclin
iT邦高手 4 級 ‧ 2018-01-17 13:48:36

教練...我想學微積分.... TAQ

shortid iT邦新手 5 級 ‧ 2018-01-17 17:01:16 檢舉

哈哈放心!這邊都沒有用到什麼很難的微積分,微分只要會連鎖律跟偏微分就差不多了,積分的部份因為是機率的積分,而且因為都會是共軛,所以其實湊數字居多,連分部積分都不用會也行XD

我要留言

立即登入留言