1、回歸的來源?
英國人類學家F.Galton首次在《自然遺傳》一書中,提出并闡明了“相關”和“相關系數”兩個概念,為相關論奠定了基礎。其后,他和英國統計學家Karl Pearson對上千個家庭的身高、臂長、拃長(伸開大拇指與中指兩端的最大長度)做了測量,發現:兒子身高(Y,英寸)與父親身高(X,英寸)存在線性關系:
高個子父代的子代在成年之后的身高平均來說不是更高,而是稍矮于其父代水平,而矮個子父代的子代的平均身高不是更矮,而是稍高于其父代水平。Galton將這種 趨向于種族穩定的現象稱之“回歸 ”。
目前,“回歸”已成為表示 變量之間某種數量依存關系 的統計學術語,并且衍生出“回歸方程”“回歸系數”等統計學概念。如研究糖尿病人血糖與其胰島素水平的關系,研究兒童年齡與體重的關系等。
2、變量關系
(1) 函數關系:當自變量取值一定時,因變量取值唯一確定--確定關系
(2) 相關關系:當自變量取值一定時,因變量取值帶有一定隨機性,例子:一塊農田的水稻產量與施肥量之間的關系---不確定關系
主要研究不確定型的函數關系,如收入與受教育程度之間的關系,等等問題。 但它們之間存在明顯的相互關系(稱為相關關系),又是不確定的。
3、一元線性回歸
一元線性回歸研究的是一個自變量與一個因變量的統計關系,如人均收入X與人均食品消費支出Y,假設X與Y的關系為Y=aX+b。
4、線性回歸的學習目標
用恰當的方法,估計出參數a,b。并且使估計出來的參數具有良好的統計特征。回歸問題從某種視角看,視同 參數估計 問題。
5、例子
假設有一個房屋銷售的數據如下:面積(m2) ? ? 銷售價錢(萬元)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 123 ? ? ? ? ? ? ? ? 250
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 150 ? ? ? ? ? ? ? ? 320
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 87 ? ? ? ? ? ? ? ? ? ?160
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 102 ? ? ? ? ? ? ? ? ? ?220
… …
我們可以畫一個圖,x軸是房屋的面積。y軸是房屋的售價:
6、回歸定義
給定一個點集D,用函數去擬合這個點集,并且使得點集與擬合函數間的誤差最小。如果這個函數曲線是一條直線,那就被稱為線性回歸。
7、建立模型
我們通常認為房屋的售價只與面積相關。實際生活中,影響房價的因素非常多,如房屋的面積、朝向、所在小區、房間的個數等。考慮更多的情況,我們用x1,x2...xn 去描述這些影響房屋售價的因素,這些影響因素在機器學習中稱為特征。如x1=房間的面積,x2=房間的朝向等等。考慮兩個變量,我們可以做出一個估計函數:
θ在這里稱為參數,θ作用可以調整房屋售價的各種因素的作用大小。換句話說影響房屋售價的因素:到底是房屋的面積更重要還是房間朝向更重要?
用向量的方式來表示
在上式中,一旦θ確定,那么我們的直線也就確定了,我們就能夠對房價進行預測了。因此我們要做的工作是 確定θ 。 θ的值可以有無數個,我們應該如何選取θ呢?
8、如何確定θ?
最小二乘法
模型估計的值和真實值總是存在誤差,為了使模型盡可能的準確,我們希望估計值和真實值之間的誤差盡可能小,那么模型就越準確。
由于存在多個點,通常情況下,我們采用誤差平方和的形式,使之誤差平方和最小
J(θ)函數稱為損失函數(loss function),上述問題就轉化為求J(θ)的最小值問題。如何求解J(θ)的最小值呢?
9、如何求解J(θ)的最小值?
上式中只有θ是未知數,回顧高數內容,如何求解函數的最小值。通常做法,對目標函數求導,令導數為0,求得的點,即為極值點,如果函數在定義域內是凸函數,那么極值點就是最值點。上述方法就是最小二乘法的思路。
9.1 函數求導法
9.2 矩陣解法
通過“求導=0”,可以將上述方程寫成矩陣的形式,從而將問題轉化為求解線性方程組問題,矩陣X必須是列滿秩矩陣,否則XTX的逆就不會存在。
(1)若XTX不可逆,則方法失效。可通過|XTX|的行列式的值是否為0判斷,非0表可逆。
(2)若XTX階數過高,則需要使用梯度下降的方式計算數值解。
直接求解回歸系數優缺點:
優點:求解過程易于理解,計算不復雜。
缺點:對非線性數據的擬合效果差。
9.3 梯度下降法(最速下降法)
梯度下降法是一種求解最優解的迭代算法,先給定一個初始位置,然后向下降最快的方向調整,在若干次迭代之后找到局部最小值。
求最優解方法:
1、如果優化函數存在 解析解 。例如我們求最值一般是對優化函數求導,找到導數為0的點。如果代價函數能簡單求導,并且求導后為0的式子存在解析解,那么我們就可以直接得到 最優的參數 。
2、如果式子很難求導,例如函數里面存在隱含的變量或者變量相互間存在耦合,互相依賴的情況。或者求導后式子得不到解析解,或者未知參數的個數大于方程組的個數等。這時候使用 迭代算法 來一步一步找到最優解。
特別的,若優化函數是凸函數,那么就存在全局最優解,如果函數是非凸的,那么就會有很多局部最優的解,因此凸優化重要性不言而喻。
梯度下降法步驟
(1)初始化θ(隨機初始化)
(2)迭代,新的θ能夠使得J(θ)更小
(3)如果J(θ)能夠繼續減少,返回(2)
迭代公式
9.4 兩種實現方式
9.41 批處理梯度下降法
批處理梯度下降法迭代過程把所有的m個樣本全部帶入計算,迭代一次計算量m*n2。
由于批量梯度下降法每迭代一次更新回歸系數時,都要用到訓練集所有的數據,如果樣本數m很大,那么計算復雜度會很高,速度會很慢。針對這種不足,又引入另一種方法:隨機梯度下降法。
9.42 隨機梯度下降法( stochastic gradient descent )
隨機梯度下降法每次迭代只帶入單個樣本的回歸誤差來更新回歸系數,迭代一次計算量為n2,當樣本量總數m很大時,迭代一次的速度
遠遠大于批量梯度下降法。
隨機梯度下降法每次只帶入一個樣本進行計算,雖然每次迭代誤差準則函數都不一定向著全局最優方向,但是整體方向是向著全局最優方向的,最終結果往往是在全局最優解的附近。
9.5 梯度下降法注意事項
主要考慮兩個方面問題: 一是方向 , 二是步長 。
方向決定是否走在最優化的道路上,而步長決定了要多久才能到達最優的地方。 對于第一方面,就是求梯度,多元函數求相應變量的偏導數;對于第二方面,如果步子太少,則需要很長的時間才能達到目的地,如果步子過大,可能導致在目的地周圍來回震蕩,所以步長選擇比較關鍵。
9.6 改進的隨機梯度下降法
100個二維樣本,每個樣本都對系數調整一次,共有200*100=20000次的系數調整
從上圖可以看到隨機梯度下降法在迭代了200次中,三個回歸系數的變化過程,其中系數X2經過50次迭代達到穩定值,系數X0和X2到100次后逐漸穩定,但還存在一些小的波動。
原因:
存在一些無法準確分類的樣本點,也就是說我們的數據集并非線性可分。然而我們的優化程序并沒能意識到這些不正常的樣本點,還
一視同仁對待,調整系數來達到這些樣本的分類誤差,所以導致在每次迭代時都引發系數的劇烈波動。
改進:
(1)每次迭代調整步長alpha值。隨著迭代的進行,使之alpha越來越小,從而緩解系數的高頻波動。避免alpha不斷減小到接近于
0,所以需約束alpha比零稍大一點的常數項。
(2)每次迭代改變樣本的優化順序。隨機選取樣本來更新回歸系數,因為樣本順序的改變,使得每次迭代不在形成周期性。
10、衡量預測值是否正確?
衡量預測值代替真實值到底有多正確?可使用 相關系數 進行度量。
python中通過Numpy庫提供了相關系數的計算方法。correoef(yEstimate,yActual)
11、相關代碼
11.1 加載數據集
11.2 矩陣求解法
11.3 批量梯度下降法
11.4 隨機梯度下降法
11.5 改進隨機梯度下降法
11.6 訓練
11.7 效果
11.8 測試