機器學習-線性回歸LinearRegression


概述

         今天要說一下機器學習中大多數書籍第一個講的(有的可能是KNN)模型-線性回歸。說起線性回歸,首先要介紹一下機器學習中的兩個常見的問題:回歸任務和分類任務。那什么是回歸任務和分類任務呢?簡單的來說,在監督學習中(也就是有標簽的數據中),標簽值為連續值時是回歸任務,標志值是離散值時是分類任務。而線性回歸模型就是處理回歸任務的最基礎的模型。

形式

        在只有一個變量的情況下,線性回歸可以用方程:y = ax+b 表示。而如果有多個變量,也就是n元線性回歸的形式如下:


n元線性回歸

在這里我們將截斷b用θ0代替,同時數據集X也需要添加一列1用於與θ0相乘,表示+b。最后寫成矩陣的形式就是θ的轉置乘以x。其中如果數據集有n個特征,則θ就是n+1維的向量並非矩陣,其中包括截斷b。

目的

線性回歸的目的就是求解出合適的θ,在一元的情況下擬合出一條直線(多元情況下是平面或者曲面),可以近似的代表各個數據樣本的標簽值。所以最好的直線要距離各個樣本點都很接近,而如何求出這條直線就是本篇文章重點要將的內容。


一元線性回歸擬合數據

最小二乘法

求解線性回歸模型的方法叫做最小二乘法,最小二乘法的核心就是保證所有數據偏差的平方和最小。它的具體形式是:


 

其中hθ(x^(i))代表每個樣本通過我們模型的預測值,y^(i)代表每個樣本標簽的真實值,m為樣本個數。因為模型預測值和真實值間存在誤差e,可以寫作:


 

根據中心極限定理,e^(i)是獨立同分布的(IID),服從均值為0,方差為某定值σ的平方的正太分布。具體推導過程如下:


最小二乘法推導

求解最小二乘法:

我們要求得就是當θ取某個值時使J(θ)最小,求解最小二乘法的方法一般有兩種方法:矩陣式和梯度下降法。

矩陣式求解:

當我們的數據集含有m個樣本,每個樣本有n個特征時,數據x可以寫成m*(n+1)維的矩陣(+1是添加一列1,用於與截斷b相乘),θ則為n+1維的列向量(+1是截斷b),y為m維的列向量代表每m個樣本結果的預測值。則矩陣式的推導如下所示:


 

因為X^tX為方陣,如果X^tX是可逆的,則參數θ得解析式可以寫成:


 

如果X的特征數n不是很大,通常情況下X^tX是可以求逆的,但是如果n非常大,X^tX不可逆,則用梯度下降法求解參數θ。

梯度下降法(GD):

在一元函數中叫做求導,在多元函數中就叫做求梯度。梯度下降是一個最優化算法,通俗的來講也就是沿着梯度下降的方向來求出一個函數的極小值。比如一元函數中,加速度減少的方向,總會找到一個點使速度達到最小。通常情況下,數據不可能完全符合我們的要求,所以很難用矩陣去求解,所以機器學習就應該用學習的方法,因此我們采用梯度下降,不斷迭代,沿着梯度下降的方向來移動,求出極小值。梯度下降法包括批量梯度下降法和隨機梯度下降法(SGD)以及二者的結合mini批量下降法(通常與SGD認為是同一種,常用於深度學習中)。

梯度下降法的一般過程如下:

1)初始化θ(隨機)

2)求J(θ)對θ的偏導:


 

3)更新θ


 

其中α為學習率,調節學習率這個超參數也是建模中的一個重要內容。因為J(θ)是凸函數,所以GD求出的最優解是全局最優解。

批量梯度下降法是求出整個數據集的梯度,再去更新θ,所以每次迭代都是在求全局最優解。


 

而隨機梯度下降法是求一個樣本的梯度后就去跟新θ,所以每次迭代都是求局部最優解,但是總是朝着全局最優解前進,最后總會到達全局最優解。


 

其他線性回歸模型:

在機器學習中,有時為了防止模型太復雜容易過擬合,通常會在模型上加入正則項,抑制模型復雜度,防止過擬合。在線性回歸中有兩種常用的正則,一個是L1正則,一個是L2正則,加入L1正則的稱為Lasso回歸,加入L2正則的成為Ridge回歸也叫嶺回歸。


Lasso回歸

嶺回歸

以下是個人所寫的線性回歸代碼:


 

各個回歸模型參數與結果對比以及與真實值的圖像


 

待更新。

詳細代碼可參考GitHub:代碼鏈接

 


免責聲明!

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



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