机器学习入门系列二(关键词:多变量(非)线性回归,批处理,特征缩放,正规方程
機器學習入門系列二(關鍵詞:多變量(非)線性回歸,批處理,特征縮放,正規方程)
目錄(?)[+]
一、多變量的線性回歸
在#機器學習系列一#中,我們討論了單變量的線性回歸,而多變量的線性回歸與單變量類似,一致內容就不再贅述了。首先我們來看一個例子,下表是波特蘭的房子價格,針對不同的房屋面積和臥室間數。
| 2104 | 3 | 399900 | 1962 | 4 | 259900 |
| 1600 | 3 | 329900 | 3890 | 3 | 573900 |
| 2400 | 3 | 369000 | 1100 | 3 | 249900 |
| 1416 | 2 | 232000 | 1458 | 3 | 464500 |
| 3000 | 4 | 539900 | 2526 | 3 | 469000 |
| 1985 | 4 | 299900 | 2200 | 3 | 475000 |
| 1534 | 3 | 314900 | 2637 | 3 | 299900 |
| 1427 | 3 | 198999 | 1839 | 2 | 349900 |
| 1380 | 3 | 212000 | 1000 | 1 | 169900 |
| 1494 | 3 | 242500 | 2040 | 4 | 314900 |
| 1940 | 4 | 239999 | 3137 | 3 | 579900 |
| 2000 | 3 | 347000 | 1811 | 4 | 285900 |
| 1890 | 3 | 329999 | 1437 | 3 | 249900 |
| 4478 | 5 | 699900 | 1239 | 3 | 229900 |
| 1268 | 3 | 259900 | 2132 | 4 | 345000 |
| 2300 | 4 | 449900 | 4215 | 4 | 549000 |
| 1320 | 2 | 299900 | 2162 | 4 | 287000 |
| 1236 | 3 | 199900 | 1664 | 2 | 368500 |
| 2609 | 4 | 499998 | 2238 | 3 | 329900 |
| 3031 | 4 | 599000 | 2567 | 4 | 314000 |
| 1767 | 3 | 252900 | 1200 | 3 | 299000 |
| 1888 | 2 | 255000 | 852 | 2 | 179900 |
| 1604 | 3 | 242900 | 1852 | 4 | 299900 |
| 1203 | 3 | 239500 | ? | ? | ? |
在這里我們先規定一下符號記法:
| m | 訓練樣本的個數 |
| n | 每個訓練樣本的特征個數 |
| x | 訓練樣本中的輸入變量 |
| y | 訓練樣本中的輸出變量 |
| (x(i),y(i)) | 第i個訓練樣本 |
| x(i)j | 第i個訓練樣本的輸入變量的第j個特征 |
| hθ(x) | 輸入變量x與輸出變量y的映射關系 |
在本例中,訓練樣本個數m為47;輸入變量的特征數n為2,分別為房屋面積和臥室間數;x(i)1為第i個樣本的房屋面積,x(i)2為第i個樣本的臥室間數,y(i)為第i個樣本的房屋價格,例x(1)=[21043]T,y(1)=399900。有了訓練樣本,下一步我們需要用一種算法得到一個比較好的映射關系hθ(x),當給定房屋面積和臥室間數x?時,通過映射關系可以得到一個符合訓練樣本規律的房屋價格y?。由于我們現在討論的是多變量的線性回歸,因此我們假設
hθ(x)=θ0+θ1x1+θ2x2(1)同單變量線性回歸一樣,我們定義一個代價函數J(θ0,θ1,θ2)。這樣,問題就轉化為尋找一組θ0,θ1,θ2使得J(θ0,θ1,θ2)最小。 J(θ0,θ1,θ2)=12m∑i=1m(hθ(x(i))?y(i))2(2) 應用梯度下降法(詳見機器學習系列一)
?????????θ0=θ0?α??θ0J(θ0,θ1)θ1=θ1?α??θ1J(θ0,θ1)?(3)
經過嚴格推導可得
?????????????????????????θ0=θ0?αm∑i=1m(hθ(x(i))?y(i))θ1=θ1?αm∑i=1m(hθ(x(i))?y(i))x(i)1θ2=θ2?αm∑i=1m(hθ(x(i))?y(i))x(i)2?(4)
二、批處理
為了可以用矩陣進行批處理,我們把x增加一個維度x0=1,這樣
因此式(4)可以寫成如下形式 θj=θj?αm∑i=1m(hθ(x(i))?y(i))x(i)j(6)
這樣的話,輸入變量X可以寫成如下m×3矩陣形式(7),其中第一列為1,第二列為第一個特征(房屋面積),第三列為第二個特征(臥室間數);輸出變量y可以寫成m×1矩陣;所求θ可以寫成3×1矩陣,即θ=[θ0θ1θ2]T
??????????????x(1)T??????x(2)T??????x(3)T???????x(m)T??????????????(7)
此時式(2),(6)用matlab編程語言如下,非常簡潔明了: <code class="hljs perl has-numbering">J = <span class="hljs-number">1</span>/(<span class="hljs-number">2</span><span class="hljs-variable">*m</span>)<span class="hljs-variable">*(</span>X<span class="hljs-variable">*theta</span>-<span class="hljs-keyword">y</span>)<span class="hljs-string">'*(X*theta-y); theta = theta-alpha/m*(X'</span><span class="hljs-variable">*(</span>X<span class="hljs-variable">*theta</span>-<span class="hljs-keyword">y</span>));</code><ul class="pre-numbering"><li>1</li><li>2</li></ul><ul class="pre-numbering"><li>1</li><li>2</li></ul>
三、特征縮放
由于這是多變量線性回歸,還有一個比較棘手的問題,即不同的特征取值范圍不一樣。在本例中特征1取值范圍0~3000,而特征2取值范圍0~5,差距懸殊。在處理數據前若沒有做特征縮放也就是沒有做過標準化,目標函數則無法適當的運作。舉例來說,利用兩點間的距離計算兩點的差異對數據進行分類,若其中一個特征具有非常廣的范圍,那兩點間的差異就會被該特征左右,因此,所有的特征都該被標準化,這樣才能大略的使各特征依比例影響距離。在本例中若不進行特征縮放,將會耗費很長很長的時間找到最優解,極端情況下甚至因為各種特征差距太大甚至無法找到。不單單是線性回歸,很多情況下我們都要對數據進行預處理即特征縮放,可以說應用范圍非常廣。
常見的歸一化方法有兩種:
1. min-max標準化
min-max標準化也稱為離差標準化,是利用樣本數據的最大值和最小值對原始數據的線性變換。經過處理使結果值映射到[0 - 1]之間,轉換函數如下:
2. Z-score標準化
Z-score標準化利用原始數據的均值和標準差進行數據的標準化。經過處理的數據符合標準正態分布,即均值為0,標準差為1,轉化函數為如下: x?=x?μσ(9)
本例中,我們采用Z-score標準化,以第一個特征(房屋面積)為例
x1=x1?μx1σx1=x1?μx1σx1=x1?2000.68786.2
經過標準化,梯度下降法迭代,我們得到
θ=[8.9598×104139.2107?8.7380×103]T
當房子面積為1650ft2,臥室間數3時,房屋預測價格為
price=θT????116503???=293081(美元)
四、正規方程
為了求得最優解θ,我們采取了梯度下降法,下面我們介紹一種方法可以一次性得到最優解,不必進行迭代,所采用的X是式(7)。
- 正則方程優點
-代碼簡潔易懂
-不用選擇步長α,不用進行迭代
-不用進行特征縮放,即不會梯度下降法那樣很難得到最優解 - 正則方程缺點
-當輸入變量特征較多時,XTX太大,進行求逆運算代價太高,此時梯度下降法是一個很好地選擇(一般而言當n>104時我們可以著手考慮采取梯度下降法)。
五、多變量非線性回歸
若我們要進行非線性回歸,所得結果是個圓,即
hθ(x)=θ0+θ1x1+θ2x2+θ3x21+θ4x22(11) 為了把復雜的非線性回歸轉化為已知的線性回歸,不妨令?????????p1=x1p2=x2p3=x21p4=x22(12) 此時便轉化為已知的線性回歸 hθ(p)=θ0+θ1p1+θ2p2+θ3p3+θ4p4(13) 注:對于非線性回歸,由于有2次項,甚至更高項,如果進行梯度下降法,那么一定要進行特征縮放。
總結
以上是生活随笔為你收集整理的机器学习入门系列二(关键词:多变量(非)线性回归,批处理,特征缩放,正规方程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习入门系列一(关键词:单变量线性回
- 下一篇: 机器学习入门系列四(关键词:BP神经网络