機器學習之線性回歸模型


1. 線性回歸

什么是回歸

從大量的函數結果和自變量反推回函數表達式的過程就是回歸。線性回歸是利用數理統計中回歸分析來確定兩種或兩種以上變量間相互依賴的定量關系的一種統計分析方法。

一元線性回歸:

只包括一個自變量()和一個因變量(),且二者的關系可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析。公式: 

多元線性回歸:

如果回歸分析中包括兩個或兩個以上的自變量,且因變量和自變量之間是線性關系,則稱為多元線性回歸分析。公式:

 

對於一元線性回歸公式來說,如果給定兩組x,y的值,就可以求得和的值。例如:給定兩組x,y的值x=3,y=5和x=6,y=8,那么可知如下:

5=+*3                 8=+*6

可以求得=2,=1。兩點確定一條直線,可以確定和的值。我們可以叫做一元線性回歸公式的截距,可以叫做一元線性回歸公式的斜率

假設某個醫院住院人數與醫院的床位個數呈線性關系,即:

          住院人數  = +*醫院床位數

在這里,如果想求得住院的人數,就要知道,的值,這里的,也叫權重,“醫院床位數”可以理解成影響住院人數的一個維度。通過給出兩組數據,就可以得到權重的值。

對於一元線性回歸來說,如果現在有很多呈線性關系離散的點,假設現在需要找到一個線性回歸公式來表示這些點自變量和因變量的關系,每兩個點之間都能確定一條直線,如何找到一條直線來表示這些點的關系呢?

如何確定這條直線?

每一個離散的點在自變量處得到的的值記為,對應的,需要找到的這條直線在自變量處得到的的值記為,當所有的到對應的的距離差平方累加起來最小,我們就可以認為這條直線比較完美。也就是當平均誤差公式:error= 最小時這條直線比較完美,其中,

代表一系列的真實離散點的y值,

代表一系列得到的直線在對應的x處的y值,一元線性回歸中=。

m代表有m個離散點,前面的 是為了方便求導加上的。

 表示的是一系列權重,,…. 

這個公式也叫做最小二乘法誤差公式。error的值如果是0說明確定的這條直線穿過了所有的點,對於離散分散的一組點,error的值不可能為0。

 

2. 確定權重的值(確定模型)

當誤差公式:

 

 

取得最小值時,能確定一條完美的直線,也就是確定一組 值與自變量的關系,擬合出來的一條直線能盡可能的通過更多的點。確定了error的最小值,也就有可能確定一組值。

如何確定error的最小值?

如果將error函數看成自變量關於error的函數,那么可以轉換為:

 

 

如果將一組權重看成一列向量,表示一列維度組成的向量,就是這組向量的轉置,

就是,那么現在的問題就是如何找到一組,使得error的值最小。

我們可以看出error函數的關系圖像大概是一個開口向上的圖像,那么當error的導數為0時,此時能得到一組的值對應的error的值最小。

 

 

通過求導的方式,理論上可以確定error的最小值,但是由於是一組數據,無法確定error最小下對應的這一組權重 。

正向的求導不能得到一組權重值,就不能確定線性回歸的公式。那么可以根據數據集來窮舉法反向的試,來確定線性回歸的公式:

如何反向窮舉求得線性回歸的公式(訓練線性回歸模型)?

已知有線性回歸關系的訓練數據

已知線性回歸的公式:

 

 

已知誤差函數公式:

 

要求得在error最小下的一組權重值,以便確定線性回歸的公式。我們要確定的這組就是要確定一個模型。確定模型就是確定一組參數,就是確定這組的值。

窮舉之前,會有一個初始模型,一般是隨機數,假設=1,=1,=1…,有了初始模型那么針對每一條訓練數據都能求得一個真實值與模型評估值的平方差,也就是針對一組測試數據,能得到在這組初始模型下error誤差函數的值。那么得到的error值是不是最小值?需要不斷調節初始模型參數,需要在訓練模型時,指定調節初始模型,,…的調節步長step(也叫學習率),迭代去求出每次調節模型后的error值,由於error的值不可能絕對的達到0(如果達到0說明訓練出來的模型對應的線性回歸公式完全的將所有訓練數據集的點穿過),在訓練模型之前指定一個最小error值,即:當迭代求出模型的error誤差值小於指定的error值就停止迭代,那么當前這組值就是確定好的模型。

如果每次迭代求得模型對應的error大於指定的最小error值,要繼續調節這組值,一直迭代到模型的error值小於指定的error值。

 

 

 

3. 梯度下降法調節參數

假設和error的函數關系中,中只有一個維度,那么這個關系其實就是和error的關系,反應圖上就是一維平面關系,如果中有兩個維度和,那么這個反映到圖上就是個三維空間關系,以此類推。

如果中只有一個維度,如下圖:

 

 

 

 

圖中①,②,③,④,⑤,⑥,⑦都是圖像的切線(斜率),在切點處可以求得對應的error值,如何調節模型得到一組 值可以使得到的error值更小,如圖,沿着①->②->③方向調節和沿着④->⑤->⑥方向調節,可以使error值更小,這種沿着斜率絕對值減少的方向,沿着梯度的負方向每次迭代調節的方法就叫做梯度下降法

梯度下降是迭代法的一種,可以用於求解最小二乘問題,在求解error函數的最小值時,可以通過梯度下降法來一步步的迭代求解,得到最小化的error函數和模型參數值。

每次按照步長(學習率)來調節值,迭代求出error的最小值,這里的error不可能有一個固定的最小值,只會向着最小值的方向收斂。

判斷模型error誤差值收斂,也就是停止迭代的兩種方式:

  1. 指定一個error值,當迭代處理過程中得到的error值小於指定的值時,停止迭代。
  2. 設置迭代次數,當迭代次數達到設置的次數時,停止迭代。

迭代周期:從調整參數開始到計算出error值判斷是否大於用戶指定的error是一個迭代周期。

當步長比較小時,迭代次數多,訓練模型的時間比較長,當步長比較大時,有可能迭代的次數也比較多,訓練模型的時間也會相對比較長,需要找到一個合適的步長。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM