吳恩達機器學習個人筆記(一)-線性迴歸

1單變量線性迴歸(Linear Regression with One Variable)

1.1 假設方程(Hypothesis)

       線性迴歸屬於監督學習,大致是根據給定的數據集訓練出一個線性模型,構造成功後,輸入一個新的數據後,會輸出一個確卻的值。比如預測一個地區的房價,給定一個數據集包含房子的大小和房價,當需要預測一個房子的價格時,模型就會預測出一個確卻的值。迴歸一詞指的是,我們根據之前的數據預測出一個準確的輸出值,對於這個例子就是價格,同時,還有另一種最常見的監督學習方式,叫做分類問題,當我們想要預測離散的輸出值,例如,我們正在尋找癌症腫瘤,並想要確定腫瘤是良性的還是惡性的,這就是 0/1 離散輸出的問題。線性迴歸的假設方程爲

                                                               h_{\theta }\left ( x \right )=\theta _{0}+\theta _{1}x

\theta _{0} 和 \theta _{1} 都是具體的值,後面一系列工作就是求出 \theta _{0} 和 \theta _{1} 這兩個合適的值

1.2 代價函數(Cost Function

      代價函數也被稱作平方誤差函數,有時也被稱爲平方誤差代價函數。我們之所以要求出誤差的平方和,是因爲誤差平方代價函數,對於大多數問題,特別是迴歸問題,都是一個合理的選擇。代價函數依個人理解爲一個標準,即評判我們選擇的具體的線性方程的誤差大小。由於上述假設方程我們所未知的是 \theta _{0} 和 \theta _{1} ,因此要選擇合適的\theta _{0} 和 \theta _{1}使得代價函數最小,定義如下 

                                                     

既然目的爲尋找合適的\theta _{0} 和 \theta _{1}使得代價函數最小,那麼就要有一種算法來選擇\theta _{0} 和 \theta _{1},那就是梯度下降算法。

1.3 梯度下降(Gradient Descent)

      梯度下降是一個用來求函數最小值的算法,我們將使用梯度下降算法來求出代價函數j\left ( \theta _{0},\theta _{1} \right ) 的最小值。梯度下降是一個迭代的過程,我們不斷進行迭代,知道找到合適的值。梯度下降的公式爲

                                                  

       其中\alpha是學習率(learning rate),它決定了我們沿着能讓代價函數下降程度最大的方向向下邁出的步子有多大,這是我們自己決定的,太小或太大都不行。如果太小那麼迭代次數就會過多,相反太大的話就可能想不好,錯過局部最小值。梯度下降算法如下所示

                                   

      我們即不斷更新\theta _{0} 和 \theta _{1},直到收斂。在梯度下降算法中,還有一個更微妙的問題,梯度下降中,我們要更新\theta _{0} 和 \theta _{1} ,當j=0j=1時,會產生更新,所以你將更新j\left (\theta _{0} \right )j\left (\theta _{1} \right )。實現梯度下降算法的微妙之處是,在這個表達式中,如果你要更新這個等式,你需要同時更新\theta _{0} 和 \theta _{1}

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

      多元線性迴歸的假設方程如下所示:

                                               h_{\theta }\left ( x \right )=\theta _{0}+\theta _{1}x _{1}+\theta _{2}x _{2}+\theta _{3}x _{3}+\cdots +\theta _{n}x _{1}

      相比較於之前的單元線性方程  h_{\theta }\left ( x \right )=\theta _{0}+\theta _{1}x _{1} 後面多有幾個\theta x的組合,後續x_{i}\left ( i= 1,2,3\cdots \right )表示數據集的多個特徵。比如預測房屋價格,那麼這幾個特徵可能爲房屋的大小,房屋所處地區和房屋的年紀等。

爲了簡化與更方便的用矩陣表示上述多元線性迴歸的方程,將\theta與x各用矩陣表述,並且兩個矩陣相乘即爲h_{\theta }\left ( x \right )

在此假設\theta = \begin{bmatrix} \theta _{0}\\ \theta _{1}\\ \theta _{2}\\ \vdots \\ \theta _{n}\end{bmatrix}   ,x= \begin{bmatrix} x_{0}\\ x_{1}\\ x_{2}\\ \vdots \\ x_{n}\end{bmatrix}  最重要的是  x_{0}=1,這樣\theta 和 x 的元素個數即爲一致。那麼 h_{\theta }\left ( x \right ) 就可以用 \theta 的轉置矩陣 \theta ^{T}x 相乘得到即

                                                                h_{\theta }\left ( x \right )= \theta ^{T}x

2.1 多元線性迴歸方程的梯度下降算法

       之前的代價函數在多元下爲

                               J\left (\theta _{0},\theta _{1},\cdots ,\theta _{n}\right )= \frac{1}{2m}\sum_{i=1}^{m} \left ( h_{\theta }\left ( x^{i} \right ) -y^{i}\right )^{2}

          此時 \left ( \theta _{0}, \theta _{1},\cdots , \theta _{n} \right ) 爲一個 n+1 列的矩陣\theta ,那麼各個 \theta _{i} 的更新流程如下所示

                         

  總的來講即爲下列公式

                

3 梯度下降算法中的特徵縮放

      特徵縮放的目的是使特徵值的取值在一個相似的範圍內。假設預測房屋的價格,房屋有兩個特徵,大小和房間數量。那麼大小一般取值在 0-1000,而房間數量一般在0-10之內。這兩者取值的範圍相差太大,那麼梯度下降算法就會很艱難的進行,這並不是想要的結果,所以我們將兩個特徵值的取值範圍變成相似。

        最簡單的方法是令           x_{n}=\frac{x_{n}-\mu _{n}}{s_{n}},其中 \mu _{n}是平均值,x_{n}是標準差一般爲取值的範圍

4 學習率的選擇

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

      通常可以考慮嘗試些學習率:\alpha =0.01,0.03,0.1,0.3,1,3

5 正規方程(Normal Equation)

      對於某些線性迴歸問題,正規方程方法是更好的解決方案。正規方程是通過求解下面的方程來找出使得代價函數最小的參數的   

                                                         \frac{\partial }{\partial \theta_{j}}J\left ( \theta _{j}\right )=0

    假設我們的訓練集特徵矩陣爲X(包含了x_{0}=1),並且我們的訓練集結果爲向量y,則利用正規方程解出向量    \theta =\left ( X^{T}X \right )^{-1}X^{T}y上標T代表矩陣轉置,上標-1 代表矩陣的逆。如下圖所示

                     

運用正規方程方法求解參數

                            

      總結一下,只要特徵變量的數目並不大,標準方程是一個很好的計算參數的替代方法。具體地說,只要特徵變量數量小於一萬,我通常使用標準方程法,而不使用梯度下降法。對於那些更復雜的學習算法,我們將不得不仍然使用梯度下降法。因此,梯度下降法是一個非常有用的算法,可以用在有大量特徵變量的線性迴歸問題。對於這個特定的線性迴歸模型,標準方程法是一個比梯度下降法更快的替代算法

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