多變量線性迴歸
模型的特徵爲(x1,x2,...,xn)
符號說明
n表示特徵的數量
x(i)代表第i個實例,即特徵矩陣中第i行
因此多變量的假設h爲:
hθ(x)=θ0x0+θ1x1+θ2x2+...+θnxn
其中x0=1
此時特徵矩陣$X$維度是m∗(n+1),上述公式簡化爲:
hθ(x)=θTX
多變量梯度下降
在多變量線性迴歸中,我們也構建一個代價函數,則這個代價函數是所有建模誤差的平方和,即:
J(θ0,θ1...θn)=2m1i=1∑m(hθ(x(i))−y(i))2
針對多變量梯度下降與單變量機理一樣,挨個對每個θ求導
計算代價函數
J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2
其中:hθ(x)=θTX=θ0x0+θ1x1+θ2x2+...+θnxn
引入x0=1,得到通用的公式如下:
θj:=θj−αm1i=1∑m((hθ(x(i))−y(i))⋅xj(i))
特徵縮放
最簡單的方法:
xn=snxn−un
原始每個值減均值除標準差
學習率
梯度下降算法的每次迭代受到學習率的影響,如果學習率a過小,則達到收斂所需的迭代次數會非常高;如果學習率a過大,每次迭代可能不會減小代價函數,可能會越過局部最小值導致無法收斂。
通常可以考慮嘗試些學習率:
α=0.01,0.03,0.1,0.3,1,3,10
分別擴大三倍
正規方程
正規方程是通過求解下面的方程來找出使得代價函數最小的參數的:
∂θj∂J(θj)=0
假設我們的訓練集特徵矩陣爲 X(包含了 x0=1)並且我們的訓練集結果爲向量 y,則利用正規方程解出向量
θ=(XTX)−1XTy
上標T代表矩陣轉置,上標-1 代表矩陣的逆。
設矩陣A=XTX,則:(XTX)−1=A−1
梯度下降與正規方程的比較:
梯度下降 |
正規方程 |
需要選擇學習率α |
不需要 |
需要多次迭代 |
一次運算得出 |
當特徵數量n大時也能較好適用 |
需要計算(XTX)−1 如果特徵數量n較大則運算代價大,因爲矩陣逆的計算時間複雜度爲O(n3),通常來說當n小於10000 時還是可以接受的 |
適用於各種類型的模型 |
只適用於線性模型,不適合邏輯迴歸模型等其他模型 |
總結一下,只要特徵變量的數目並不大,標準方程是一個很好的計算參數$\theta $的替代方法。具體地說,只要特徵變量數量小於一萬,我通常使用標準方程法,而不使用梯度下降法。
正規方程不可逆性及公式推導
θ=(XTX)−1XTy
如果(XTX)不存在逆矩陣,及它是一個奇異矩陣,那麼我們要用到僞逆
導致不可逆的原因:
在你想用大量的特徵值,嘗試實踐你的學習算法的時候,可能會導致矩陣X′X的結果是不可逆的。 具體地說,在m小於或等於n的時候,例如,有m等於10個的訓練樣本也有n等於100的特徵數量。要找到適合的(n+1) 維參數矢量θ,這將會變成一個101維的矢量,嘗試從10個訓練樣本中找到滿足101個參數的值,這工作可能會讓你花上一陣子時間,但這並不總是一個好主意。因爲,正如我們所看到你只有10個樣本,以適應這100或101個參數,數據還是有些少
推導過程:
J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2
其中:hθ(x)=θTX=θ0x0+θ1x1+θ2x2+...+θnxn
X維度是m∗n
θ是n∗1
y是m∗1
將向量形式轉爲矩陣形式如下:
J(θ)=21(Xθ−y)T(Xθ−y)=21(θTXT−yT)(Xθ−y)=21(θTXTXθ−θTXTy−yTXθ−yTyy)
接下來對J(θ)偏導,需要用到以下幾個矩陣的求導法則:
dBdAB=ATdXdXTAX=2AXdXdXTA=A
有如下:
dθd(θTXTXθ)=2XTXθdθd(θTXTy)=XTy
因此
∂θ∂J(θ)=21(2XTXθ−XTy−(yTX)T−0)=21(2XTXθ−XTy−XTy−0)=XTXθ−XTy
令
∂θ∂J(θ)=0
則有θ=(XTX)−1XTy