機器學習筆記(吳恩達)——多變量線性迴歸

多變量線性迴歸

在這裏插入圖片描述
模型的特徵爲(x1,x2,...,xn)(x_1,x_2,...,x_n)

符號說明

nn表示特徵的數量
x(i)x^{(i)}代表第ii個實例,即特徵矩陣中第ii
因此多變量的假設hh爲:
hθ(x)=θ0x0+θ1x1+θ2x2+...+θnxnh_{\theta} \left( x \right)={\theta_{0}}{x_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}}+...+{\theta_{n}}{x_{n}}
其中x0=1x_0=1
此時特徵矩陣$X$維度是m(n+1)m*(n+1),上述公式簡化爲:
hθ(x)=θTX h_\theta(x)=\theta^TX

多變量梯度下降

在多變量線性迴歸中,我們也構建一個代價函數,則這個代價函數是所有建模誤差的平方和,即:
J(θ0,θ1...θn)=12mi=1m(hθ(x(i))y(i))2J\left( {\theta_{0}},{\theta_{1}}...{\theta_{n}} \right)=\frac{1}{2m}\sum\limits_{i=1}^{m}{{{\left( h_{\theta} \left({x}^{\left( i \right)} \right)-{y}^{\left( i \right)} \right)}^{2}}}
針對多變量梯度下降與單變量機理一樣,挨個對每個θ\theta求導
計算代價函數
J(θ)=12mi=1m(hθ(x(i))y(i))2 J\left( \theta \right)=\frac{1}{2m}\sum\limits_{i=1}^{m}{{{\left( {h_{\theta}}\left( {x^{(i)}} \right)-{y^{(i)}} \right)}^{2}}}
其中:hθ(x)=θTX=θ0x0+θ1x1+θ2x2+...+θnxn{h_{\theta}}\left( x \right)={\theta^{T}}X={\theta_{0}}{x_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}}+...+{\theta_{n}}{x_{n}}
引入x0=1x_0=1,得到通用的公式如下:
θj:=θjα1mi=1m((hθ(x(i))y(i))xj(i))\theta_{j}:=\theta_{j}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) \cdot x_{j}^{(i)}\right)

特徵縮放

最簡單的方法:
xn=xnunsn x_n=\frac{x_n-u_n}{s_n}
原始每個值減均值除標準差

學習率

在這裏插入圖片描述

梯度下降算法的每次迭代受到學習率的影響,如果學習率aa過小,則達到收斂所需的迭代次數會非常高;如果學習率aa過大,每次迭代可能不會減小代價函數,可能會越過局部最小值導致無法收斂。
通常可以考慮嘗試些學習率:
α=0.010.030.10.31310\alpha=0.01,0.03,0.1,0.3,1,3,10
分別擴大三倍

正規方程

正規方程是通過求解下面的方程來找出使得代價函數最小的參數的:
θjJ(θj)=0\frac{\partial}{\partial{\theta_{j}}}J\left( {\theta_{j}} \right)=0
假設我們的訓練集特徵矩陣爲 XX(包含了 x0=1{{x}_{0}}=1)並且我們的訓練集結果爲向量 yy,則利用正規方程解出向量
θ=(XTX)1XTy\theta ={{\left( {X^T}X \right)}^{-1}}{X^{T}}y
上標T代表矩陣轉置,上標-1 代表矩陣的逆。
設矩陣A=XTXA={X^{T}}X,則:(XTX)1=A1{{\left( {X^T}X \right)}^{-1}}={A^{-1}}
梯度下降與正規方程的比較:

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

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

正規方程不可逆性及公式推導

θ=(XTX)1XTy\theta=(X^TX)^{-1}X^Ty
如果(XTX)(X^TX)不存在逆矩陣,及它是一個奇異矩陣,那麼我們要用到僞逆
導致不可逆的原因:
在你想用大量的特徵值,嘗試實踐你的學習算法的時候,可能會導致矩陣XXX'X的結果是不可逆的。 具體地說,在mm小於或等於n的時候,例如,有mm等於10個的訓練樣本也有nn等於100的特徵數量。要找到適合的(n+1)(n +1) 維參數矢量θ\theta,這將會變成一個101維的矢量,嘗試從10個訓練樣本中找到滿足101個參數的值,這工作可能會讓你花上一陣子時間,但這並不總是一個好主意。因爲,正如我們所看到你只有10個樣本,以適應這100或101個參數,數據還是有些少
推導過程:
J(θ)=12mi=1m(hθ(x(i))y(i))2 J\left( \theta \right)=\frac{1}{2m}\sum\limits_{i=1}^{m}{{{\left( {h_{\theta}}\left( {x^{(i)}} \right)-{y^{(i)}} \right)}^{2}}}
其中:hθ(x)=θTX=θ0x0+θ1x1+θ2x2+...+θnxn{h_{\theta}}\left( x \right)={\theta^{T}}X={\theta_{0}}{x_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}}+...+{\theta_{n}}{x_{n}}
XX維度是mnm*n
θ\thetan1n*1
yym1m*1
將向量形式轉爲矩陣形式如下:
J(θ)=12(Xθy)T(Xθy)=12(θTXTyT)(Xθy)=12(θTXTXθθTXTyyTXθyTyy) J(\theta)=\frac{1}{2}(X\theta-y)^T(X\theta-y)\\ =\frac{1}{2}(\theta^TX^T-y^T)(X\theta-y)\\ =\frac{1}{2}(\theta^TXTX\theta-\theta^TX^Ty-y^TX\theta-y^Tyy)
接下來對J(θ)J(\theta )偏導,需要用到以下幾個矩陣的求導法則:
dABdB=AT\frac{dAB}{dB}={{A}^{T}}dXTAXdX=2AX\frac{d{{X}^{T}}AX}{dX}=2AXdXTAdX=A\frac{dX^TA}{dX}=A
有如下:
d(θTXTXθ)dθ=2XTXθ\frac{d(\theta^TXTX\theta)}{d\theta}=2X^TX\thetad(θTXTy)dθ=XTy\frac{d(\theta^TX^Ty)}{d\theta}=X^Ty
因此
J(θ)θ=12(2XTXθXTy(yTX)T0)=12(2XTXθXTyXTy0)=XTXθXTy\frac{\partial J\left( \theta \right)}{\partial \theta }=\frac{1}{2}\left(2{{X}^{T}}X\theta -{{X}^{T}}y -{}({{y}^{T}}X )^{T}-0 \right)\\ =\frac{1}{2}\left(2{{X}^{T}}X\theta -{{X}^{T}}y -{{X}^{T}}y -0 \right)\\ ​={{X}^{T}}X\theta -{{X}^{T}}y

J(θ)θ=0\frac{\partial J\left( \theta \right)}{\partial \theta }=0
則有θ=(XTX)1XTy\theta ={{\left( {X^{T}}X \right)}^{-1}}{X^{T}}y

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章