机器学习模型正则化笔记

这篇具有很好参考价值的文章主要介绍了机器学习模型正则化笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        正则化是一种在机器学习中用于防止模型过拟合并提高泛化能力的技术。过拟合是指模型在训练数据上表现很好,但在新的未见过的数据上表现较差的情况。正则化通过在模型的损失函数中添加一个正则项,来限制模型的复杂度,从而减少过拟合的风险。

常用的正则化方法有L1正则化和L2正则化。

正则化的效果是通过在损失函数中加入正则化项,使得模型在优化过程中更倾向于选择参数较小的解,从而减少模型的复杂度。这种限制模型复杂度的方式可以有效地减少过拟合的风险,并提高模型在新数据上的泛化能力。

在实际应用中,选择使用L1正则化还是L2正则化,或者两者的结合,需要根据具体的问题和数据情况来决定。通常情况下,L2正则化是更常用的选择,因为它在参数稀疏性和平滑性之间找到了一个平衡点,而L1正则化更适用于特征选择和模型压缩等场景。

一)L1正则化(L1 Regularization)

L1正则化通过在损失函数中添加L1范数(绝对值)项来约束模型参数。L1正则化鼓励模型参数稀疏化,即使得一部分参数为0,从而使模型更简单。这种稀疏性可以帮助过滤掉无关特征,减少模型的复杂度。

在损失函数中添加L1正则化项后,损失函数变为: L'(θ) = L(θ) + λ * ||θ||1

其中,L(θ)是原始的损失函数,θ是模型的参数,||θ||1表示L1范数,λ是控制正则化强度的超参数。λ越大,正则化的影响越大。

下面是使用L1正则化的示例代码,以线性回归为例:

import numpy as np
from sklearn.linear_model import Lasso

# 准备训练数据
X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
y = np.array([2, 3, 4, 5])

# 创建Lasso回归模型对象
lasso = Lasso(alpha=0.1)  # alpha是正则化强度参数

# 拟合模型
lasso.fit(X, y)

# 打印模型系数
print("模型系数:", lasso.coef_)
print("截距:", lasso.intercept_)

在上述示例代码中,我们使用了sklearn库中的Lasso类,它是使用L1正则化的线性回归模型。首先,我们准备了训练数据X和目标变量y,其中X是一个2维的特征矩阵,y是对应的目标值。

然后,我们创建了Lasso对象,通过设置alpha参数来控制正则化的强度。较大的alpha值会导致更强的正则化效果。

接下来,我们使用fit方法拟合模型,将训练数据和目标变量传入模型进行训练。

最后,我们可以通过访问coef_属性获取模型的系数(即特征权重),通过访问intercept_属性获取模型的截距。

请注意,L1正则化可以将一些模型系数压缩为0,从而实现特征选择的效果。因此,在实际使用中,你可以根据需要调整alpha的值,观察模型系数的变化,选择适当的特征进行建模。

二)L2正则化(L2 Regularization)

L2正则化通过在损失函数中添加L2范数(平方和)项来约束模型参数。L2正则化会使得模型的参数都很小,但不会强制为0,相对于L1正则化而言,L2正则化更倾向于均匀地减小所有参数的影响力。

在损失函数中添加L2正则化项后,损失函数变为: L'(θ) = L(θ) + λ * ||θ||2^2

其中,L(θ)是原始的损失函数,θ是模型的参数,||θ||2表示L2范数的平方,λ是控制正则化强度的超参数。

下面是使用L2正则化的示例代码,以线性回归为例:

import numpy as np
from sklearn.linear_model import Ridge

# 准备训练数据
X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
y = np.array([2, 3, 4, 5])

# 创建Ridge回归模型对象
ridge = Ridge(alpha=0.1)  # alpha是正则化强度参数

# 拟合模型
ridge.fit(X, y)

# 打印模型系数
print("模型系数:", ridge.coef_)
print("截距:", ridge.intercept_)

在上述示例代码中,我们使用了 sklearn 库中的 Ridge 类,它是使用 L2 正则化的线性回归模型。与L1正则化相比,代码中的主要差异在于使用的是 Ridge 类而不是 Lasso 类。

首先,我们准备了训练数据X和目标变量y,其中X是一个2维的特征矩阵,y是对应的目标值。

然后,我们创建了Ridge对象,通过设置alpha参数来控制正则化的强度。与L1正则化类似,较大的alpha值会导致更强的正则化效果。

接下来,我们使用fit方法拟合模型,将训练数据和目标变量传入模型进行训练。

最后,我们可以通过访问coef_属性获取模型的系数(即特征权重),通过访问intercept_属性获取模型的截距。

请注意,L2正则化倾向于使得模型的参数都很小,但不会强制为0,相对于L1正则化而言,L2正则化更倾向于均匀地减小所有参数的影响力。在实际使用中,你可以根据需要调整alpha的值,观察模型系数的变化,以及在新数据上的性能表现,选择适当的正则化强度。文章来源地址https://www.toymoban.com/news/detail-535052.html

到了这里,关于机器学习模型正则化笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包