机器学习模型正则化笔记

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

常用的正则化方法有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的值,观察模型系数的变化,以及在新数据上的性能表现,选择适当的正则化强度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值