[代碼實例] 機器學習線性回歸之嶺回歸與lasso

摘要:最小二乘法、嶺迴歸、Lasso的區別在於損失函數不同,本文sklearn+Python代碼實例演示嶺迴歸和Lasso,最後小結。

[代碼實例] 機器學習線性迴歸之嶺迴歸與lasso

歐式距離圖


一、數據集來源及格式

與上篇相同,根據前4個特徵預測發電量

[代碼實例] 機器學習線性迴歸之嶺迴歸與lasso

數據集格式及來源

使用Seaborn畫出各特徵與PE關係圖:

[代碼實例] 機器學習線性迴歸之嶺迴歸與lasso

可得各特徵與PE關係圖:

[代碼實例] 機器學習線性迴歸之嶺迴歸與lasso

各特徵與PE關係圖

請留意上圖於權重的關係。

二、嶺迴歸與lasso

嶺迴歸的損失函數為平方損失 + 所有權重平方和 * λ , λ>0。

lasso的損失函數為平方損失 + 所有權重絕對值 * λ , λ>0。

[代碼實例] 機器學習線性迴歸之嶺迴歸與lasso

損失函數對比圖

閱讀過 的朋友可知:

嶺迴歸相當於在更新權重時每次移除權重的 x%;

lasso相當於在更新權重時每次遞減(加)一個常數,使網絡中的權重儘可能為0,因此可用於特徵選擇;

兩者都是為了降低模型複雜度,提高泛化能力。

三、sklearn+Python代碼:

[代碼實例] 機器學習線性迴歸之嶺迴歸與lasso

輸出偏置和權重如下:

[代碼實例] 機器學習線性迴歸之嶺迴歸與lasso

λ=5.5,嶺迴歸與lasso權重

使用matplotlib畫出真實值和預測值的變化關係:

[代碼實例] 機器學習線性迴歸之嶺迴歸與lasso

畫圖代碼

圖如下[代碼實例] 機器學習線性迴歸之嶺迴歸與lasso

四、三者什麼時候更適用?

最小二乘法:特徵獨立分佈,且與結果相關;

嶺迴歸:特徵之間具有強相關性;

Lasso:存在無關特徵。

[代碼實例] 機器學習線性迴歸之嶺迴歸與lasso


分享到:


相關文章: