一.線性回歸問題
線性回歸是利用數理統(tǒng)計中回歸分析,來確定兩種或兩種以上變量間相互依賴的定量關系的一種統(tǒng)計分析方法,運用十分廣泛。線性回歸包括一元線性回歸和多元線性回歸,一元是只有一個自變量x,多元是指有多個自變量x1,x2.....如y=a0+a1x1+a2x2。
首先我們來看一個例子:

我們不妨先假設一個線性函數關系:函數h表示房價,x1表示面積,x2表示臥室數目。


現在,我們想要根據訓練集數據擬合一個函數,這就需要我們求出參數值。大家可以想象,我們肯定希望找到的那個函數,距離每個點都很近,最好所有的點上都在這個函數上,但是這肯定不現實,所以我們希望這些點盡量離函數近一點,也就是所有訓練樣本到函數的距離之和最小。用數學的方式形式化,我們得到代價函數J

二.梯度下降法
(一)前提
在介紹梯度下降法之前,我們先回顧一下幾個基礎的數學概念。
-
導數
一個點的導數不僅僅表示該點切線的斜率,還反應了函數在該點的變化率。
-
偏導數
在二元函數中,偏導數僅僅是表示某點在x方向的導數和在y軸方向的導數。這反應了偏導數的局限性,僅僅是多元函數沿著坐標軸的變化率,但是如下圖,在M0點處存在很多方向的偏導數(并不僅僅x和y方向),這就引出了方向導數。
-
方向導數
兩點間距離
我們不僅僅要知道函數在坐標軸方向上的變化率(即偏導數),還需要設法求得函數在其他方向上的變化率。而方向導數就是函數在其他特定方向上的變化率。
從二元函數上某點P點向某個方向發(fā)出一條射線,通過p0(x+△x,y+△y)且P0在領域內。
若極限存在則方向導數為:
-
梯度
由上面的方向導數可知,方向導數是在各個方向上都有,而且每個方向上的變化一般是不一樣的,那到底沿哪個方向最大呢?沿哪個方向最小呢?為了研究方便,就有了梯度的定義。
- 梯度是一個向量,由函數f關于它的n個變量的偏導數構成,比如三元函數f的梯度為(fx,fy,fz),二元函數f的梯度為(fx,fy),一元函數f的梯度為f(x)
- 梯度的方向是函數增長最快的方向,梯度的反方向是函數降低最快的方向。
(二)梯度下降法(BGD)
梯度下降法的基本思想:
我們的目的是尋找J最小時的參數,開始時我們隨機選擇一個參數的組合(θ_0,θ_1,......,θ_n ),計算代價函數,然后我們尋找下一個能讓代價函數值下降最多的參數組合。我們持續(xù)這么做直到到到一個局部最小值(local minimum),因為我們并沒有嘗試完所有的參數組合,所以不能確定我們得到的局部最小值是否便是全局最小值(global minimum),選擇不同的初始參數組合,可能會找到不同的局部最小值。

目標函數J關于參數θ的梯度是目標函數上升最快的方向,那么讓函數從任意一點開始,沿著梯度反方向移動一個步長α(α是學習率,它決定了我們沿著梯度方向向下邁出的步子有多大,α的值是根據情況自行設定的),就可以使得函數J下降的最快,形式化如下。(注意,這里所有的參數θ都要同時更新)


我們發(fā)現在迭代過程中,每更新一個參數θ,都會計算一遍全部訓練集,如果訓練集很大,那么將很耗時間。
隨機梯度下降(SGD):去掉求和公式,用樣本中的一個例子來近似我所有的樣本,來調整。
批量梯度下降(MBGD):其實批量的梯度下降就是一種折中的方法,他用了一些小樣本來近似全部的,其本質就是1個樣本近似全部不太準,那我多取幾個樣本會比隨機的要準不少了吧,而且批量的話還是非??梢苑从硺颖镜囊粋€分布情況的。
注意(以一元函數舉例說明)
-
梯度下降法是收斂到局部最小值,不一定可以收斂到全局最小值,這與我們選擇的初始參數有關。
image
我們初始值選擇了如圖的x0,由于f在點x0的導數大于0,梯度方向向右,負梯度方向向左,從而x0向左移動,逐漸收斂到了局部最小值,而不能收斂到全局最小值。
-
α的大小要適中
學習率α太小,每次移動步長太小,收斂太慢,這個比較容易理解。
學習率α太大,每次移動步長大,可能導致不收斂,這里用一個圖來表示一下:
由于距離最小值點越遠,導數越大,從而導致步長越來越大,不會收斂。通??梢钥紤]嘗試這些學習率:
α=0.01,0.03,0.1,0.3,1,3,10
三. 最小二乘法
最小二乘法的本質就是利用向量表示代價方程J,然后對參數向量進行求導,令導數為0求極值,從而解出參數向量。

那么將樣本屬性X帶入方程可以得到:

用向量表示出來:

也就是:

同樣,為了保證點到函數的距離和的平方最小,得到代價公式(Y是樣本目標向量):

令J對參數向量求導:

最后如果


如果不可逆,那就是有很多解了,取哪個解由歸納偏好決定。
至此,我們得到了所有的參數,模型建立完成。




