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

一、前述

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 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))

原文地址:https://www.cnblogs.com/LHWorldBlog/p/8336733.html

时间: 2024-12-13 15:14:01

【机器学习】--线性回归中L1正则和L2正则的相关文章

L1正则与L2正则

L1正则是权值的绝对值之和,重点在于可以稀疏化,使得部分权值等于零. L1正则的含义是 ∥w∥≤c,如下图就可以解释为什么会出现权值为零的情况. L1正则在梯度下降的时候不可以直接求导,在网上找到一种优化方法,不知是否可行 对于目标函数中包含加性的非平滑项并使用梯度下降求解的问题,如果可以使用proximal operator,则解法如下: 假设目标函数为 其中 可导,而 不可导.则每步迭代更新为 其中,如果 ,也就是题目中要求的L1范数正则化,则对应的 L2正则的重点在于防止过拟合,没有稀疏特

L1 正则 和 L2 正则的区别

L1,L2正则都可以看成是 条件限制,即 $\Vert w \Vert \leq c$ $\Vert w \Vert^2 \leq c$ 当w为2维向量时,可以看到,它们限定的取值范围如下图: 所以它们对模型的限定不同 而对于一般问题来说,L1 正则往往取到正方形的顶点,即会有很多分量为0,具有稀疏性,有特征选择的作用

大白话5分钟带你走进人工智能-第十四节过拟合解决手段L1和L2正则

                                                                                                  第十四节过拟合解决手段L1和L2正则 第十三节中,我们讲解了过拟合的情形,也就是过度的去拟合训练集上的结果了,反倒让你的模型太复杂.为了去解决这种现象,我们提出用L1,L2正则去解决这种问题. 怎么把正则应用进去?我们重新审视目标函数,以前我们可以理解目标函数和损失函数是一个东西.而有正则的含义之后,目

keras 添加L2正则 和 dropout层

在某一层添加L2正则: from keras import regularizer model.add(layers.Dense(..., kernel_regularizer = regularizers(0.001),...)) 在某一层之后添加dropout层: model.add(layers.Dropout(0.5)) 原文地址:https://www.cnblogs.com/rising-sun/p/11625963.html

【深度学习】L1正则化和L2正则化

在机器学习中,我们非常关心模型的预测能力,即模型在新数据上的表现,而不希望过拟合现象的的发生,我们通常使用正则化(regularization)技术来防止过拟合情况.正则化是机器学习中通过显式的控制模型复杂度来避免模型过拟合.确保泛化能力的一种有效方式.如果将模型原始的假设空间比作"天空",那么天空飞翔的"鸟"就是模型可能收敛到的一个个最优解.在施加了模型正则化后,就好比将原假设空间("天空")缩小到一定的空间范围("笼子")

正则引擎入门——正则文法匹配可以简单快捷(三)

整篇文章是对作者Russ Cox的文章Regular Expression Matching Can Be Simple And Fast的翻译,在我看来,该文章是入门正则引擎的较好的文章之一,读者在阅读之前,最好有一定的正则表达式的基础.翻译内容仅代表作者观点.侵删 该作者所有的文章的网址在此:https://swtch.com/~rsc/regexp/ 正文 正则表达式搜索算法 现在我们已经有了确定一个正则表达式是否匹配一个字符串的方法,将正则表达式转换为NFA之后以字符串为输入运行该NFA

机器学习-线性回归

Linear Regreesion         线性回归属于监督学习,因此方法和监督学习应该是一样的,先给定一个训练集,根据这个训练集学习出一个线性函数,然后测试这个函数训练的好不好(即此函数是否足够拟合训练集数据),挑选出最好的函数(cost function最小)即可.     Cost Function的用途:对假设的函数进行评价,cost function越小的函数,说明拟合训练数据拟合的越好:     1.最小二乘法:      何为最小二乘法,其实很简单.我们有很多的给定点,这时

线性回归中的前提如果

在谈线性回归模型的时候被问到,在线性回归中,有三个如果,是哪三个? 当时回答出来自变量x和因变量y之间是线性变化关系.也就是说,假设x进行线性变化的话,y也会有对应的线性变化. 提到数据样本的时候也答道了样本点之间要求是独立同分布的(依据MLE准则,假定对样本加上高斯白噪声e的情况下). 可是第三个终于还是没有答上来,面试官也没有再给提示,所以回来自己再查一下. LR的wiki页面(http://en.wikipedia.org/wiki/Linear_regression)中,有提到了LR的如

基础正则和扩展正则的作用

*基础正则表达式:basic regular expression BRE包括:^ $ . [] [^] 和扩展正则不同的是grep和sed不需要加参数也可以使用 ^^d 以d开头的行,例如:ls l|grep "^d" 给三剑客使用只查看以d开头的行,正则表达式的意思为,以.....开头,^d就是以d开头[[email protected] data]# grep '^m' oldboy.txt 以m开头的行my qq is 49000448 $以什么什么结尾的行,例如grep &q