一.最小二乘法
我們以最簡單的一元線性模型來解釋最小二乘法。什麼是一元線性模型呢?監督學習中,如果預測的變量是離散的,我們稱其爲分類(如決策樹,支持向量機等),如果預測的變量是連續的,我們稱其爲迴歸。迴歸分析中,如果只包括一個自變量和一個因變量,且二者的關係可用一條直線近似表示,這種迴歸分析稱爲一元線性迴歸分析。如果迴歸分析中包括兩個或兩個以上的自變量,且因變量和自變量之間是線性關係,則稱爲多元線性迴歸分析。對於二維空間線性是一條直線;對於三維空間線性是一個平面,對於多維空間線性是一個超平面...
對於一元線性迴歸模型, 假設從總體中獲取了n組觀察值(X1,Y1),(X2,Y2),…,(Xn,Yn)。對於平面中的這n個點,可以使用無數條曲線來擬合。要求樣本回歸函數儘可能好地擬合這組值。綜合起來看,這條直線處於樣本數據的中心位置最合理。選擇最佳擬合曲線的標準可以確定爲:使總的擬合誤差(即總殘差)達到最小。有以下三個標準可以選擇:
(1)用“殘差和最小”確定直線位置是一個途徑。但很快發現計算“殘差和”存在相互抵消的問題。
(2)用“殘差絕對值和最小”確定直線位置也是一個途徑。但絕對值的計算比較麻煩。
(3)最小二乘法的原則是以“殘差平方和最小”確定直線位置。用最小二乘法除了計算比較方便外,得到的估計量還具有優良特性。這種方法對異常值非常敏感。
最常用的是普通最小二乘法( Ordinary Least Square,OLS):所選擇的迴歸模型應該使所有觀察值的殘差平方和達到最小。(Q爲殘差平方和)-即採用平方損失函數。
樣本回歸模型:
平方損失函數:
則通過Q最小確定這條直線,即確定爲變量,把它們看作是Q的函數,就變成一個求極值的問題,通過求導數可以得到,求Q對兩個待估參數的偏導數:
根據數學知識可知,函數的極值點爲偏導數爲0的點。由此可得
二.梯度下降法
1.基本概念
梯度下降法,就是利用負梯度方向來決定每次迭代的新的搜索方向,使得每次迭代能使待優化的目標函數逐步減小。梯度下降法是2範數下的最速下降法。 最速下降法的一種簡單形式是:x(k+1)=x(k)-a*g(k),其中a稱爲學習速率,可以是較小的常數。g(k)是x(k)的梯度。
2.導數
(1)定義
設有定義域和取值都在實數域中的函數 y=f(x),若f(x)在點x0的某個鄰域內有定義,則當自變量x在x0處取得增量△x(點x0+△x仍在該鄰域內)時,相應地函數y取得增量
△y=f(x0+△x)-f(x0),如果△y與△x之比在△x →0時的極限存在,則稱函數y=f(x)在x0可導,並稱這個極限爲函數y=f(x)在點x0處的導數,記爲f’(x0),即:
也可記做
對於一般的函數,如果不使用增量的概念,函數f(x) 在點 x0 處的導數也可以定義爲:當定義域內的變量 x 趨近於 x0 時,的極限,也就是說
導數反應的變化率:
一個函數在某一點的導數描述了這個函數在這一點附近的變化率。導數的本質是通過極限的概念對函數進行局部的線性逼近。當函數f的自變量在一點x0 上產生一個增量h時,函數輸出值的增量與自變量增量h的比值在h趨於0時的極限如果存在,即爲f在x0 處的導數,記作
(2)幾何意義
一個實值函數的圖像曲線。函數在一點的導數等於它的圖像上這一點處之切線的斜率,導數是函數的局部性質。不是所有的函數都有導數,一個函數也不一定在所有的點上都有導數。若某函數在某一點導數存在,則稱其在這一點可導,否則稱爲不可導。如果函數的自變量和取值都是實數的話,那麼函數在某一點的導數就是該函數所代表的曲線在這一點上的切線斜率。
具體來說:當函數定義域和取值都在實數域中的時候,導數可以表示函數的曲線上的切線斜率。如下圖所示,設P0爲曲線上的一個定點,P爲曲線上的一個動點。當P沿曲線逐漸趨向於點P0時,並且割線P P0的極限位置P0T存在,則稱P0 T爲曲線在P0處的切線
若曲線爲一函數y=f(x)的圖像,那麼割線P P0(藍色)的斜率爲:
當P0處的切線P0 T(紅色),即P P0的極限位置存在時,此時△x→0,φ→α,則P0T的斜率tanα爲:
上式與一般定義中的導數定義完全相同,也就是說,因此,導數的幾何意義即曲線y=f(x)在點P0(x0,f(x0))處切線的斜率.
(3)導函數
導數是一個數,是指函數f(x)在點x0 處導函數的函數值,若函數f(x)在其定義域包含的某區間I內每一個點都可導,那麼也可以說函數f(x)在區間I內可導,這時對於I內每一個確定的x 值,都對應着f 的一個確定的導數值,如此一來就構成了一個新的函數x→f’(x),這個函數稱作爲原來函數f(x)的導函數,記作:y’,f’(x)或者,通常也可以說導函數爲導數
(4)梯度
1、相關概念
假如一個空間中的每一點的屬性都可以以一個標量來代表的話,那麼這個場就是一個標量場。
假如一個空間中的每一點的屬性都可以以一個向量來代表的話,那麼這個場就是一個向量場
標量場中某一點上的梯度指向標量場增長最快的方向,梯度的長度是這個最大的變化率。
梯度一詞有時用於斜度,也就是一個曲面沿着給定方向的傾斜程度。
2、計算
一個標量函數φ的梯度記爲:▽φ或grad φ,其中▽表示矢量微分算子
在三維情況,該表達式在直角座標中擴展爲
(5)梯度下降法
梯度下降法,基於這樣的觀察:如果實值函數F(x)在點a處可微且有定義,那麼函數 F(x)在a點沿着梯度相反的方向-▽F(a)下降最快。因而,如果b=a-γ▽F(a)對於γ>0爲一個足夠小數值時成立,那麼F(a)≥F(b)
考慮到這一點,我們可以從函數F 的局部極小值的初始估計x0出發,並考慮如下序列x0, x1, x2,…使得xn+1=xn-γn▽F(n), n≥0
因此可以得到F(x0) ≥F(x1) ≥F(x2) ≥….
如果順利的話序列(xn)收斂到期望的極值。注意每次迭代步長 γ可以改變。
實例:
假設一個估計函數:
表示特徵,爲參數,在這兒的意思是調整feature中每個分量的影響力,爲了如果我們令x0= 1,就可以用向量的方式來表示了:
我們程序也需要一個機制去評估我們θ是否比較好,所以說需要對我們做出的h函數進行評估,一般這個函數稱爲損失函數(lossfunction)或者錯誤函數(errorfunction),描述h函數不好的程度,在下面,我們稱這個函數爲J函數
在這兒我們可以做出下面的一個錯誤函數:
這個錯誤估計函數是去對x(i)的估計值與真實值y(i)差的平方和作爲錯誤估計函數,前面乘上的1/2是爲了在求導的時候,這個係數就不見了。
如何調整θ以使得J(θ)取得最小值有很多方法,其中有最小二乘法(minsquare),是一種完全是數學描述的方法,在stanford機器學習開放課最後的部分會推導最小二乘法的公式的來源,這個來很多的機器學習和數學書上都可以找到,這裏就不提最小二乘法,而談談梯度下降法。
梯度下降法是按下面的流程進行的:
1)首先對θ賦值,這個值可以是隨機的,也可以讓θ是一個全零的向量。
2)改變θ的值,使得J(θ)按梯度下降的方向進行減少。
爲了更清楚,給出下面的圖:
這是一個表示參數θ與誤差函數J(θ)的關係圖,紅色的部分是表示J(θ)有着比較高的取值,我們需要的是,能夠讓J(θ)的值儘量的低。也就是深藍色的部分。θ0,θ1表示θ向量的兩個維度。在上面提到梯度下降法的第一步是給θ給一個初值,假設隨機給的初值是在圖上的十字點。然後我們將θ按照梯度下降的方向進行調整,就會使得J(θ)往更低的方向進行變化,如圖所示,算法的結束將是在θ下降到無法繼續下降爲止。
當然,可能梯度下降的最終點並非是全局最小點,可能是一個局部最小點,可能是下面的情況:
上面這張圖就是描述的一個局部最小點,這是我們重新選擇了一個初始點得到的,看來我們這個算法將會在很大的程度上被初始點的選擇影響而陷入局部最小點.下面我將用一個例子描述一下梯度減少的過程,對於我們的函數J(θ)求偏導J:(求導的過程如果不明白,可以溫習一下微積分)
下面是更新的過程,也就是θi會向着梯度最小的方向進行減少。θi表示更新之前的值,-後面的部分表示按梯度方向減少的量,α表示步長,也就是每次按照梯度減少的方向變化多少。
一個很重要的地方值得注意的是,梯度是有方向的,對於一個向量θ,每一維分量θi都可以求出一個梯度的方向,我們就可以找到一個整體的方向,在變化的時候,我們就朝着下降最多的方向進行變化就可以達到一個最小點,不管它是局部的還是全局的。用更簡單的數學語言進行描述是這樣的:
三、最小二乘法與梯度下降法
最小二乘法跟梯度下降法都是通過求導來求損失函數的最小值,那它們有什麼區別呢。相同點:
1.本質相同:兩種方法都是在給定已知數據(independent & dependent variables)的前提下對dependent variables算出出一個一般性的估值函數。然後對給定新數據的dependent variables進行估算。
2.目標相同:都是在已知數據的框架內,使得估算值與實際值的總平方差儘量更小(事實上未必一定要使用平方),估算值與實際值的總平方差的公式爲:
其中爲第i組數據的independentvariable,爲第i組數據的dependentvariable,爲係數向量。
不同點
1實現方法和結果不同:最小二乘法是直接對△求導找出全局最小,是非迭代法。而梯度下降法是一種迭代法,先給定一個β,然後向△下降最快的方向調整β,在若干次迭代之後找到局部最小。梯度下降法的缺點是到最小點的時候收斂速度變慢,並且對初始點的選擇極爲敏感,其改進大多是在這兩方面下功夫。