特征工程系列:特征筛选的原理与实现(下)

本文深入探讨了机器学习中的特征选择方法,包括线性模型(L1与L2正则化)和随机森林的选择策略。L1正则化(Lasso)倾向于产生稀疏模型,适合特征选择;L2正则化(Ridge)提供稳定模型,利于特征理解。随机森林通过平均不纯度减少和平均精确度减少评估特征重要性。特征选择对于理解数据、排除不相关特征及提升模型性能至关重要,需要结合具体目标选择合适方法。
摘要由CSDN通过智能技术生成

本文为数据茶水间群友原创,经授权在本公众号发表。

关于作者:JunLiang,一个热爱挖掘的数据从业者,勤学好问、动手达人,期待与大家一起交流探讨机器学习相关内容~

0x00 前言

我们在《特征工程系列:特征筛选的原理与实现(上)》中介绍了特征选择的分类,并详细介绍了过滤式特征筛选的原理与实现。本篇继续介绍封装式和嵌入式特征筛选的原理与实现

0x01 特征选择实现方法三:线性模型与正则化

1.主要思想

当所有特征在相同尺度上时,最重要的特征应该在模型中具有最高系数,而与输出变量不相关的特征应该具有接近零的系数值。即使使用简单的线性回归模型,当数据不是很嘈杂(或者有大量数据与特征数量相比)并且特征(相对)独立时,这种方法也能很好地工作。

2.正则化模型

正则化就是把额外的约束或者惩罚项加到已有模型(损失函数)上,以防止过拟合并提高泛化能力。损失函数由原来的E(X,Y)变为E(X,Y)+alpha||w||,w是模型系数组成的向量(有些地方也叫参数parameter,coefficients),||·||一般是L1或者L2范数,alpha是一个可调的参数,控制着正则化的强度。当用在线性模型上时,L1正则化和L2正则化也称为Lasso和Ridge。

1)L1正则化/Lasso regression

L1正则化将系数w的l1范数作为惩罚项加到损失函数上,由于正则项非零,这就迫使那些弱的特征所对应的系数变成0。因此L1正则化往往会使学到的模型很稀疏(系数w经常为0),这个特性使得L1正则化成为一种很好的特征选择方法。

Lasso能够挑出一些优质特征,同时让其他特征的系数趋于0。当如需要减少特征数的时候它很有用,但是对于数据理解来说不是很好用。  

2)L2正则化/Ridge regression

L2正则化将系数向量的L2范数添加到了损失函数中。

  • 由于L2惩罚项中系数是二次方的,这使得L2和L1有着诸多差异,最明显的一点就是,L2正则化会让系数的取值变得平均。

  • 对于关联特征,这意味着他们能够获得更相近的对应系数。

  • Ridge将回归系数均匀的分摊到各个关联变量上。

L2正则化对于特征选择来说一种稳定的模型,不像L1正则化那样,系数会因为细微的数据变化而波动。所以L2正则化和L1正则化提供的价值是不同的,L2正则化对于特征理解来说更加有用:表示能力强的特征对应的系数是非零。

3.原理介绍

多元线性回归,具有n个特征值,预测公式如下。

640?wx_fmt=png

多元线性回归方程演变成求θ。

每个特征都有对应的权重系数coef,特征的权重系数的正负值代表特征与目标值是正相关还是负相关,特征的权重系数的绝对值代表重要性。

sklearn中 中LinearRegression的fit()方法就是通过训练集求出θ,LinearRegression的两个属性intercept和coef分别对应θ0和θ1-θn。

640?wx_fmt=png

4.代码实现

1)普通线性模型
#获取boston数据boston=datasets.load_boston()x=boston.datay=boston.target#过滤掉异常值x=x[y<50]y=y[y<50]reg=LinearRegression()reg.fit(x,y)#求排序后的coefcoefSort=reg.coef_.argsort()#featureNameSort: 按对标记值的影响,从小到大的各特征值名称#featureCoefSore:按对标记值的影响,从小到大的coef_featureNameSort=boston.feature_names[coefSort]featureCoefSore=reg.coef_[coefSort]print("featureNameSort:", featureNameSort)print("featureCoefSore:", featureCoefSore)# 输出:featureNameSort: ['NOX' 'DIS' 'PTRATIO' 'LSTAT' 'CRIM' 'INDUS' 'AGE' 'TAX' 'B' 'ZN' 'RAD' 'CHAS' 'RM']featureCoefSore: [-1.24268073e+01 -1.21088069e+00 -8.38888137e-01 -3.50952134e-01 -1.05574295e-01 -4.35179251e-02 -2.36116881e-02 -1.37702943e-02 7.93577159e-033.52748549e-02  2.50740082e-01  4.55
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值