1. 程式人生 > >吳恩達機器學習之多變數線性迴歸理論部分

吳恩達機器學習之多變數線性迴歸理論部分

本部落格主要參考此部落格:戀雨心

一.Multiple Features — 多維特徵

相對於單變數線性迴歸模型,多變數線性迴歸模型適用於處理多個變數/特徵。
對比:
以之前我們介紹的單變數線性迴歸模型為例:
用房屋面積x預測房子價格y。
在這裡插入圖片描述
現在我們對房價模型增加更多的特徵,例如房間數樓層等,構成一個含有多個變數的模型,模型中的特徵為(x1,x2,…,xn)。
在這裡插入圖片描述
增添了更多特徵後,我們引入以下新的註釋:
n代表特徵的數量

x(i)代表第 i個訓練例項,是特徵矩陣中的第i行,是一個向量(vector)。

比方說,上圖的在這裡插入圖片描述

在這裡插入圖片描述代表特徵矩陣中第 i 行的第 j個特徵,也就是第 i個訓練例項的第 j個特徵。
例如在這裡插入圖片描述

就表示上圖中的第二個樣例的第3個特徵量。

支援多變數的假設 h表示為:
在這裡插入圖片描述
這個公式中有n+1個引數和n個變數,這n個變數就表示樣例的n個特徵量。
為使公式簡潔化,引入x0=1,則公式轉化為以下形式:
在這裡插入圖片描述
向量化形式:在這裡插入圖片描述
在這裡插入圖片描述
以上便是多元線性迴歸形式。

二、Gradient Descent for Multiple Variables — 多變數梯度下降

這一節我們介紹多元線性迴歸的假設形式以及使用梯度下降法來處理多元線性迴歸問題。
在這裡插入圖片描述
在這裡插入圖片描述
以下為梯度下降演算法更新過程:
在這裡插入圖片描述
其細節部分如下:
左側為單變數,右側為多變數
在這裡插入圖片描述
向量化處理形式:
在這裡插入圖片描述

三、Gradient Descent in Practice I-Feature Scaling— 梯度下降法 實踐1 特徵縮放

本節主要討論一種對梯度下降法的優化方式——特徵縮放
數學上可以證明,當所有特徵取值範圍相近時,梯度下降法可以收斂得更快些。
舉例如下,下面的問題還有兩個特徵x1、x2。其中x1是房屋面積大小, 且x1∈(0,2000);x2是房間數,且x2∈(1,5)
在這裡插入圖片描述
畫出代價函式J(θ)的輪廓圖。代價函式J(θ)是關於θ0,θ1,θ2的函式,因為θ0是一個常數,只會影響的輪廓圖在座標系中的位置,不會影響其形狀,所以暫不考慮θ0。只畫出J(θ)關於θ1、θ2的圖形。

由於x1的取值範圍遠遠大於x2的取值範圍,所以代價函式的輪廓圖呈現扁斜狀,2000:5的比例會讓該輪廓圖中的橢圓更加瘦長。如果在該代價函式上執行梯度下降演算法。可能會經過很長時間才能收斂到全域性最小值,如右圖。
如果把這個影象畫的再誇張一些,如左圖,情況可能會更糟糕,甚至可能會反覆來回震盪,才能找到一條通往全域性最小值的路。
在這裡插入圖片描述


此處收斂路徑為何是震盪的,而不是直接向最低點去呢?
如圖所示:
在這裡插入圖片描述
我想應該是因為在某點處,決定下一步往哪個方向走時,怎麼選擇方向呢?該點在一個三維影象上,所以該點的360°方向上都有切線,我們選擇的方向就是切線斜率最大的那個方向。形象一點說,如下圖,假設一個人站在圖中黑點處,地域面積太大了,他的視野範圍就只能在圖中黑色圓圈內,他在圈內,在當前位置處,能看到的坡度最陡的方向自然就是大紅色箭頭標記的方向。
在這裡插入圖片描述
所以,在代價函式引數的比例過大的情況下,一種有效的方法是進行特徵縮放。
具體來說,可以把特徵x1定義為房子面積/2000,特徵x2定義為房間數/5,這樣特徵值x1,x2的範圍就都在[0,1]內了。此時代價函式的輪廓圖就是一個規整的圓,梯度下降法很快就能找到一條通往最小值的捷徑。所以,通過最小值縮放,就能抵消掉特徵值的範圍問題。
在這裡插入圖片描述
總體來說,我們使用特徵縮放的目的就是將特徵的取值約束到[-1,+1]範圍內。
特徵x0總是取值為1,因此其總滿足x0∈[-1,+1]。至於其他特徵,可能需要對其進行某種處理(比如,各自除以不同的數),來使其處於同一範圍內。
注意:-1、+1這兩個數,並不是很重要。
比如特徵x1∈(0,3),而特徵x2∈(-1,2),這也沒關係,因為這也非常接近[-1,1]的範圍了。若特徵x3∈[-100,+100],那x3與[-1,+1]的範圍就非常遠了,已經是O(10^2)的數量級差距了。X3很可能是一個縮放的不太好的特徵。當然,若特徵x4∈(-0.00001,+0.00001),也是不合適的。
但是用太過擔心,特徵值的範圍太大還是太小,因為只要他們足夠接近,那麼梯度下降法就能正常運行了。

在特徵縮放中,除了將特徵除以最大值,也可以進行均值歸一化(mean normalization)。均值歸一化是指,對於特徵xi,可以用xi-ui來替換它,來讓所有特徵的平均值為0。

對於x0=1,不需要進行此處理,因為其值恆等於1,均值不可能等於0。對於其他特徵,例如代表房子面積的特徵x1∈(0,2000),假如房子面積的特徵值,其平均值為1000,那麼可以將x1進行如下處理。再例如,房間含有的臥室數是[0,5],平均一套房子有兩間臥室,那麼可以像下面這樣歸一化x2。
在這裡插入圖片描述
像這樣,便可以算出新的特徵x1、x2,這樣它們的範圍就可以在[-0.5,0.5]之間。
更一般的,均值歸一化可以表示為如下公式:
在這裡插入圖片描述
其中x1是特徵,u1是訓練集中所有樣例的特徵x1的平均值。S1是x1的範圍,即
在這裡插入圖片描述
也可以使用標準差作為S1。
特徵縮放不需要太精確,只是為了使梯度下降法收斂得快一些。

四、Gradient Descent in Practice II-Learing Rate— 梯度下降法 實踐2 學習速率

本節我們討論另一種梯度下降演算法的優化方式——學習速率
在這裡插入圖片描述
為了判斷梯度下降演算法是否收斂,可以畫出J(θ)隨迭代步數變化的曲線,橫座標是梯度下降演算法的迭代步數(注意,不是引數θ),縱座標是代價函式J(θ)的值,圖中的每一點都對應一個θ值。可以看出,在迭代步數300~400之間,代價函式幾乎沒有在下降,所以,可以說代價函式J(θ)在迭代步數等於400時收斂。
這幅圖可以幫助我們看出代價函式是否收斂:
在這裡插入圖片描述
另外,“J(θ)—迭代步數”曲線也可以在演算法沒有正確執行時,提前發出警告。例如,若“J(θ)—迭代步數”曲線出現下面這樣的情況,即J(θ)是隨迭代步數的增加而增長的,那麼很明顯,此時梯度下降演算法沒有正確執行。這通常意味著應該使用較小的學習率α。

如果J(θ)在上升,那麼最常見的原因就是α過大,導致迭代時容易錯開最小值,以最小值為中心,反覆迭代,不斷增大。很明顯,解決辦法就是減小學習率α。當然也有可能是程式碼的錯誤,所以需要仔細檢查。
也可能出現左下角所示的情況,即J(θ)不斷減小、增大,呈波浪狀變化,出現這種情況的原因也很可能是α過大,解決辦法自然也是減小α了。

但這並不是說α越小越好,因為若α過小,可能導致梯度下降演算法收斂的非常慢。
在這裡插入圖片描述
總結一下,學習率α太小,可能導致梯度下降演算法收斂的非常慢;學習率α太大,可能導致梯度下降演算法在某幾次迭代時不下降,反而增加,甚至不能收斂。當然α太大,也有可能導致演算法收斂的很慢的。而為了弄清到底發生了什麼,可以畫出J(θ)隨迭代步數變化的曲線。
ps:本人在處理學習率選擇問題時使用的方法是每次迭代過程都輸出更新前後的代價函式值,觀察迭代前後代價函式是否減小,若減小則試著增加學習率;若增大則試著減小學習率,最終找到合適的學習率(實現部分的部落格會詳細講解)
在實際工作中,可以嘗試多選幾個α值試試,分別畫出其“J(θ)—迭代步數”曲線,選擇使演算法收斂最快的α作為最終值。通常,可以選擇α的值,間隔3倍。例如… 0.001、0.003、0.01、0.03、0.1、0.3、1,通常先找到兩個端點值,例如不能比1再大,不能比0.001再小。通常選取,這組數中儘可能大的值,例如最大的值1,或者比最大值1略小一點的0.3。

五 Features and Polynomial Regression ——特徵和多項式迴歸

特徵為非一次特徵,可以將該特徵被一次特徵代替,即多項式迴歸可以用線性迴歸來擬合
以預測房價為例,假設有兩個特徵,分別是房子臨街的寬度(frontage)和縱向深度(depth)。其中臨街寬度其實就是房子佔地面積的寬度,縱向深度也就是佔地面積的長度。建立下面的線性迴歸模型,其中臨街寬度是第一個特徵,縱深寬度是第二個特徵。
在這裡插入圖片描述
除此之外還有其他的特徵選擇嗎?
當然有。不過此節主要處理的是多項式迴歸。
假如有如下住房價格資料集:
在這裡插入圖片描述
以下假設不合理:
二次函式後半部分會隨著土地面積增加而減小
單純的根式函式後半部分增加幅度太小
所以,用三次函式擬合比較合理:
我們現在討論的是預測房子的價格,房價 =θ0 +θ1*(房子面積) + θ2*(房子面積)^2 + θ3*(房子面積)^3,即
房價 =θ0 +θ1*(size) + θ2*(size)^2 + θ3*(size)^3 —— 模型公式。因此該式子與三次模型式子(綠框內)是相等的。
為了將假設公式與三次模型公式對應起來,使
x1 = (size)

x2 = (size)^2

x3 = (size)^3

這種思想總結起來就是:將特徵像上面這樣設定,再應用線性迴歸(hθ(x) = θ0 +θ1x1 + θ2x2 + θ3x3)的方法,就可以
擬合三次函式模型。
如果像這樣(x1 = ,x2 = ,x3 = )選擇資料,那麼特徵值的歸一化就更為重要了。因為
size ∈ [0,10^3] ,
size^2 ∈[1,10^6],
size^3 ∈[1,10^9],這三個特徵的範圍有很大不同。

在這裡插入圖片描述
此外,還可用以下形式來擬合:
在這裡插入圖片描述

六 正規方程——Normal Equation

正規方程法(又稱閉合解),是一種區別於梯度下降法(迭代方法)的直接解法。
舉例:
在這裡插入圖片描述
下面我們來討論以下一般情況下的操作細節:
在一般情況下,假設有m個訓練樣本,每個樣本有n個特徵變數。所以每一個訓練樣本都有一個與之相對應的n+1維的特徵向量。
在這裡插入圖片描述
接下來我們便構造特徵矩陣X
在這裡插入圖片描述
因為:
在這裡插入圖片描述
所以:
在這裡插入圖片描述
關於此公式的推導及正規方程的相關細節參照

以上便是多變數線性迴歸的理論部分講解。