关于L2正则化公式以及代码实现

MSE加上L2正则项的整体损失total loss公式:

\sum_{i=1}^{m}(XiW-Yi)^2 + \alpha\sum_{i=0}^{n}(Wi)^2

用L2范数可以写成\parallel X*W-y\parallel _{2}^{2}+ \alpha * \parallel W\parallel _{2}^{^{2}}

使用Ridge(L2),Lasso(L1)

import numpy as np
from sklearn.linear_model import Ridge

X = 2*np.random.rand(100,1)
y = 4 + 3*X + np.random.randn(100, 1)

''' 
创建Ridge对象,alpha是正则项系数,alpha越大代表越看重模型的泛化能力,越小代表越看重训练集的准确度
solver代表使用那种优化算法,sag是随机梯度下降
'''
ridge_reg = Ridge(alpha=400, solver='sag')

ridge_reg.fit(X, y)
print(ridge_reg.predict([[1.5]]))
# 截距项
print(ridge_reg.intercept_)
# 打印其他系数
print(ridge_reg.coef_)
import numpy as np
from sklearn.linear_model import Ridge
from sklearn.linear_model import SGDRegressor
from sklearn.linear_model import Lasso


X = 2*np.random.rand(100,1)
y = 4 + 3*X + np.random.randn(100, 1)


# 使用梯度下降的方法, penalty代表使用哪种正则项,max_iter代表迭代多少次

lasso_rag = Lasso(alpha=0.15, max_iter=30000)
lasso_rag.fit(X, y)
print(lasso_rag.predict([[1.5]]))
print(lasso_rag.intercept_)
print(lasso_rag.coef_)

使用梯度下降SGD代码实现

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)


# 使用梯度下降的方法, penalty代表使用哪种正则项,max_iter代表迭代多少次
sgd_reg = SGDRegressor(penalty='l2', max_iter=1000)
sgd_reg.fit(X, y.reshape(-1,))
print(sgd_reg.predict([[1.5]]))
print(sgd_reg.intercept_)
print(sgd_reg.coef_)

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值