[預測問題]
豪斯先生手上有1000筆已經成交房屋的資料, 它的內容會有房間數目, 地坪大小, 房屋年齡...等
還有他最關心的成交價格.
他希望用這1000筆資料來預估看看, 如果給定這些資料, 那麼成交的價格大概可以落在哪邊.
[分類問題]
邁爾先生的信箱裡面有一些關於財務的信, 一些廣告垃圾, 一些旅遊訊息
他希望可以讓信件自動分類成三群, 方便查找.
在 Stanford 的線上課程中, 我們會學習到兩種迴歸分析的方式,
分別是解決預測問題所使用的線性迴歸 (Linear Regression),
以及解決分類問題所使用的邏輯迴歸 (Logistic regression).
我們可以將求解的形式寫成這樣: y = hypothesis(x)
對於 Linear Regression來說, 我們會預估出一個預測值 y (例如: 預測房價 1000萬)
而對於 Logistic Regression來說, 我們則會求到一個可能性 y (例如: 預估為垃圾信的機率: 70%)
1.) Linear Regression
如果我們簡化成單變因來看的話, Linear Regression 就像是在解二元一次方程式.
例如說我們手上有三筆資料如下:
101 = hypothesis (20)
76 = hypothesis (15)
26 = hypothesis (5)
Y = hypothesis (X)
則我們可以知道這個 hypothesis 就是 (5*x + 1)
當然現實生活中不會這麼美好, 你的 hypothesis 不一定可以滿足全部的訓練資料.
(如果真的完美符合, 那還可能是遇到了Over fitting的狀況)
[Cost function]
我們可以說, 如果你手邊已經有了一個 hypothesis, 則它的誤差會作為懲罰,
這個誤差可以寫作是 (hypothesis (X) - Y) 取絕對值(或者取平方, 一樣的意思).
那麼要怎麼求出這個 hypothesis 呢?
首先我們要想像這個誤差 (Cost)可以被寫為一個誤差的函數 J(θ) (Cost function)
對於單變數函數來說, 我們可以給定 y = ax + b
這邊我們變換一下, 寫成矩陣的形式來看:
y = θ* X
那麼可以得到 θ = [a b], X = [1; x]
如果我們把 a, b 作為新的 XY軸, 可以對於不同的 a, b分佈繪製出一個 J(θ) 的分佈.
(因為不同的 a, b 會讓你得到不同的 Cost嘛)
則我們的問題就變成了要求出這個 Cost function J(θ)的最小值.
那麼要怎麼求最小值呢?
一般來說, 可以使用梯度下降 (Gradient descent), 或者直接對J(θ)每個系數作偏微分, 求得斜率為0的點.
先來看看Gradient descent的方法:
所謂的梯度下降, 就像是你站在山坡上, 往地勢低的地方走去, 最後一定會走到一個最低的地方.
例如說:
f(x) = x^2
它的微分項 f'(x) = 2x
也就是說, 當你在 x = 3的地方, 你的斜率會是 6 (一條左斜線 / )
那麼往低的方向走, 也就是往左邊移動, 那麼最終你會走到 x = 0 的地方.
當你在 x = -5的地方, 你的斜率會是 -10 (一條右斜線 \ )
那麼往低的方向走, 也就是往右邊移動, 那麼最終你也會走到 x = 0 的地方.
我們可以把自動更新 θ 的公式寫成這樣:
θ := θ - α * J'(θ)
這個 := 符號表示把左邊更新為右邊
其中 α 表示學習速度 (learning rate),
如此反覆疊代就可以求得你的 hypothesis(X) 的 θ 參數
沒有留言:
張貼留言