机器学习L1正则化的简单介绍及代码。

L1 正则化(Lasso 正则化)


L1正则化(也称为Lasso正则化)是一种用于控制机器学习模型复杂度的技术。

通过向损失函数添加L1范数项来实现正则化,鼓励模型产生稀疏权重,即将一些特征的权重调整为0。

公式:

L1正则化在优化过程中有两个关键特点:

1、由于正则化项中包含绝对值操作,导致损失函数不可导。因此,在求解最小化损失函数时,需要使用其他方法(如坐标下降、梯度下降等)。

2、正则化项的存在促使部分特征的权重变为0,从而实现特征选择和模型简化。

咱们看一个简单案例,使用了sklearn库中的Lasso类来


import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import Lasso
 
# 生成示例数据
np.random.seed(42)
X = np.linspace(-5, 5, num=100).reshape(-1, 1)
y = 2 * X + np.random.normal(0, 1, size=(100, 1))
 
# 创建Lasso模型对象
lasso = Lasso(alpha=0.1)  # 设置alpha参数,控制正则化强度
 
# 拟合数据
lasso.fit(X, y)
 
# 绘制优化复杂图形
fig, ax = plt.subplots()
ax.scatter(X, y, color="blue", label="Data")
ax.plot(X, lasso.predict(X), color="red", linewidth=2, label="L1 Regularization")
 
# 在图中绘制L1正则化项的等高线
beta_0 = np.linspace(-10, 10, 100)
beta_1 = np.linspace(-10, 10, 100)
B0, B1 = np.meshgrid(beta_0, beta_1)
Z = np.zeros_like(B0)
for i in range(len(beta_0)):
    for j in range(len(beta_1)):
        lasso.coef_ = np.array([B0[i,j], B1[i,j]])
        Z[i,j] = np.sum(np.abs(lasso.coef_))
ax.contour(B0, B1, Z, levels=20, colors="black", alpha=0.5)
 
ax.set_xlabel("X")
ax.set_ylabel("y")
ax.set_title("L1 Regularization with Contour Plot")
ax.legend()
plt.show()

实现L1正则化的模型:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值