Machine Learning學習日記 — Coursera篇 (Week 2.1):Multiple features, Gradient Descent for multiple variables, feature scaling
Multivariate Linear Regression(上)
綱要
- Multiple features
- Gradient Descent for multiple variables
- Feature scaling
1. Multiple features
跟前面所提的hypothesis,最大的差異是不再只是單一個feature/參數了
現在要考慮的情境會比較像是
Hypothesis改寫之後的模樣:
當給予一個hypothesis的時候,會將輸入變數(x)以及參數(θ)視為兩個獨立的matrix
這兩個獨立的matrix的乘積要等於這個式子:
現在問題來了,要如何用x的matrix跟θ的matrix來表示這個式子?
還記得前面所提的Matrix運算嗎?
為了要使兩個matrix可以進行相乘,故需要將θ matrix轉成適合的dimension(使用transpose矩陣)
若只是讓matrix的乘積等於hypothesis的話,不一定只能在θ matrix上動手腳,x matrix應該也能做相對應的transpose的轉置
但我覺得這應該是一個約定成俗的習慣吧,輸入的每筆資料是一行一行的呈現(由上至下),而參數matrix則相對較為彈性
2. Gradient Descent for multiple variables
How to fit the parameter of that(multiple features) hypothesis ?
怎麼找到最適當的參數呢?
- Cost function
Cost function求得目前參數所預測的偏差值
Gradient descent則是將偏差值最小化,以求得最適當的參數(所有參數都要以同個cost function(當前參數預測的偏差值)來進行運算)
這個式子的概念就是,隨著參數越來越準,後面那一大串的數值(偏差值)就會越來越小,也因此θj便會漸漸趨近於一個範圍,直至後面的數值(偏差值)趨近於0
隨堂練習
Ans:
這題要考的是要如何用不同的函式表示hθ(x)
第一個即為前面線性代數所提到的矩陣相乘的觀念
第二個則為需了解裡面符號的含義
θ及X右下方的 j表示第 j項的 數字
X右上方的(i)則表示第 i組的 training data
θj乘上Xj正是原本hypothsis:h(θ)=θ0*X0+θ1*X1+θ2*X2+…+θn*Xn
為什麼要特別強調這個 θ0,X0。是因為其代表著“常數”(X0通常為設為1)
在參數只有兩個的時候,Gradient descent的呈現較易理解
就是不斷的針對二個參數(θ0,θ1)進行優化。
如果對這兩個函式有點陌生的話,可以複習一下前面Gradient Descent的觀念(由偏微分和chain rule所推導)
3. Feature scaling
A trick for making Gradient Descent algorithm work well
概念:令所有的features都為相似的尺度、比例
舉例:若是今天兩個features相差懸殊
則其所形成的分布圖也會較為分散,使得搜索效率不佳
若今天我們把這些feature除上基數,使其皆處於一個0-1的範圍
其分佈將較為集中,使得搜尋效率較佳
Feature scaling就是將所有features的範圍壓縮在差不多-1~1之間的比例
(1) Correct example
x1: -1~1 ; x2: 2~3
(2) Wrong example
x1: -100~100 ; x2: -0.001~0.001
而除了除上基數之外,有時候也會進行Mean normalization
先扣掉平均數在除上基數
(假設size的平均數為1000, bedroom數的平均數為2)