本篇文章给大家分享的是有关如何Python进行Lasso回归选取关键特征,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
今天,分享一下Lasso回归用于选取关键特征,数据探索性分析时,引入的特征太多,要直接用这些特征建模分析,需要对原始特征进一步筛选,只保留重要的特征,Lasso算法在模型系数绝对值之和小于某常数的条件下,谋求残差平方和最小,在变量选取方面的效果优于逐步回归、主成分回归、岭回归、偏最小二乘等,能较好的克服传统方法在模型选取上的不足。
我们选取部分GDP指标如下所示:
Lasso回归概念
Lasso回归方法属于正则化方法的一种,是压缩估计。它通过构造一个惩罚函数得到一个较对精炼的模型。使用它压缩一些系数,同时设定一些系数为零,保留了子集收缩的优点,是一种处理具有复共线性数据的有偏估计。
Lasso基本原理
Lasso以缩小特征集(降阶)为思想,是一种收缩估计方法。Lasso方法可以将特征的系数进行压缩并使某些回归系数变为0,进而达到特征选择的目的,可以广泛地应用于模型改进与选择。通过选择惩罚函数,借用Lasso思想和方法实现特征选择的目的。模型选择本质上是寻求模型稀疏表达的过程,而这种过程可以通过优化一个“损失”+“惩罚”的函数问题来完成。
Lasso参数估计定义
其中,为非负正则参数,控制着模型的复杂程度。越大,对特征较多的线性模型的惩罚力度就越大,从而最终获得一个特征较少的模型,称为惩罚项。参数的确定可以采用交叉验证法,选取交叉验证误差最小的值。最后,按照得到的值,用全部数据重新拟合模型即可。
Lasso适用场景
当原始特征中存在多重共线性时,Laso回归不失为一种很好的处理共线性的方法,它可以有效地对存在多重共线性的特征进行筛选。在机器学习中,面对海量的数据,首先想到的就是降维,争取用尽可能少的数据解决问题,从这层意义上说,用Lasso模型进行特征选择也是一种有效的降维方法。从理论上说,Lasso对数据类型没有太多限制,可以接收任何类型的数据,而且一般不需要对特征进行标准化处理。
Lasso回归方法优缺点
Lasso回归方法的优点是可以弥补最小二乘估计法和逐步回归局部最优估计的不足,可以很好地进行特征的选择,有效地解决各特征之间存在多重共线性的问题。缺点是当存在一组高度相关的特征时,Lasso回归方法倾向于选择其中的一个特征,而忽视其他所有的特征,这种情况会导致结果的不稳定性。虽然Lasso回归方法存在弊端,但是在合适的场景中还是可以发挥不错的效果的。
得出Lasso回归后,各个特征的值如下表所示
用Lasso回归,剔除值为0.000的系数,得出,影响国内生产总值的关键因素为,X1、X2、X3、X4、X5 、X6、X7、X8、X9、X11、X12,用这些特征进行下一步的研究。
#Lasso模型程序
import numpy as np
import pandas as pd
from sklearn.linear_model import Lasso
inputfile = 'C:\\Users\\27342\\Desktop\\data.csv' #输入的数据文件
data = pd.read_csv(inputfile) #读取数据
lasso = Lasso(1000) #调用Lasso()函数,设置λ的值为1000
lasso.fit(data.iloc[:,0:12],data['y'])
print('相关系数为:',np.round(lasso.coef_,5)) #输出结果,保留五位小数
## 计算相关系数非零的个数
print('相关系数非零个数为:',np.sum(lasso.coef_ != 0))
mask = lasso.coef_ != 0 #返回一个相关系数是否为零的布尔数组
print('相关系数是否为零:',mask)
outputfile = 'C:\\Users\\27342\\Desktop\\new_reg_data.csv' #输出的数据文件
new_reg_data = data.iloc[:, mask] #返回相关系数非零的数据
new_reg_data.to_csv(outputfile) #存储数据
print('输出数据的维度为:',new_reg_data.shape) #查看输出数据的维度
以上就是如何Python进行Lasso回归选取关键特征,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。