【斯坦福大學-機器學習】4.多變量線性迴歸

【斯坦福大學-機器學習】4.多變量線性迴歸


Author:kevinelstri
DateTime:2017/3/22


4.1 多維特徵

目前爲止,所討論的都是單變量/特徵的迴歸模型,也就是在對房價模型進行預測的過程中,只存在一個特徵:面積

下面,將構建一個含有多個變量的模型,來進行多特徵迴歸分析,模型的特徵爲(x1,x2,...,xn)

n 代表特徵的數量
x(i) 代表第i個訓練實例,是特徵矩陣中的第i行,是一個向量(vector)。
x(i)j 代表矩陣中第i行的第j個特徵,也就是第i個訓練實例的第j個特徵。
支持多變量的假設h表示爲:hθ(x)=θ0+θ1(x1)+θ2(x2)+...+θn(xn)
在這個公式中,有n+1個參數和n個變量,爲了使公式更加簡化,引入x0=1 ,則公式爲:hθ(x)=θ0(x0)+θ1(x1)+θ2(x2)+...+θn(xn)
此時模型的參數是一個n+1維的向量,任何一個訓練實例也就是n+1向量,特徵矩陣X的維度是m(n+1) ,因此公式可以簡化爲:hθ(x)=θTX

4.2 多變量梯度下降

與單變量線性迴歸類似,在多變量線性迴歸中,我們也構建一個代價函數,則這個代價函數是所有建模誤差的平方和,即:J(θ0,θ1,...,θn)=12mmi=1(hθ(x(i)y(i)))2
其中:hθ(x)=θTX=θ0x0+θ1x1+...+θnxn
我們的目標和單變量線性迴歸問題是一樣的,是要找出使得代價函數最小的一系列參數,多變量線性迴歸的批量梯度下降算法爲:

Repeat{
θj:=θjαθjJ(θ0,θ1,...,θn)
}

即:
Repeat{
θj:=θjαθj12mmi=1(hθ(x(i))y(i))2
}
求導後得到:
Repeat{
θj:=θjα1mmi=1((hθ(x(i))y(i))x(i)j)
}
n>=1 時,
θ0:=θ0α1mmi=1(hθ(x(i))y(i))x(i)0
θ1:=θ1α1mmi=1(hθ(x(i))y(i))x(i)1
θ2:=θ2α1mmi=1(hθ(x(i))y(i))x(i)2

4.3 梯度下降法實踐 1-特徵縮放

對於多維特徵問題,只有保證特徵具有相似的尺度,梯度下降算法才能更快的收斂。
以房價爲例,假設使用兩個特徵,房屋的尺寸和房間的數量,尺寸的值爲0-2000平方英尺,而房間數量的值則是0-5,以兩個參數分別爲橫縱座標,繪製代價函數的等高線圖:

由圖中可以知道,此時等高線圖很扁,梯度下降算法需要使用多次迭代才能收斂,解決的方法就是嘗試將所有特徵的尺度都儘量縮放到-1到1之間,如右圖:xn=xnμnsn ,其中,μn 是平均值,sn 是標準差。

4.4 梯度下降法實戰 2-學習率

梯度下降算法收斂所需要的迭代次數根據模型的不同而不同,是不能預知的,所以可以通過繪製迭代次數和代價函數的圖表來觀測算法在何時趨於收斂。

梯度下降算法的每次迭代都受到學習率的影響,如果學習率α 過小,則達到收斂所需的迭代次數會非常高,如果學習率α 過大,每次迭代可能不會減小代價函數,可能會越過局部最小值導致無法收斂。

4.5 特徵和多項式迴歸


x1=frontage(臨街寬度),x2=depth(縱向深度),x=frontage*depth=area(面積),則:hθ(x)=θ0+θ1x
線性迴歸並不適用於所有數據,有時我們需要曲線來適應我們的數據,比如一個二次方模型:hθ(x)=θ0+θ1x1+θ2x22+θ3x33

hθ(x)=θ0+θ1(size)+θ2(size)2
hθ(x)=θ0+θ1(size)+θ2(size)

4.6 正規方程

這裏寫圖片描述
正規方程是通過求解方程來找出使得代價函數最小的參數的:θjJ(θj)=0
假設我們的訓練集特徵矩陣X包含了x0=1 ,並且我們的訓練集結果爲向量y,則利用正規方程解出向量θ=(XTX)1XTy
上標T代表矩陣轉置,上標-1代表矩陣的逆。
設矩陣A=XTX ,則:(XTX)1=A1
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

梯度下降 正規方程
需要選擇學習率α 不需要
需要多次迭代 一次運算得出
當特徵數量n大時也能較好適用 需要計算(XTX)1 ,如果特徵數量n較大則運算代價大,因爲矩陣逆的計算時間複雜度爲O(n2) ,通常說當n小於10000時,還是可以接受的
適用於各種類型的模型 只適用於線性模型,不適合邏輯迴歸模型等其他模型

只要特徵變量的數目並不大,標準方程是一個很好的計算參數 θ 的替代方法。具體地說,只要特徵變量數量小於10000,我通常使用標準方程法,而不使用梯度下降法。

4.7 正規方程及不可逆性

對於問題:θ=(XTX)X1y
當計算θ=inv(XX)Xy ,那對於矩陣XX 的結果是不可逆時,怎麼辦?
不可逆矩陣爲奇異矩陣。

Octave中,有兩個函數來求解矩陣的逆,一個被稱爲pinv(),另一個是inv(),這兩者之間的差異是計算過程上的差異。一個是所謂的僞逆,一個被稱爲逆。
pinv()函數對於那些即使是不可逆的矩陣,也可以計算出結果。
所以在Octave中,如果矩陣是不可逆的,那麼就使用僞逆函數pinv()來實現。

發佈了233 篇原創文章 · 獲贊 800 · 訪問量 97萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章