ElasticNet回归及机器学习正则化
来源:互联网 发布:淘宝男装潜力卖家入口 编辑:程序博客网 时间:2024/06/09 21:25
今晚在练习kaggle时遇到了弹性网络回归,花了些时间简单查了一些资料,算是稍微理解了些。
要想理解ElasticNet回归,正则化是必须要首先知道的,其次是岭回归和Lasso回归,知道了这些,弹性网回归自然也就明白了。
首先来看正则化:
假设我们都知道利用最小二乘法来做线性回归,最小二乘法回归成功的条件是(我得承认以下的所有图都是我盗的):
即上面这个函数(损失函数,目前也是目标函数)达到最小值,可得到最优的拟合参数(即θ )。
但是存在这样一种情况,如果我们用来拟合的自变量过多(或者说特征变量过多),而且特征变量之前存在很高的相关关系,比如下面这种情况:
以上两个函数都可以很好的拟合数据,但右边的函数显然有过拟合的嫌疑,为了避免这种情况,有两种方法:1、舍掉x^3和x^4这两个变量(这就是所谓的特征选择,舍弃无用的特征变量。可以人工选择,也可以利用算法来做。但有些时候我们可能并不希望舍弃数据,一方面特征选择有一定的不确定性,另一方面这个过程是比较繁琐的,这种时候我们可以采用第二种方法来解决这一问题。);2、减小θ3和θ4的值(即正则化,保留所有特征变量,但减少变量参数的值)。
要减小θ3和θ4的值,我们可以在损失函数的后面加上(1000*θ3^2+1000*θ4^2) , :
如此一来在最小化目标函数时,因为θ3和θ4前面乘了1000这样大的数字,导致θ3和θ4的值会非常的小,目标达成。
上面我们有选择的让θ3和θ4的值变小,实际情况中,我们很难判断哪些特征变量需要正则化,所以一般情况下,我们是对所有的参数都正则化处理:
即目标函数设为J(θ),其中:
是正则项,lambda为正则参数。需要注意的是,j是从1开始的,这意味着函数的常数项(θ0)并没有被正则化。所以lambda不能设的太大,否则会导致除了常数项外,所有的参数值都很小,因变量近似等于常数项,出现欠拟合现象。
OK, 正则化介绍到此为止,来看看岭回归和Lasso回归:
岭回归的目标函数就是上面介绍的J(θ):
如果矩阵化的话,也写成:
即最小化loss函数+penalty函数,其中β就是θ(懒得编写公式,直接盗的图)
Lasso回归和岭回归的区别在于惩罚项的不同:
Lasso回归的惩罚项用的是绝对值(也称为L1正则化),而不是岭回归中的平方(L2正则化)。
再来看看ElasticNet回归,目标函数为:
也就是岭回归和Lasso回归的组合。
Python实现ElasticNet回归,有sklearn.linear_model.ElasticNetCV和sklearn.linear_model.ElasticNet两个函数可供选择,前者可以通过迭代选择最佳的lambda1和lambda2(当然你可以指定一组值),后者需要你指定lambda1和lambda2的值。
因为目标函数的形式是:
所以lambda1和lambda2的指定是通过l1_ratio和alpha来完成
附上代码:
from sklearn import linear_model#得到拟合模型,其中x_train,y_train为训练集ENSTest = linear_model.ElasticNetCV(alphas=[0.0001, 0.0005, 0.001, 0.01, 0.1, 1, 10], l1_ratio=[.01, .1, .5, .9, .99], max_iter=5000).fit(x_train, y_train)#利用模型预测,x_test为测试集特征变量y_prediction = ENSTest.predict(x_test))
参考网页:
1、http://www.cnblogs.com/jianxinzhou/p/4083921.html
2、http://www.jianshu.com/p/15dd20f8d02c
3、http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.ElasticNetCV.html
4、http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.ElasticNet.html#sklearn.linear_model.ElasticNet
0 0
- ElasticNet回归及机器学习正则化
- 岭回归、lasso、ElasticNet、正则化、L1、L2小结
- (sklearn)ElasticNet回归 sklearn.linear_model.ElasticNet用法
- Stanford机器学习---第三周.逻辑回归、正则化
- Stanford机器学习 第三周:逻辑回归与正则化
- 机器学习算法实现02-非线性逻辑回归正则化
- 机器学习笔记之线性回归的正则化
- 机器学习笔记之逻辑回归的正则化
- 机器学习笔记——正则化线性回归
- Spark2.0机器学习系列之12: 线性回归及L1、L2正则化区别与稀疏解
- 斯坦福机器学习公开课7-x线性回归逻辑回归的正则化min
- 机器学习C6笔记:正则化文本回归(交叉验证,正则化,lasso)
- 机器学习-回归及分类问题总结
- 第三周-Coursera/Stanford机器学习课程学习笔记-逻辑回归&概率解释以及正则化
- coursera机器学习知识补充(一)——正则化在线性回归和Logistic回归的应用
- 机器学习入门系列三(关键词:逻辑回归,正则化)
- Linear Regression/线性回归与正则化(Andrew Ng 机器学习 一 )
- 机器学习入门系列三(关键词:逻辑回归,正则化)
- 20170507省赛= =
- 开始写个纸牌游戏(服务端&客户端)
- spring data jpa浅谈
- 递归及典型应用
- Crypto(密码)之各种python编码转换
- ElasticNet回归及机器学习正则化
- 04---文件(目录)操作 & 链接文件
- 如何运行一个vue工程
- 知识的表示与知识库
- 工作流引擎Activiti学习第一天(一)环境搭建
- DP——Arithmetic Slices
- 学习淘淘商城第五十九课(ActiveMQ持久化Topic消息)
- C++ Primer 第5版--练习10.34
- iOS小技巧纪录(持续更新)