吳恩達Coursera機器學習 - Chapter 2 單變量線性迴歸

Chapter 2 - 單變量線性迴歸(Linear Regression with One Variable)

定義

單變量 數據集或假設函數的特徵值只有一個
線性迴歸 求解迴歸問題的方程是線性方程(自變量僅爲一次)

模型創建

假設函數

如下圖所示的訓練集爲例:算法

訓練集.png

假設:
  • m表明訓練集中實例的數量(4個)
  • x 表明特徵/輸入變量(大小/平方尺)
  • y 表明目標變量/輸出變量(價格/1000美圓)
  • (x, y) 表明訓練集中的實例
  • (x (i), y (i)) 表明第i個觀察實例(如i=2時,爲(1416, 232))
  • h表明學習算法的函數,也稱爲假設(hypothesis)
    對於單變量線性迴歸問題,咱們通常將其假設爲:$h_\theta(x)=\theta_0+\theta_1x$

那麼問題來了,假設了$h(x)$函數後,怎麼求θ組合($\theta_{0}$和$\theta_{1}$)呢?數組

通常而言,思想是將現有的$x$集代入$h(x)$,比較各$y$值與$h(x)$值之間的偏差(建模偏差)。在不斷調整$θ$組合後,找到使得總偏差最小的那個θ組合。而衡量偏差的方法是創建代價函數。(可能講解的不規範,見諒 ̄□ ̄||)機器學習

代價函數(平方偏差函數)

$$ J\left( \theta_{0}\ ,\theta_{1}\ \right) = \frac{1}{2m}\sum_{i = 1}^{m}{\left(h_{\theta}( x^{(i)}) - y^{(i)}\right)}^{2} $$函數

這個函數看起來有點像方差的計算公式,但仍是有區別的……學習

首先,它不是和平均值做比較,而是和「標準答案」做比較。再次,算出平方和後的式子乘以$\frac{1}{2m}$而非$\frac{1}{m}$。spa

疑問:爲何乘的是$\frac{1}{2m}$?

猜測:多是由於後面梯度降低算法計算$min(J\left( \theta_{0},\ \theta_{1}\ \right))$時,會求偏導,從而消去分母中的2。ip

既然有了代價函數,咱們如何求他的最小值呢?數學

針對二元函數求最小值/極值,在高等數學裏,在有約束條件和無約束條件下,分別提供了兩種求解的辦法,歸納來說,前者就是拉格朗日乘數法,後者則是計算二階偏導後判斷。這固然不能知足咱們這門課的要求啦,下面將介紹一種很重要的新方法,梯度降低!

梯度降低

該算法的公式以下:

$repeat\ until\ convergence\ \{\\ \quad \theta_j :=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1)\quad(for\ j=0\ and\ j=1)\\\}$it

這裏引入了一個新的變量,學習率α。咱們能夠將這個公式類比爲一次函數$y = kx+b$。io

  • $\frac{\partial}{\partial\theta_{j}}J(\theta_{0},\theta_{1})$即爲斜率k;
  • α表明一次迭代中,在$\theta_{j}$方向上應該移動多大程度;
  • 而:=右邊的和左邊的$\theta_{j}$分別表明此次迭代前和後的$\theta_{j}$值。

對於大括號內的式子,我是這樣理解的:在每次迭代中,先算出$\theta_{0},\theta_{1}$在各自方向上,應移動多大的距離才能使代價函數降低的最大,所有算完後同時更新各$\theta_{j}$的值。(若不一樣時,一次迭代中$\theta$集會變化屢次,求出來的$\theta$也就失去了意義)

整個式子會一直重複下去,直至各$\theta_{j}$收斂到某個值,這就是咱們須要的$\theta$組合(之一)!

疑問:既然梯度降低算法只能求出局部最小值,那如何求解全局最小值呢?

猜測:首先,在單變量線性迴歸問題中,或許$J\left( \theta_{0}\ ,\theta_{1}\ \right)$的局部最小值就是全局最小值(沒證實過,不肯定)。但若是在其餘迴歸問題的方程中就不必定了,這時候,正如課程中所說,咱們應嘗試完全部的參數組合(或儘量多吧),求出全部局部最小值,並比較其中某個參數組合是否爲全局最小值。

問題又來了,怎麼判斷$θ_j$是否收斂,α又該怎麼取?

這個問題其實在第四章會回答。對於前者,一種$\theta_{j}$收斂的判斷依據是:代價函數$J\left(\theta_{0}\ ,\theta_{1}\right)$的變化低於某一閾值。由於即使學習率α不變,隨着J(θ)的減少,$\frac{\partial}{\partial\theta_{j}}J(\theta_{0},\ \theta_{1})$也會減少(在α值合適時),以下圖。咱們假設在第300~400次迭代的過程當中,某次迭代後,$J\left(\theta_{0}\ ,\theta_{1}\right)$變化小於該閾值,就退出循環,輸出$\theta$組合。

α的取值會對迭代次數和 $J\left( \theta_{0}\ ,\theta_{1}\right)$是否能收斂產生很大影響,Andrew Ng老師給的建議是嘗試不一樣的α值:0.01, 0.03, 0.1, 0.3, 1, 3等

代價值應隨着迭代次數而下降

  • 求解θ組合

最後一步(算是),咱們將代價函數代入梯度降低函數內。在此以前,要解決的是$\frac{\partial}{\partial\theta_{j}}J(\theta_{0},\theta_{1})$的求解。這裏須要高等數學中求偏導的基礎知識,計算過程就省略不寫了。

回頭整理梯度降低的算法,個人第一個機器學習算法就誕生啦!名爲「批量梯度降低」:

clipboard.png

相關文章
相關標籤/搜索