天天看點

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

線性回歸(linear regression) 

先看個例子,比如,想用面積和卧室個數來預測房屋的價格 

訓練集如下 

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

首先,我們假設為線性模型,那麼hypotheses定義為 

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

其中x1,x2表示面積和#bedrooms兩個feature 

那麼對于線性模型,更為通用的寫法為 

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

其中把θ和x看成向量,并且x0=1,就可以表示成最後那種,兩個向量相乘的形式

那麼線性回歸的目的,就是通過訓練集找出使得誤差最小的一組參數θ(稱為學習) 

為了可以量化誤差,定義損失函數(cost function) 

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

比較好了解,就是訓練集中所有樣本點,真實值和預測值之間的誤差的平方和 

其中1/2是為了後面計算友善,求導時會消掉 

是以我們目的就是找到θ使得j(θ)最小,這就是最小二乘法(最小平方) 

看似很容易了解,可是為什麼要使用最小二乘來作為損失函數,為何不是內插補點的絕對值,或4次方? 

後面會給出基于機率最大似然的解釋

梯度下降(gradient descent) 

為了求解這個最優化問題,即找到θ使得j(θ)最小,可以有很多方法 

先介紹梯度下降法 

這是一種疊代方法,先随意選取初始θ,比如θ=0,然後不斷的以梯度的方向修正θ,最終使j(θ)收斂到最小 

當然梯度下降找到的最優是局部最優,也就是說選取不同的初值,可能會找到不同的局部最優點 

但是對于最小二乘的損失函數模型,比較簡單隻有一個最優點,是以局部最優即全局最優

對于某個參數的梯度,其實就是j(θ)對該參數求導的結果 

是以對于某個參數每次調整的公式如下, 

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

α is called the learning rate,代表下降幅度,步長,小會導緻收斂慢,大會導緻錯過最優點 

是以公式含義就是,每次在梯度方向下降一步

下面繼續推導,假設訓練集裡面隻有一個樣本點,那麼梯度推導為, 

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

就是求導過程,但是實際訓練集中會有m個樣本點,是以最終公式為, 

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

因為θ中有多個參數,是以每次疊代對于每個參數都需要進行梯度下降,直到j(θ)收斂到最小值 

這個方法稱為batch gradient descent,因為每次計算梯度都需要周遊所有的樣本點 

這是因為梯度是j(θ)的導數,而j(θ)是需要考慮所有樣本的誤差和 

這個方法問題就是,擴充性問題,當樣本點很大的時候,基本就沒法算了

是以提出一種stochastic gradient descent(随機梯度下降) 

想法很簡單,即每次隻考慮一個樣本點,而不是所有樣本點 

那麼公式就變為, 

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

其實意思就是,每次疊代隻是考慮讓該樣本點的j(θ)趨向最小,而不管其他的樣本點 

這樣算法會很快,但是收斂的過程會比較曲折 

整體效果,還是可以will be reasonably good approximations to the true minimum 

是以适合用于較大訓練集的case

normal equations 

前面說了如何用梯度下降來解線性回歸問題 

其實對于線性回歸,也可以不用這種疊代最優的方式來求解 

因為其實可以通過normal equations直接算出θ,即具有解析解

首先對于訓練集,可以寫成下面的向量形式

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降
Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降
Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降
Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降
Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

可以看到經過一系列的推導,j(θ)有了新的表達形式 

那麼j(θ)的梯度,即求導,可以得到 

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

而j(θ)最小時,一定是梯度為0時,即可以推出normal equations 

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

是以使j(θ)最小的θ的值可以直接求出, 

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

probabilistic interpretation,機率解釋 

解釋為何線性回歸的損失函數會選擇最小二乘 

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

真實的y和預測出來的值之間是會有誤差的,因為我們不可能考慮到所有的影響結果的因素 

比如前面的例子,我們根據面積和卧室的個數來預測房屋的價格 

但是影響房屋價格的因素其實很多,而且有很多随機因素,比如買賣雙方的心情 

而根據中心極限定理,大量獨立的随機變量的平均值是符合正态分布或高斯分布的 

是以這裡對于由大量unmodeled因素導緻的誤差的分布,我們假設也符合高斯分布 

因為你想想,大量獨立随機變量大部分誤差會互相抵消掉,而出現大量變量行為相似造成較大誤差的機率是很小的 

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

可以寫成,因為誤差的機率和預測出是真實值的機率是一樣的 

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

注意,這裡 

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

不同于 

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降
Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

因為對于訓練集,θ是客觀存在的,隻是目前還不确定

是以有, 

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

這個很容易了解,真實值應該是以預測值為中心的一個正态分布

給出θ似然性的定義 

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

給定訓練集x和參數θ,預測結果等于真正結果的機率,等同于該θ為真實θ的可能性(似然性) 

這裡probability和likelihood有什麼不同,答案沒有什麼不同 

但是對于資料使用probability,但對于參數使用likelihood 

故最大似然法(maximum likelihood),就是找出l(θ)最大的那個θ,即機率分布最fit訓練集的那個θ

繼續推導,把上面的式子帶入,得到 

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

實際為了數學計算友善,引入log likelihood, 

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

可以看到,最終我們從l(θ)的最大似然估計,推導出損失函數j(θ),最小二乘 

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

是以結論為,最小二乘回歸被認為是進行最大似然估計的一個很自然的方法 

to summarize: under the previous probabilistic assumptions on the data, least-squares regression corresponds to finding the maximum likelihood estimate of θ. this is thus one set of assumptions under which least-squares regression can be justified as a very natural method that’s just doing maximum likelihood estimation.

locally weighted linear regression,局部權重線性回歸 

對于線性回歸,問題是選取的特征的個數和什麼特征會極大影響fit的效果 

比如下圖,是分布使用下面幾個模型進行拟合的 

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降
Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

通常會認為第一個模型underfitting,而第三個模型overfitting,第二個模型相對比較好的fit到訓練集 

是以可以看出,找出一個全局的線性模型去fit整個訓練集,是個比較困難的工作,因為選擇特征成為一個關鍵的因素 

局部權重線性回歸的思路,就是我不需要去fit整個訓練集而産生全局的模型 

而是在每次predict x的時候,隻去拟合x附近的一小段訓練集 

無論全局訓練集是多麼複雜的一個分布曲線,但在局部小段資料上,都可以用線性去逼近  

是以算法如下, 

Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降
Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降
Andrew Ng機器學習公開課筆記 -- 線性回歸和梯度下降

可以看到我們通過weight來選取局部樣本點 

這裡weight定義有點類似高斯分布,雖然這裡和高斯分布沒有關系,隻是恰好相似 

但是他的分布曲線确實和高斯分布一樣,鐘型,是以通過weight,隻有距離x很近的樣本點才會對于損失函數有作用

局部權重線性回歸算法是一種non-parametric algorithm 

而普通的線性回歸是parametric learning algorithm 

parametric learning algorithm有一組有限的,固定的參數,一旦完成fit,隻需要儲存下參數值來做預測,而不需要儲存完整的訓練集 

non-parametric algorithm,相反,我們需要儲存完整的訓練集來進行預測,而不是僅僅儲存參數 

正式定義為,the amount of stuff we need to keep in order to represent the hypothesis h grows linearly with the size of the training set. 

為了表達假設h而儲存的資料随着訓練集的size而線性增長

本文章摘自部落格園,原文釋出日期:2014-03-26

繼續閱讀