線性回歸算法的原理


簡單的線性回歸算法舉例

引子

小學的時候老師出過的一道題,方程 y = w0 + w1x   ,已知兩組數據,求解w0和w1

x = 1 ,y = 2

x = 2 ,y = 3

兩點確定一條直線,此時可以准確求得w0 和 w1

 

但是如果給了3組數據,可不可以准確求得w0 和 w1呢

x = 1 ,y = 2

x = 2 ,y = 3

x = 3 ,y = 5

由於這3點不在一條直線,所以不能准確求得w0 和 w1。這其實是一道錯題,老師會讓隨便去掉一組數據求解。

這道錯題其實是一個機器學習問題。我們是否可以找到一條完美直線,使得誤差最小呢?

 

如果數據量更大,給了3億組x和y的數據,不在一條直線上,是否能找到一條完美直線,使得誤差最小呢?

從這3億組數據找到規律的過程就是機器學習,規律就是w參數。

 

完美直線的定義:空間的點到直線的距離最近。不是穿過的點最多。

 

如何使得空間的點到直線的距離最近?

1、量化公式

有一個量化公式衡量了總誤差,假設一共有m個點(xi,yi),i = 1,2,3 ... ... m,擬合的直線的方程為 hθ(x) = w0 + w1x,

那么該量化公式為:

  

 公式含義解釋:

分母中的2,是為了方便求導

分母中的m是為了衡量m個點的平均距離

  是指將x  代入到擬合的直線方程中得到的值

求平方是因為要考慮的是差值,排除負數的影響,為什么不用絕對值排除負數的影響呢?

上述公式表示將m個點的直線方程計算出的y值與實際的y的差值的平方求和,除以2m,可以衡量m個點到擬合直線的平均誤差

 

2、 虛晃一槍:求導讓導數為0

至此問題轉化為求J(θ)的極小值,為了使得量化公式J(θ)越小越好,首先需要確認J(θ)是否有極小值

如果J(θ)是凹函數,就有極小值,我們可以推導出來J(θ)確實是凹函數,以下是推導過程

我們已知y = x2  是凹函數,y = kx+ b , k>0   也是凹函數。

W為包含w0,w1兩個值的列向量,X (1;x) 也是一個列向量  那么可知 W的轉置 乘以X  等於 w0+w1x

 

 

 ?

 

 

 

凹函數有極小值,可以通過對w0和w1求導,使導數等於0的方法求極小值

 

w(w0,w1)  與J的圖像如下

 

 

對w0和w1分別求偏導,令導數為0 ,求解w參數

w0的偏導的求解過程如下

 

 

 

w1的偏導的求解過程如下

 

 至此我們終於把導數求出來了

 

但是在實際情況下,上述方式不可行。海量數據下,x特別多(x1,x2,x3......),通過偏導為零反推求解 w參數,基本不可能,需要很多的算力

 

3、反推不行正向試

其他方法?

反推不行,正向試

隨機給w參數,和 3億組數據,代到 J(θ) 中,求得誤差值,J(θ)也稱為誤差函數、損失函數、目標函數、最小二乘法

誤差值不可能為0,因為3億組數據不在一條直線上

人為設置一個能夠容忍的誤差值,比如0.01,不斷迭代調整w參數,當誤差值小於0.01,此時的w參數就認為是最佳參數,此時的直線是最佳直線

 

設置兩個條件作為迭代的停止條件

迭代次數

誤差閾值

當這兩個條件達到其一,就停止迭代

 

訓練模型的步驟可以概括為下述幾步

1、隨機w0,w1參數值

2、訓練集數據和隨機出來的w參數誤差函數中求解出誤差

3、如果誤差小於用戶設置的誤差閾值,此時的w參數就是最佳參數

4、否則繼續調整w參數,循環2 3步,直到滿足停止迭代的條件為止

 

求解出w參數后,模型訓練完畢,

當未來有了x值,求得的y值就是預測的值

 

迭代次數和誤差閾值需要人為設置,誤差閾值不是越小越好,如果誤差非常小,模型可能過擬合

參數策略,調參工程師

 

為什么求得的誤差是點到直線在y方向上的誤差,而不是點到直線的垂直距離?

為什么求得的誤差是點到直線在y方向上的誤差

 

 

為什么不求點到直線的垂直距離

 

 因為是要預測的y值更精准,所以是在y方向上的誤差

 


免責聲明!

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



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