首页 > 其他分享 >【机器学习】--线性回归中L1正则和L2正则

【机器学习】--线性回归中L1正则和L2正则

时间:2022-12-30 17:36:01浏览次数:71  
标签:-- sgd 正则 L2 L1 import reg



=========================================================

声明:由于不同平台阅读格式不一致(尤其源码部分),所以获取更多阅读体验!!

个人网站地址:​http://www.lhworldblog.com/2018/01/27/%e3%80%90%e6%9c%ba%e5%99%a8%e5%ad%a6%e4%b9%a0%e3%80%91-%e7%ba%bf%e6%80%a7%e5%9b%9e%e5%bd%92%e4%b8%adl1%e6%ad%a3%e5%88%99%e5%92%8cl2%e6%ad%a3%e5%88%99/

==========================================================



一、前述

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

二、原理

L1正则:Lasso Regression

【机器学习】--线性回归中L1正则和L2正则_正则

 

L2正则:Ridge Regression

【机器学习】--线性回归中L1正则和L2正则_elastic_02

总结:

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

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

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

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

【机器学习】--线性回归中L1正则和L2正则_Lasso_03

总结:

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

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

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

 代码一:L1正则


# L1正则
import numpy as np
from sklearn.linear_model import Lasso
from sklearn.linear_model import SGDRegressor


X = 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 np
from sklearn.linear_model import Ridge
from sklearn.linear_model import SGDRegressor



X = 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 np
from sklearn.linear_model import ElasticNet
from sklearn.linear_model import SGDRegressor


X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)
#两种方式实现Elastic_net
elastic_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))


 

标签:--,sgd,正则,L2,L1,import,reg
From: https://blog.51cto.com/u_11936913/5980853

相关文章

  • java 中的char , utf16 utf8
    在设计Java时决定采用16位的Unicode字符集....(中间省略)...现在16位的Char类型已经不能满足描述所有Unicode字符的需要了。Java为了解决这个问题的方法是使用码点和代码单......
  • Hive篇---Hive与Hbase整合
    =========================================================声明:由于不同平台阅读格式不一致(尤其源码部分),所以获取更多阅读体验!!个人网站地址:​​http://www.lhworldblog.......
  • 注解
    注解:或者叫注释,编译后生成xxx.class文件英文单词:Annotation,是一种引用数据类型注解可以出现在类上,属性上,方法上,变量上等... 元注解:用来标注”注解类型“的”注解“,......
  • 【Sqoop篇】----Sqoop从搭建到应用案例
    =========================================================声明:由于不同平台阅读格式不一致(尤其源码部分),所以获取更多阅读体验!!个人网站地址:​​http://www.lhworldblog.......
  • 基于AI边缘智能网关的工业质检应用
    成品质量检验是工业生产最后必不可少的环节,随着我国工业化的蓬勃发展,工业产品日益迈向高端化、精密化,对于工业产品的质量检验要求和投入成本也在不断提高,产品质检涉及到比......
  • 【机器学习】--Kmeans从初识到应用
    一.前述Kmeans算法一般在数据分析前期使用,选取适当的k,将数据分类后,然后分类研究不同聚类下数据的特点。Kmeans算法是一种无监督的算法。二.概念及原理Kmeans原理:随机选取k......
  • 大白话5分钟带你走进人工智能-第十四节过拟合解决手段L1和L2正则
                                                                    第十四节过拟合解决手段L1和L2正......
  • Android 教程
    Android是一个开源的,基于Linux的移动设备操作系统,主要使用于移动设备,如智能手机和平板电脑。Android是由谷歌及其他公司带领的开放手机联盟开发的。本教程将教会你基本......
  • 如何定义一个注解Annotation,以定义操作日志为例。
    /***定义操作日志注解*/@Target(ElementType.METHOD)#它表明注解使用的目标范围是方法METHOD,即该注解使用在一个方法上@Retention(RetentionPolicy.RUNTIME)#注解......
  • 一个PHP7.3的SWOOLE镜像
    公司的swoole镜像是基于centos6.10,php版本是7.3,swoole的版本是4.5,但php没有安装yasd扩展!用这个镜像的容器跑项目,要想进行swoole的debug,还必须安装它!而这个扩展偏偏无法通......