天天看點

python實作線性回歸之嶺回歸

嶺回歸與多項式回歸的最大差別就是損失函數上的差別。嶺回歸的代價函數如下:

python實作線性回歸之嶺回歸

為了友善計算導數,通常也會寫成以下形式:

python實作線性回歸之嶺回歸

上述式子中w為長度為n的向量,不包括偏置項的系數 θ0,θ是長度為n+1的向量,包括偏置項系數θ0;m為樣本數,n為特征數。

嶺回歸的代價函數仍然是凸函數,是以可以利用梯度等于0的方式求得全局最優解:

python實作線性回歸之嶺回歸

上述方程與一般線性回歸方程相比多了一項λi,其中i表示機關矩陣,加入xtx是一個奇異矩陣(不滿秩),添加這一項之後可以保證該項可逆,由于機關矩陣上的對角元素均為1,其餘元素都為0,看起來像是一條山嶺,是以而得名。

還可以使用随機梯度下降算法來求解:

python實作線性回歸之嶺回歸

參數更新就可以如下表示:

python實作線性回歸之嶺回歸

​​​​

首先還是定義一個基類,各種線性回歸都需要繼承該基類:

嶺回歸的核心就是l2正則化項:

然後是嶺回歸的核心代碼:

最後是主函數:

結果:

python實作線性回歸之嶺回歸

繼續閱讀