機器學習擅長
回歸 regression
將連續性的資料進行觀察,用以預測未來的結果。例如股價、身高、體重
分類 classification
收集既有的資料,進行訓練,根據訓練結果預測新資料的分類。例如:垃圾郵件判斷、手寫數字辨識
分群 clustering
根據資料進行分群,但跟分類不同,分類的訓練資料已經有標記結果,要用來分群的資料並沒有群組的標記。例如:根據學測成績,進行文理組分群
使用具有標記的資料進行機器學習,稱為監督式學習。
使用不具有標記的資料進行機器學習,稱為非監督式學習。
線性迴歸(Linear regression)
當我們取得原始量測資料時,如果在平面座標上標記這些量測點,會感覺到這些點之間,可以畫出最接近這些點的一條直線方程式,線性回歸方法,可以找到這樣的方程式,未來就可以根據這個方程式,預測數值。
從圖形看起來,我們可找到一條「最接近」所有紅色觀測值的直線,以直線方程式 f(x)=ax+b 表示這條直線,我們要做的就是找到一個方法,確定 a 與 b 的值,未來就可以利用這個方程式預測數據。在統計中,為了因應未來可能有很多未知數的問題,改以這樣的寫法:
f(x)=𝜃0+𝜃1x
最小平方法
假設目前有這些數據,當我們任意找 𝜃0=1,𝜃1=2 時,f(x) 跟實際上的 y 之間有誤差。所以要找到適當的參數,讓 f(x) 與 y 之間的誤差最小,當然如果誤差為 0 是最好的。
x | y | f(x) |
---|---|---|
58 | 374 | 117 |
70 | 385 | 141 |
81 | 375 | 163 |
84 | 401 | 169 |
定義誤差函數為
E(𝜃)=12∑ni=1(y(i)−f𝜃(x(i))2
- x(i),y(i) 分別是第 i 項的 x 與 y,例如 x(1)=58,y(1)=374
- (y(i)−f𝜃(x(i)) 是誤差值,但因為誤差有可能是負數,所以就用平方,轉成正數
- 將所有誤差的平方加總後,為了微分計算方便,就在前面再乘上 1/2。因為乘上任意的正數,只會讓圖形橫向壓扁,但不會改變最小值的位置。任意的正數都可以,選擇 1/2 是因為後面的例子,f(x) 是二次函數的關係。
在讓 E(𝜃) 最小的狀況下,找到的 𝜃0,𝜃1 就是最小平方法
最速下降法
剛剛要讓 E(𝜃) 最小的狀況下,必須不斷地找到不同的 𝜃0,𝜃1,這個計算很麻煩,可用微分來解決,因為微分就是在找函數切線斜率的變化。
例如 f(x)=(x−1)2 ,微分後 f′(x)=2x−2
x | f'(x) 的正負 | f(x) 遞增或遞減 |
---|---|---|
x<1 | − | 遞減 |
x=0 | 0 | |
x>1 | + | 遞增 |
f(x) 的圖形如下,當 x 由 3 往 1 逼近,f(x) 就越來越小,另外當 x 由 -1 往 1 逼近,f(x) 也會越來越小
意思就是說,只要 x 往導函數 (微分) 的反方向移動,就函數值會往最小值移動。
最速下降法(梯度下降法) 就是定義為
x:=x−𝜂ddxf(x)
以實際的數字為例,當 𝜂=1,x=3,x 會在 3 與 -1 之間往返
x:=3−1(2∗3−2)=−1
x:=−1−1(2∗(−1)−2)=3
當 𝜂=0.1,x=3,x 會往最小值逼近
x:=3−0.1(2∗3−2)=2.6
x:=2.6−0.1(2∗2.6−2)=2.3
x:=2.3−0.1(2∗2.3−2)=2.1
當 𝜂 越大,x 就會往返,當 𝜂 越小,x 會往最小值逼近
回到剛剛的 誤差函數
E(𝜃)=12∑ni=1(y(i)−f𝜃(x(i))2
因為 f𝜃(x(i)) 是 f(x)=𝜃0+𝜃1x ,有兩個未知的參數 𝜃0,𝜃1 ,要改用偏微分找最小值。
𝜃0:=𝜃0−𝜂𝜕E𝜕𝜃0
𝜃1:=𝜃1−𝜂𝜕E𝜕𝜃1
因 E(𝜃) 裡面有 f𝜃(x),而 f𝜃(x) 裡面有 𝜃
u=E(𝜃)
v=f𝜃(x)
然後用合成函數的方式,計算微分
𝜕E𝜕𝜃0=𝜕u𝜕v𝜕v𝜕𝜃0
其中,前面的部分
𝜕u𝜕v=𝜕𝜕v(12∑ni=1(y(i)−v)2)=12∑ni=1𝜕𝜕v(y(i)−v)2=12∑ni=1(−2y(i)+2v)=∑ni=1(v−y(i))
後面的部分
𝜕v𝜕𝜃0=𝜕𝜕𝜃0(𝜃0+𝜃1x)=1
所以
𝜕E𝜕𝜃0=∑ni=1(f𝜃(x(i))−y(i))
另外對 𝜃1 微分,可得到
𝜕v𝜕𝜃1=𝜕𝜕𝜃1(𝜃0+𝜃1x)=x
𝜕E𝜕𝜃1=∑ni=1(f𝜃(x(i))−y(i))x(i)
最後
𝜃0:=𝜃0−𝜂∑ni=1(f𝜃(x(i))−y(i))
𝜃1:=𝜃1−𝜂∑ni=1(f𝜃(x(i))−y(i))x(i)
用這個方法,就可以找出正確的 𝜃0,𝜃1
多項式回歸
一開始,我們假設數據的模型是線性的,所以使用一次函數,但也可能用二次或更高次的函數來定義 f𝜃(x),會更貼近原本的數據模型
f𝜃(x)=𝜃0+𝜃1x+𝜃2x2
f𝜃(x)=𝜃0+𝜃1x+𝜃2x2+⋯+𝜃nxn
回到剛剛的問題,要對 𝜃2 進行偏微分
對 𝜃1 微分,可得到
𝜕v𝜕𝜃2=𝜕𝜕𝜃2(𝜃0+𝜃1x+𝜃2x2)=x2
𝜕E𝜕𝜃2=∑ni=1(f𝜃(x(i))−y(i))(x(i))2
多元回歸
目前解決的問題,都只有一個變數 x,但大多數的問題,都是有兩個以上的變數。例如廣告的點擊率,可能會受廣告費、顯示位置、顯示大小 等原因影響。
f𝜃(x1,x2,x3)=𝜃0+𝜃1x1+𝜃2x2+𝜃3x3
當變數有 n 個,可改用向量的方式表示
𝜃=[𝜃0𝜃1𝜃2..𝜃n]x=[x1x2x3..xn]
但因為 𝜃 跟 x 個數不同,不容易計算,就再加上一項 x0=1
𝜃=[𝜃0𝜃1𝜃2..𝜃n]x=[x0x1x2..xn]
將 𝜃 變成轉置矩陣後,再跟 x 相乘,就會是剛剛的 f𝜃(x)
𝜃Tx=𝜃0x0+𝜃1x1+⋯+𝜃nxn=f𝜃(x)
變成向量後,再用剛剛合成函數偏微分的方法
u=E(𝜃)
v=f𝜃(x)
𝜕u𝜕𝜃j=𝜕E𝜕𝜃j=𝜕u𝜕v𝜕v𝜕𝜃j
前面的部分一樣,後面的部分
𝜕v𝜕𝜃j=𝜕𝜕𝜃j(𝜃Tx)=𝜕𝜕𝜃j(𝜃0x0+𝜃1x1+⋯+𝜃nxn)=xj
第 j 項參數的定義為
𝜃j:=𝜃j−𝜂∑ni=1(f𝜃(x(i))−y(i))x(i)j
當變數增加,計算量變大,用最速下降法會導致計算速度變慢,可用隨機梯度下降法改進。
最速下降法除了有計算速度慢的問題,還有可能陷入局部解的問題,像以下的函數圖形中,不同的起點,可能會找到局部最小值。
隨機梯度下降法
在多元迴歸中,第 j 項參數的定義為
𝜃j:=𝜃j−𝜂∑ni=1(f𝜃(x(i))−y(i))x(i)j
但因為用到所有的資料的誤差,計算量太大,隨機梯度下降法式隨機選擇一項學習資料,套用在參數的更新上,例如選擇第 k 項。
𝜃j:=𝜃j−𝜂(f𝜃(x(k))−y(k))x(k)j
原本最速下降法用來更新一次參數的時間,隨機梯度下降法可更新 n 次參數。因為是隨機選擇學習資料,不會陷入局部解的問題。
另外也有隨機選擇 m 筆學習資料的方法,也稱為小量批次資料法,假設 m 筆資料的集合為 K
𝜃j:=𝜃j−𝜂∑k𝜖K(f𝜃(x(k))−y(k))x(k)j
沒有留言:
張貼留言