Quantcast
Channel: iCoding »科技趨勢
Viewing all articles
Browse latest Browse all 4

Machine Learning 筆記 (2) – Linear Regression with One Variable

$
0
0


(img via wikimedia)

前言

這一系列是 Machine Learning 相關筆記,前情提要可以參考之前的文章 Machine Learning 筆記 (1) – 簡介。看完了對於 Machine Learning 的簡介之後,接下來我們要來進入真正的 Machine Learning 部分了。從這邊開始將不再輕鬆,會開始有些討厭的數學式子出現,也會需要一些基本的微積分。不過也唯有熬過這些,你才可以從嘴砲人晉升成為真正對 Machine Learning 略懂略懂的人。大家一起學習吧!

Linear Regression with One Variable

讓我們考慮以下的問題:

假設已知過去幾年信義區的房屋坪數和成交價,現在告訴你某間房屋的坪數,
預測這間房子大概可以賣多少錢。

當然實際上房子的成交價格因素不僅僅是坪數大小而已,不過為了簡化問題,我們先從這邊開始。

首先讓我們再來複習一下關於 Machine Learning 的分類,因為我們這個問題有給予正確的答案,所以是屬於 “Supervised Learning"。另外我們的問題是希望預測最後房子賣出的價格,所以屬於 “Regression Problem"。

Model Representation

那麼讓我們正式開始來解這個問題吧!在這之前,讓我們來定義一些 Machine Learning 常用的 notations:

m: number of training examples
x: input variables/features
y: output variables

在這邊,x 可以是一個變數或是多個變數,通常我們的 training examples 會用 (x,y) 來代表一組 training example。舉例來說,假設房價跟坪數的資料如下:

坪數 房價
38 4605
20 2033
32 3651
80 8730

在這邊,我們有 4 組 training examples (m=4) 組成了 training sets,4 組 training examples 分別為 (38, 4605)、(20, 2033)、(32, 3651)、(80, 8730)。通常,我們會用 (x(i), y(i)) 來代表第 i 組的 training example。以這組例子來說,(x(1), y(1)) = (38, 4605)。x 是坪數,y 則是房價。

在這個問題當中,我們要做的事情基本上可以用下圖來說明:

machine learning flow

首先,我們有了 training sets 之後,餵給我們的 Machine Learning Algorithm,接著由我們的演算法產生出一個 hypothesis function h,最後再用這個 hypothesis function h 來根據房屋的坪數來預估價格。

在這邊,我們假設我們的 hypothesis function h 會是線性的,也就是說 hΘ(x) = Θ01x。我們的 Machine Learning Algorithm 就是要根據 training sets 找出 Θ0 還有 Θ1 的值。

Cost Function

cost function for linear regression

用圖示的方式來說明也許會更清楚,圖中每個 X 的都代表了一個 training example,而我們的任務就是要找到圖中的直線 hΘ(x) = Θ01x。那麼要怎麼選擇 Θ0 還有 Θ1 的值呢?我們的目標是希望找出的 Θ0 還有 Θ1 可以讓每一個 hΘ(x(i)) 都跟 y(i) 越接近越好。

我們會用到一般最常用的 square root error。我們的目的是最小化 hΘ(x(i)) 和 y(i) 之間的 square root error,寫成數學式如下:

可以寫成

在這邊,我們會把 J(Θ0, Θ1) 叫做 cost function。

Gradient Descent Algorithm

到目前為止,我們把原本的 Machine Learning 問題轉為了一個數學問題,目標就是要最小化我們的 cost function。為了解決這個問題,可以有個簡單的想法:

  1. 先找個初始的 Θ0, Θ1
  2. 一直更動 Θ0, Θ1 的值,減少 cost function J(Θ0, Θ1),直到我們找到最小值為止

不過問題來了,我們要怎麼樣可以知道 Θ0, Θ1 要怎麼變化才可以減少 cost function 的值呢?還好早就有數值方法可以幫你這個忙!我們這邊會用到 Gradient Descent 來對 Θ0, Θ1 做 update,演算法如下:

其中,α 是 learning rate,代表 Θj 更新的幅度。後面的

這項對於從前微積分還有一些印象的人應該知道這代表著 Θj 的 derivative。

那麼要如何找出

呢?讓我們來做點簡單的數學推導

所以原來的演算法變成

到這邊為止終於推導完成 gradient descent algorithm,我們只要給定初始的 Θ0, Θ1,並且每個 iteration 分別去對 Θ0, Θ1 做更新,做耕星後就可以求得我們的 hypothesis function h 。然後在之後做預測的時候,只要將坪數 x 帶入 h 當中,就可以求得預測的房價 y

結論

還跟的上嗎?如果還跟的上的話恭喜你!因為之後大概就都是這種難度了。不過如果跟不上也別擔心,只要抓到一些演算法的重點跟感覺,相信當你需要用到的時候還是可以回來再看看。

這篇我們講了在一個變數下的 linear regression,不過我們常常遇到的問題其實 feature variables 不只一個,那麼該怎麼辦呢?下一篇我們就會來解多變數的 linear regression problem。


Viewing all articles
Browse latest Browse all 4

Latest Images

Trending Articles



Latest Images