sklearn之LASSO算法應用
前言: 本文介紹LASSO算法理論以及sklearn中Lasso算法如何調用和使用
一、LASSO算法和嶺迴歸算法對比
•Tibshirani(1996)提出了Lasso(The Least Absolute Shrinkage and
Selectionator operator)算法。
• 通過構造一個一階懲罰函數獲得一個精煉的模型;通過最終確定一些
指標(變量)的係數爲零(嶺迴歸估計係數等於0的機會微乎其微,
造成篩選變量困難),解釋力很強。
• 擅長處理具有多重共線性的數據,與嶺迴歸一樣是有偏估
LASSO算法的代價函數和嶺迴歸的代價函數都是爲了防止過擬合,但是,嶺迴歸算法很難使得模型參數爲0,而LASSO算法可以使得模型中的很多參數(對於本數據模型訓練影響不大)爲0,進而使得模型的特徵要素減少
二、sklearn中應有LASSO算法示例代碼
import numpy as np
from numpy import genfromtxt
from sklearn import linear_model
# 讀取數據
data = genfromtxt(r'longley.csv', delimiter=',')
# 切分數據
x_data = data[1:, 2:]
y_data = data[1:, 1, np.newaxis]
# 訓練模型
model = linear_model.LassoCV()
model.fit(x_data, y_data)
# 訓練後選擇的lasso係數
print(model.alpha_)
# 訓練後線性模型參數
print(model.coef_)
# 預測值
print(model.predict(x_data[-2, np.newaxis]))
print(y_data[-2]) # 真實值
三、代碼執行結果
20.03464209711722
[0.10206856 0.00409161 0.00354815 0. 0. 0. ]
[115.6461414]
[115.7]
由上面結果可知,LASSO算法會自動得到一個合適的λ值,並且其訓練出的模型中有很多參數爲0 ,可以認爲參數爲0的特徵是不重要的特徵,可以捨棄,進而簡化模型。
四、數據下載
鏈接:https://pan.baidu.com/s/14xi9nAW4DyY3mWFp_GTb0w
提取碼:3kf3