博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【机器学习】--线性回归中L1正则和L2正则
阅读量:6072 次
发布时间:2019-06-20

本文共 1537 字,大约阅读时间需要 5 分钟。

一、前述

L1正则,L2正则的出现原因是为了推广模型的泛化能力。相当于一个惩罚系数。

二、原理

L1正则:Lasso Regression

 

L2正则:Ridge Regression

总结:

经验值 MSE前系数为1 ,L1 , L2正则前面系数一般为0.4~0.5 更看重的是准确性。

L2正则会整体的把w变小。

L1正则会倾向于使得w要么取1,要么取0 ,稀疏矩阵 ,可以达到降维的角度。

ElasticNet函数(把L1正则和L2正则联合一起):

总结:

1.默认情况下选用L2正则。

2.如若认为少数特征有用,可以用L1正则。

3.如若认为少数特征有用,但特征数大于样本数,则选择ElasticNet函数。

 代码一:L1正则

# L1正则import numpy as npfrom sklearn.linear_model import Lassofrom sklearn.linear_model import SGDRegressorX = 2 * np.random.rand(100, 1)y = 4 + 3 * X + np.random.randn(100, 1)lasso_reg = Lasso(alpha=0.15)lasso_reg.fit(X, y)print(lasso_reg.predict(1.5))sgd_reg = SGDRegressor(penalty='l1')sgd_reg.fit(X, y.ravel())print(sgd_reg.predict(1.5))

代码二:L2正则

# L2正则import numpy as npfrom sklearn.linear_model import Ridgefrom sklearn.linear_model import SGDRegressorX = 2 * np.random.rand(100, 1)y = 4 + 3 * X + np.random.randn(100, 1)#两种方式第一种岭回归ridge_reg = Ridge(alpha=1, solver='auto')ridge_reg.fit(X, y)print(ridge_reg.predict(1.5))#预测1.5的值#第二种 使用随机梯度下降中L2正则sgd_reg = SGDRegressor(penalty='l2')sgd_reg.fit(X, y.ravel())print(sgd_reg.predict(1.5))

代码三:Elastic_Net函数

 

 

# elastic_net函数import numpy as npfrom sklearn.linear_model import ElasticNetfrom sklearn.linear_model import SGDRegressorX = 2 * np.random.rand(100, 1)y = 4 + 3 * X + np.random.randn(100, 1)#两种方式实现Elastic_netelastic_net = ElasticNet(alpha=0.1, l1_ratio=0.5)elastic_net.fit(X, y)print(elastic_net.predict(1.5))sgd_reg = SGDRegressor(penalty='elasticnet')sgd_reg.fit(X, y.ravel())print(sgd_reg.predict(1.5))

 

转载于:https://www.cnblogs.com/LHWorldBlog/p/8336733.html

你可能感兴趣的文章
WPF 降低.net framework到4.0
查看>>
数据管理DMS 全量SQL诊断:你的SQL是健康的蓝色,还是危险的红色?
查看>>
搭建一个通用的脚手架
查看>>
开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
查看>>
开源磁盘加密软件VeraCrypt教程
查看>>
本地vs云:大数据厮杀的最终幸存者会是谁?
查看>>
阿里云公共镜像、自定义镜像、共享镜像和镜像市场的区别 ...
查看>>
shadowtunnel v1.7 发布:新增上级负载均衡支持独立密码
查看>>
Java线程:什么是线程
查看>>
mysql5.7 创建一个超级管理员
查看>>
【框架整合】Maven-SpringMVC3.X+Spring3.X+MyBatis3-日志、JSON解析、表关联查询等均已配置好...
查看>>
要想成为高级Java程序员需要具备哪些知识呢?
查看>>
带着问题去学习--Nginx配置解析(一)
查看>>
onix-文件系统
查看>>
java.io.Serializable浅析
查看>>
我的友情链接
查看>>
多线程之线程池任务管理通用模板
查看>>
CSS3让长单词与URL地址自动换行——word-wrap属性
查看>>
CodeForces 580B Kefa and Company
查看>>
开发规范浅谈
查看>>