逻辑回归L1和L2正则化

article/2025/9/21 6:08:04

正则化

        正则化是用来防止模型过拟合的过程,常用的有L1正则化和L2正则化两种选项,分别通过在损失函数后加上参数向 量 的L1范式和L2范式的倍数来实现。这个增加的范式,被称为“正则项”,也被称为"惩罚项"。损失函数改变,基 于损失函数的最优化来求解的参数取值必然改变,我们以此来调节模型拟合的程度。

L1范式表现为参数向量中 的每个参数的绝对值之和,

L2范数表现为参数向量中的每个参数的平方和的开方值。

重要参数penalty & C

参数说明
penalty可以输入"l1"或"l2"来指定使用哪一种正则化方式,不填写默认"l2"。 注意,若选择"l1"正则化,参数solver仅能够使用求解方式”liblinear"和"saga“,若使用“l2”正则 化,参数solver中所有的求解方式都可以使用
CC正则化强度的倒数,必须是一个大于0的浮点数,不填写默认1.0,即默认正则项与损失函数的 比值是1:1。C越小,损失函数会越小,模型对损失函数的惩罚越重,正则化的效力越强,参数 会逐渐被压缩得越来越小

L1正则化和L2正则化虽然都可以控制过拟合,但它们的效果并不相同。当正则化强度逐渐增大(即C逐渐变小), 参数 的取值会逐渐变小,但L1正则化会将参数压缩为0,L2正则化只会让参数尽量小,不会取到0。

通过建立两个逻辑回归来看L1和L2的正则化差别

1.导入所需库

from sklearn.linear_model import LogisticRegression as LR
from sklearn.datasets import load_breast_cancer
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

2.读取数据并且查看数据维度

data = load_breast_cancer()
X = data.data
y = data.target
data.data.shape

 3.创建L1,L2并查看每个特征对应参数

lrl1 = LR(penalty="l1",solver="liblinear",C=0.5,max_iter=1000)
lrl2 = LR(penalty="l2",solver="liblinear",C=0.5,max_iter=1000)
#逻辑回归的重要属性coef_,查看每个特征所对应的参数
lrl1 = lrl1.fit(X,y)
lrl1.coef_
(lrl1.coef_ != 0).sum(axis=1)
lrl2 = lrl2.fit(X,y)
lrl2.coef_

l1特征对应参数,很多为0

 l2特征对应参数

 4.可视化

l1 = []
l2 = []
l1test = []
l2test = []
Xtrain, Xtest, Ytrain, Ytest = train_test_split(X,y,test_size=0.3,random_state=420)
for i in np.linspace(0.05,1,19):lrl1 = LR(penalty="l1",solver="liblinear",C=i,max_iter=1000)lrl2 = LR(penalty="l2",solver="liblinear",C=i,max_iter=1000)lrl1 = lrl1.fit(Xtrain,Ytrain)l1.append(accuracy_score(lrl1.predict(Xtrain),Ytrain))l1test.append(accuracy_score(lrl1.predict(Xtest),Ytest))lrl2 = lrl2.fit(Xtrain,Ytrain)l2.append(accuracy_score(lrl2.predict(Xtrain),Ytrain))l2test.append(accuracy_score(lrl2.predict(Xtest),Ytest))
graph = [l1,l2,l1test,l2test]
color = ["green","black","lightgreen","gray"]
label = ["L1","L2","L1test","L2test"]    
plt.figure(figsize=(6,6))
for i in range(len(graph)):plt.plot(np.linspace(0.05,1,19),graph[i],color[i],label=label[i])
plt.legend(loc=4) #图例的位置在哪里?4表示,右下角
plt.show()

结果

结论: 可见,至少在我们的乳腺癌数据集下,两种正则化的结果区别不大。但随着C的逐渐变大,正则化的强度越来越 小,模型在训练集和测试集上的表现都呈上升趋势,直到C=0.8左右,训练集上的表现依然在走高,但模型在未知 数据集上的表现开始下跌,这时候就是出现了过拟合。我们可以认为,C设定为0.8会比较好。在实际使用时,基本 就默认使用l2正则化,如果感觉到模型的效果不好,那就换L1试试看


http://chatgpt.dhexx.cn/article/cbg4uZI0.shtml

相关文章

【机器学习】L1正则化和L2正则化

L1正则化和L2正则化 在机器学习实践过程中,训练模型的时候往往会出现过拟合现象,为了减小或者避免在训练中出现过拟合现象,通常在原始的损失函数之后附加上正则项,通常使用的正则项有两种:L1正则化和L2正则化。L1正则…

什么是L1和L2正则化,以及它们有什么区别

一、L1和L2正则化是什么? 在防止过拟合的方法中有L1正则化和L2正则化,L1和L2是正则化项,又叫做惩罚项,是为了限制模型的参数,防止模型过拟合而加在损失函数后面的一项。 在二维的情况下,黄色的部分是L2和…

L2正则化方法

背景 在机器学习中,无论是分类还是回归,都可能存在由于特征过多而导致的过拟合问题。当然解决的办法有 (1)减少特征,留取最重要的特征。 (2)惩罚不重要的特征的权重,即降低不重要…

对L1正则化和L2正则化的理解

一、 奥卡姆剃刀(Occams razor)原理: 在所有可能选择的模型中,我们应选择能够很好的解释数据,并且十分简单的模型。从贝叶斯的角度来看,正则项对应于模型的先验概率。可以假设复杂模型有较小的先验概率,简单模型有较大…

L1、L2正则化的原理及适用场景

1. L1正则化,也称Lasso回归 1.1 含义 权值向量 中各元素的绝对值之和,一般记作 。 1.2 公式表示 添加了L1正则化的损失函数一般可表示为: 1.3 作用 L1正则常被用来解决过拟合问题; L1正则化容易产生稀疏权值矩阵&#x…

机器学习中L1正则化和L2正则化

深度学习中的归一化(normalization)和正则化(regularization)_qq_26697045的博客-CSDN博客_权重归一化 1.L1和L2的区别 在机器学习中: - L1 regularization 是指向量中各个元素绝对值之和,通常表述为,线性回归中使用L1正则的模型也叫Lasso regularizati…

每天五分钟机器学习:L1正则化和L2正则化有什么区别?

本文重点 正则化包含L1正则化和L2正则化,本文将介绍一下这两个正则化有什么不同? 正则化 L1正则化 L1正则化目的是减少参数的绝对值总和,定义为: L2正则化 L2正则化的目的是减少参数平方的总和,定义为: 二者的区别? 1、L1正则化会使得某一维的权重为0,产生稀疏权…

L1、L2正则化总结

为什么不用L0范数而用L1范数? L0范数是向量中非0元素的个数,若使用L0范数来规则化一个参数矩阵,就是希望其稀疏,大部分元素都是0。但L0范数难以优化求解,L1范数是L0范数的最优凸近似,且比L0范数更易优化求解。 L1和…

L1正则化 L2正则化的Python 实现

上一篇文档 https://blog.csdn.net/xingzhe2001/article/details/86316712 介绍了L1 L2正则化 本文介绍L1, L2 正则化的实现 L1正则化 代码 def L1Norm(l, theta):return np.dot(np.abs(theta), np.ones(theta.size)) * ldef L1NormPartial(l, theta):return np.sign(theta…

一文了解L1正则化与L2正则化

正则化的目的? 欠拟合从字面意思来看就是欠缺拟合程度,这一般在复杂度很低的模型中出现。从数学上来看,一元一次函数为一条直线、一元二次函数为一个曲线,以此类推。那么参数越多,其越能拟合更复杂的特征,…

【学习笔记】深刻理解L1和L2正则化

深刻理解L1和L2正则化 学习视频:BV1Z44y147xA、BV1gf4y1c7Gg、BV1fR4y177jP up主:王木头学科学 L1、L2正则化即使用L1、L2范数来规范模型参数。 凡是减少泛化误差,而不是减少训练误差的方法,都可以称为正则化方法。 通俗来说&am…

L1正则化和L2正则化(从解空间角度)

文章目录 一、什么是过拟合?二、为什么模型会过拟合?三、如何防止模型过拟合?四、L1正则和L2正则4.1 L1、L2的区别4.2 为什么正则化能够防止过拟合?4.3 为什么L1正则具有稀疏性或者说L1正则能够进行特征选择? 最后&…

机器学习之L1正则化和L2正则化(附源码解析)

前言 今天还是机器学习的基础知识内容,也是最基础的哈。首先说一下什么是正则化,其实它就是一个减少方差的策略。那么什么是方差呢?在这里也引入一个和方差相辅相成的概念--偏差。 偏差度量了学习算法的期望预测与真实结果的偏离程度&#…

L2正则化(Regularization)

正则化(Regularization) 深度学习可能存在过拟合问题——高方差,有两个解决方法,一个是正则化,另一个是准备更多的数据,这是非常可靠的方法,但你可能无法时时刻刻准备足够多的训练数据或者获取…

pytorch实现L2和L1正则化regularization的方法

pytorch实现L2和L1正则化的方法 目录 目录 pytorch实现L2和L1正则化的方法 1.torch.optim优化器实现L2正则化 2. 如何判断正则化作用了模型? 2.1 未加入正则化loss和Accuracy 2.1 加入正则化loss和Accuracy 2.3 正则化说明 3.自定义正则化的方法 3.1 自定…

L1正则化与L2正则化的区别

摘要 正则化的本质是在Cost Function中添加的p-范数。本文从正则化的本质p-范数入手,解释了L1正则化和L2正则化的区别。 正则化 在Cost Function上添加了正则化项,就能降低模型的过拟合程度,这就是正则化的作用。 关于正则化更细节的讲述&…

正则化的作用以及L1和L2正则化的区别

0 正则化的作用 正则化的主要作用是防止过拟合,对模型添加正则化项可以限制模型的复杂度,使得模型在复杂度和性能达到平衡。 常用的正则化方法有L1正则化和L2正则化。L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些…

详解L1和L2正则化

大纲: L1和L2的区别以及范数相关知识对参数进行L1和L2正则化的作用与区别pytorch实现L1与L2正则化对特征进行L2正则化的作用 L1和L2的区别以及范数 使用机器学习方法解决实际问题时,我们通常要用L1或L2范数做正则化(regularization&#xf…

L1正则化和L2正则化的详细直观解释

正则化(Regularization) 转自:此处 机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作ℓ1ℓ1-norm和ℓ2ℓ2-norm,中文称作L1正则化和L2正则化,或者…

L1正则化和L2正则化讲解

L1正则化和L2正则化讲解 在机器学习实践过程中,训练模型的时候往往会出现过拟合现象,为了减小或者避免在训练中出现过拟合现象,通常在原始的损失函数之后附加上正则项,通常使用的正则项有两种:L1正则化和L2正则化。 L1…