吳恩達機器學習筆記2

目錄

多變量線性迴歸(Linear Regression with Multiple Variables)

多維特徵

符號說明

多變量梯度下降

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

梯度下降法實踐2-學習率

特徵和多項式迴歸

正規方程

正規方程與梯度下降比較

正規方程的實現

正規方程及不可逆性


多變量線性迴歸(Linear Regression with Multiple Variables)

多維特徵

在之前房價預測的基礎上,現在我們對房價模型增加更多的特徵,例如房間數樓層等,構成一個含有多個變量的模型,模型中的特徵爲\small (x_1,x_2,...,x_n)

符號說明

\small n 特徵的數量
\small x^{(i)} 一個向量(vector),代表第\small i個訓練實例,是特徵矩陣中的第行
\small x^{(i)}_j 代表特徵矩陣中第\small i行的第\small j個特徵,即第\small i個訓練實例的第\small j個特徵

支持多變量的假設\small h表示爲

                                                              \small h_\theta (x) = \theta _0+\theta _1x_1+\theta _2x_2+...+\theta _nx_n

這個公式中有\small n+1個參數和\small n個變量,爲了使得公式能夠簡化一些,引入\small x_0=1,則公式轉化爲:

                                                              \small h_\theta (x) = \theta _0x_0+\theta _1x_1+\theta _2x_2+...+\theta _nx_n

這樣是爲了方便矩陣運算

此時模型中的參數是一個\small n+1維的向量,任何一個訓練實例也都是\small n+1維的向量,特徵矩陣的\small X維度是\small m \times (n+1) 。因此公式可以簡化爲:\small h_\theta (x)=\theta ^TX,其中上標\small T代表矩陣轉置。

多變量梯度下降

與單變量線性迴歸類似,在多變量線性迴歸中,我們也構建一個代價函數,則這個代價函數是所有建模誤差的平方和,即:

                                                             \small J(\theta_1 ,\theta_2 ,...,\theta_n )=\frac{1}{2m} \sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2

其中,

                                                             \small h_\theta (x)=\theta ^TX= \theta _0+\theta _1x_1+\theta _2x_2+...+\theta _nx_n

我們的目標和單變量線性迴歸問題中一樣,是要找出使得代價函數最小的一系列參數。 多變量線性迴歸的批量梯度下降算法爲:

即:

求導數後得到:

\small n>=1時,

\small {{\theta }_{0}}:={{\theta }_{0}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}})}x_{0}^{(i)}

\small {{\theta }_{1}}:={{\theta }_{1}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}})}x_{1}^{(i)}

\small {{\theta }_{2}}:={{\theta }_{2}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}})}x_{2}^{(i)}

我們開始隨機選擇一系列的參數值,計算所有的預測結果後,再給所有的參數一個新的值,如此循環直到收斂。

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

在我們面對多維特徵問題的時候,我們要保證這些特徵都具有相近的尺度,這將幫助梯度下降算法更快地收斂。

以房價問題爲例,假設我們使用兩個特徵,房屋的尺寸和房間的數量,尺寸的值爲 0-2000平方英尺,而房間數量的值則是0-5,以兩個參數分別爲橫縱座標,繪製代價函數的等高線圖能,看出圖像會顯得很扁,梯度下降算法需要非常多次的迭代才能收斂。

解決的方法是嘗試將所有特徵的尺度都儘量縮放到-1到1之間。最簡單的方法是令\small x_n=\frac{x_n-\mu _n}{s_n},其中\small \mu_n是平均值,\small s_n是標準差。

梯度下降法實踐2-學習率

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

可以考慮下面的一組學習率:

                                                                       \small \alpha =0.01,0.03,0.3,1,3,10

特徵和多項式迴歸

如房價預測問題,

                                                                  \small h_\theta (x)=\theta_0 +\theta_1\times frontage+\theta_2\times depth

其中\small {x_{1}}=frontage(臨街寬度),\small x_{2}}=depth(縱向深度),\small x=frontage*depth=area(面積),則\small {h_{\theta}}\left( x \right)={\theta_{0}}+{\theta_{1}}x.線性迴歸並不適用於所有數據,有時我們需要曲線來適應我們的數據,比如一個二次方模型:\small h_{\theta}\left( x \right)={\theta_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}^2},或者三次方模型\small h_{\theta}\left( x \right)={\theta_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}^2}+{\theta_{3}}{x_{3}^3}

根據函數圖形特性,我們還可以使:

                                                                            \small {{{h}}_{\theta}}(x)={{\theta }_{0}}\text{+}{{\theta }_{1}}(size)+{{\theta}_{2}}{{(size)}^{2}} 

或者:

                                                                            \small {{{h}}_{\theta}}(x)={{\theta }_{0}}\text{+}{{\theta }_{1}}(size)+{{\theta }_{2}}\sqrt{size}

注意:如果我們採用多項式迴歸模型,在運行梯度下降算法前,特徵縮放非常有必要。

正規方程

目前爲止一直在學習梯度下降算法。但對於某些線性迴歸問題,正規方程方法是更好的解決方案。

例如對於下面的例子:

正規方程就是使用求導的方式來求最小的參數的,這一點和中學學的類似,即 \frac{\partial }{\partial \theta _j}J(\theta _i)=0。假設我們的訓練集特徵矩陣爲X (包含了x_0=1)並且我們的訓練集結果爲向量y,則利用正規方程解出向量

                                                                             \theta =(X^TX)^{-1}X^Ty

如下圖例子:

注意:對於那些不可逆的矩陣(通常是因爲特徵之間不獨立,如同時包含英尺爲單位的尺寸和米爲單位的尺寸兩個特徵,也有可能是特徵數量大於訓練集的數量),正規方程方法是不能用的。

正規方程與梯度下降比較

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

正規方程的實現

import numpy as np
    
 def normalEqn(X, y):
    
   theta = np.linalg.inv(X.T@X)@X.T@y #X.T@X等價於X.T.dot(X)
    
   return theta

正規方程及不可逆性

對於X^TX結果不可逆原因是什麼?怎麼辦呢?

  • 例如,在預測住房價格時,如果x_1是以英尺爲尺寸規格計算的房子,x_2是以平方米爲尺寸規格計算的房子,同時,你也知道1米等於3.28英尺 ( 四捨五入到兩位小數 ),這樣,你的這兩個特徵值將始終滿足約束:x_1=x_2\ast (3.28)^2。 實際上,你可以用這樣的一個線性方程,來展示那兩個相關聯的特徵值,矩陣X^TX將是不可逆的。
  • 在你想用大量的特徵值,嘗試實踐你的學習算法的時候,可能會導致矩陣X^TX的結果是不可逆的。 具體地說,在m小於或等於n的時候,例如,有m等於10個的訓練樣本也有n等於100的特徵數量。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章