Lasso迴歸是一種流行應用於機器學習的線性迴歸方法,目的是透過忽略不相關的特徵變數來尋找最佳擬合模型。本文將介紹如何在Python中實作Lasso迴歸,並提供一個實際的資料集進行示範。
Lasso迴歸簡介
Lasso迴歸是一種透過在目標函數中加入懲罰項來解決普通最小平方法問題的方法。此懲罰項利用L1正規化(也稱為Lasso懲罰)來實現,其形式如下所示:
$J( eta)= rac{1}{2n}sum_{i=1}^ {n}(y_i-sum_{j=1}^{p}X_{ij} eta_j)^2 lpha sum_{j=1}^{p}| eta_j|$
#其中, $y$是反應變量,$X$是自變量矩陣,$ eta$是模型係數,$n$是樣本數,$p$是特徵數,$ lpha$是懲罰參數。 Lasso迴歸中難解的部分在於懲罰項的非凸最佳化問題。
實現Lasso迴歸的一種方法是透過座標下降(CD)演算法來求解。基本想法是在每次迭代中,只改變一個係數。這樣,CD演算法巧妙地繞過了懲罰項的非凸最佳化問題。
Python Lasso回歸實作
Python提供了許多機器學習函式庫,如Scikit-learn,能夠輕鬆實現Lasso迴歸。
首先,導入所需的函式庫如下:
import numpy as np import pandas as pd from sklearn.linear_model import LassoCV from sklearn.datasets import load_boston from sklearn.preprocessing import StandardScaler
接下來,我們載入Boston房價資料集並進行標準化處理:
boston = load_boston() X = boston.data y = boston.target X = StandardScaler().fit_transform(X)
然後,我們用Scikit-learn中的LassoCV實現Lasso回歸。此模型自動進行交叉驗證並選擇最優的$ lpha$值。
lasso_reg = LassoCV(alphas=np.logspace(-3, 3, 100), cv=5, max_iter=100000) lasso_reg.fit(X, y)
最後,我們輸出所得到的最優$ lpha$值與模型係數:
print('Best alpha:', lasso_reg.alpha_) print('Model coefficients:', lasso_reg.coef_)
完整程式碼範例:
import numpy as np import pandas as pd from sklearn.linear_model import LassoCV from sklearn.datasets import load_boston from sklearn.preprocessing import StandardScaler boston = load_boston() X = boston.data y = boston.target X = StandardScaler().fit_transform(X) lasso_reg = LassoCV(alphas=np.logspace(-3, 3, 100), cv=5, max_iter=100000) lasso_reg.fit(X, y) print('Best alpha:', lasso_reg.alpha_) print('Model coefficients:', lasso_reg.coef_)
輸出結果如下:
Best alpha: 0.10000000000000002 Model coefficients: [-0.89521162 1.08556604 0.14359222 0.68736347 -2.04113155 2.67946138 0.01939491 -3.08179223 2.63754058 -2.05806301 -2.05202597 0.89812875 -3.73066641]
這表明,透過Lasso回歸,我們可以確定對Boston房價預測的最佳模型,並提取與反應變數最相關的特徵。
結論
本文介紹如何在Python中實作Lasso迴歸,並透過一個實際的資料集示範了該方法的應用。 Lasso迴歸是一種非常有用的線性迴歸技術,特別適合處理高維度資料。在實際問題中,可以透過交叉驗證和標準化等技術,優化模型表現,並提取最相關的特徵。
以上是Python中的Lasso迴歸實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!