Lasso回归系列一:用LASSO回归做特征筛选踩坑记

用LASSO回归做特征筛选使用踩坑记

什么时候应该用LASSO回归进行特征筛选?使用时容易踩的坑你都避开了吗?Lasso回归的原理(请看我的另一篇博客: Lasso回归系列二:Lasso回归/岭回归的原理

顺便结合最近实验犯的错误,给大家谝一谝(陕西的都懂哈)

我采用如下pipeline来进行医学图像分类(数据集包含903张医学影像)

1、使用三个不同的神经网络模型对每张图片提取1024维特征

2、将三组特征以concate方式拼接后送入XGBoost做分类

这个最初的pipeline存在两个BUG

BUG1: 拼接后的特征是3072维,远大于样本数,这样的必然会出现过拟合

BUG2: 为了解决BUG1,我使用了Lasso进行特征筛选,但此时我犯下了第二个错误:送入Lasso的特征我没有进行归一化,这真是为难了Lasso这个线性回归器,所以你需要设置normalize=True,将输入Lasso的数据转化成正态分布,消除特征量纲,有助于线性回归模型更好地学习。

from sklearn.linear_model import Lasso, LassoCV

lasso = Lasso(alpha=lasso_alpha, random_state=1, normalize=True)  
lasso.fit(train_data, train_labels)
# 相关系数
mask = lasso.coef_ != 0.0
data = train_data.loc[:, mask] #然后将筛选后的data再送入XGBoost进行分类

如果想获取最佳的lasso系数,可以交叉验证进行选出最佳的lasso系数,然后再进行上面的Lasso拟合

# 使用Lasso进行特征提取
lambdas = np.logspace(-5,1,100)
lasso_cv = LassoCV(alphas=lambdas, normalize = True, cv=5)
lasso_cv.fit(train_data, train_labels)
print(lasso_cv.alpha_)

Lasso回归本质上是加入了L1-norm作为正则项的回归方法,所以还可以直接用Lasso回归去拟合一些线性问题。

关于Lasso回归的具体应用可以参考Kaggle房价预测代码:https://www.kaggle.com/code/miguelfzzz/house-price-prediction-lasso-ridge-and-more#5.-Modelling-

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值