机器学习-线性回归-损失函数+正则化regularization-06
1. 为什么要加上正则项
防止模型的过拟合 需要在损失函数LOSS(MSE或者交叉熵)再加上正则项
常用的惩罚项有L1正则项或者L2正则项

其实L1和L2正则的公式数学里面的意义就是范数,代表空间中向量到原点的距离

当我们把多元线性回归损失函数加上L2正则的时候,就诞生了Ridge岭回归。
当我们把多元线性回归损失函数加上L1正则的时候,就孕育出来了Lasso回归
其实L1和L2正则项惩罚项可以加到任何算法的损失函数上面去提高计算出来模型的泛化能力的

2 L1稀疏 L2平滑
L1

上式中λ是正则项系数,λ越大,说明我们算法工程师越看重模型的泛化能力,经验值是设置0.4


L1更容易相交于坐标轴上,而L2更容易相交于非坐标轴上。如果相交于坐标轴上,如图L1就使得是W2非0,W1是0,这个就体现出L1的稀疏性。如果没相交于坐标轴,那L2就使得W整体变小。通常我们为了去提高模型的泛化能力L1和L2都可以使用。
L1稀疏性的作用:W=0的维度 做特征选择
L1的稀疏性在做机器学习的时候,还有一个副产品就是可以帮忙去做特征的选择。
3. 代码1--L2正则
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_reg = Ridge(alpha=0.4, solver="sag")
ridge_reg.fit(X, y)
print(ridge_reg.predict([[1.5]]))
print(ridge_reg.intercept_)
print(ridge_reg.coef_)
4 代码2--L2正则2
np.ravel(y) 是摊平
import numpy as np
from sklearn.linear_model import SGDRegressor
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)
sgd_reg = SGDRegressor(penalty="l2", max_iter=1000)
sgd_reg.fit(X, np.ravel(y))
print(sgd_reg.predict([[1.5]]))
print(sgd_reg.intercept_)
print(sgd_reg.coef_)
5. 代码3--l1正则
import numpy as np
from sklearn.linear_model import Lasso
from sklearn.linear_model import SGDRegressor
X = 2*np.random.rand(100, 1)
y = 4 + 3*X + np.random.randn(100, 1)
lasso_reg = Lasso(alpha=0.15, max_iter=30000)
lasso_reg.fit(X, np.ravel(y))
print(lasso_reg.predict([[1.5]]))
print(lasso_reg.intercept_)
print(lasso_reg.coef_)
sgd_reg = SGDRegressor(penalty="l1", max_iter=10000)
sgd_reg.fit(X, np.ravel(y))
print(sgd_reg.predict([[1.5]]))
print(sgd_reg.intercept_)
print(sgd_reg.coef_)
6. ElasticNet
L1 L2 正则项 都使用
import numpy as np
from sklearn.linear_model import SGDRegressor
from sklearn.linear_model import ElasticNet
X = 2*np.random.rand(100, 1)
y = 4+3*X+np.random.randn(100, 1)
elastic_net = ElasticNet(alpha=0.4, l1_ratio=0.15)
elastic_net.fit(X, np.ravel(y))
print(elastic_net.predict([[1.5]]))
sgd_reg = SGDRegressor(penalty="elasticnet", max_iter=1000)
sgd_reg.fit(X, np.ravel(y))
print(sgd_reg.predict([[1.5]]))
机器学习-线性回归-损失函数+正则化regularization-06的更多相关文章
- 机器学习入门10 - 正则化:简单性(Regularization for Simplicity)
原文链接:https://developers.google.com/machine-learning/crash-course/regularization-for-simplicity 正则化指的 ...
- zzL1和L2正则化regularization
最优化方法:L1和L2正则化regularization http://blog.csdn.net/pipisorry/article/details/52108040 机器学习和深度学习常用的规则化 ...
- 7、 正则化(Regularization)
7.1 过拟合的问题 到现在为止,我们已经学习了几种不同的学习算法,包括线性回归和逻辑回归,它们能够有效地解决许多问题,但是当将它们应用到某些特定的机器学习应用时,会遇到过拟合(over-fittin ...
- [DeeplearningAI笔记]改善深层神经网络1.4_1.8深度学习实用层面_正则化Regularization与改善过拟合
觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.4 正则化(regularization) 如果你的神经网络出现了过拟合(训练集与验证集得到的结果方差较大),最先想到的方法就是正则化(re ...
- [笔记]机器学习(Machine Learning) - 03.正则化(Regularization)
欠拟合(Underfitting)与过拟合(Overfitting) 上面两张图分别是回归问题和分类问题的欠拟合和过度拟合的例子.可以看到,如果使用直线(两组图的第一张)来拟合训,并不能很好地适应我们 ...
- 机器学习入门13 - 正则化:稀疏性 (Regularization for Sparsity)
原文链接:https://developers.google.com/machine-learning/crash-course/regularization-for-sparsity/ 1- L₁正 ...
- 线性回归和正则化(Regularization)
python风控建模实战lendingClub(博主录制,包含大量回归建模脚本和和正则化解释,2K超清分辨率) https://study.163.com/course/courseMain.htm? ...
- 《机器学习_01_线性模型_线性回归_正则化(Lasso,Ridge,ElasticNet)》
一.过拟合 建模的目的是让模型学习到数据的一般性规律,但有时候可能会学过头,学到一些噪声数据的特性,虽然模型可以在训练集上取得好的表现,但在测试集上结果往往会变差,这时称模型陷入了过拟合,接下来造一些 ...
- 机器学习(五)--------正则化(Regularization)
过拟合(over-fitting) 欠拟合 正好 过拟合 怎么解决 1.丢弃一些不能帮助我们正确预测的特征.可以是手工选择保留哪些特征,或者使用一 些模型选择的算法来帮忙(例如 PCA) 2.正则化. ...
- 吴恩达-机器学习+正则化regularization
随机推荐
- C++学习笔记一:windows系统配置C++开发环境(VS code+g++/clang++)
1.下载vscode 官网下载地址: https://code.visualstudio.com/ 安装时选择把软件加入到环境变量中这个选项 2.打开vscode,安装c/c++扩展插件 3.下载gc ...
- 单元测试框架pytest
1.什么是pytest pytest是一个非常成熟的全功能的Python测试框架,主要有以下特点: 简单灵活,容易上手,文档丰富 支持参数化,可以细粒度地控制要测试的测试用例 能够支持简单的单元测试和 ...
- 算法那么多,AI量化交易策略如何选择最佳算法?
常见算法优劣比较 算法没有最好,只有更好. 这个问题的答案取决于许多因素,例如股票市场的条件,数据集的质量和特征工程的有效等.接下来,我们来看看这些算法的优势和劣势: 神经网络:适用于复杂的非线性问题 ...
- TensorFlow C++ 初始化 Tensor 内存 到GPU 内存
最近使用TensorFlow C++版本实现神经网络的部署,我通过GPU 处理得到网络的输入值,因此输入值在GPU内存上保存, TF 输入tensor 的调用语句为 Tensor inputTenso ...
- ClickHouse(19)ClickHouse集成Hive表引擎详细解析
目录 Hive集成表引擎 创建表 使用示例 如何使用HDFS文件系统的本地缓存 查询 ORC 输入格式的Hive 表 在 Hive 中建表 在 ClickHouse 中建表 查询 Parquest 输 ...
- 基于注解玩转excel导出导入-基于注解玩转excel导出导入
title: 基于注解玩转excel导出导入 date: 2021-05-01 15:55:13.53 updated: 2021-12-26 17:43:19.505 url: https://ww ...
- ubuntu 之 lftp 上传 和下载
1. 安装 sudo apt-get install lftp 2. 简单教程 2.0 声明:上传或下载文件 用get 或 mget,这种方式 不包含文件夹本身,如果需要连文件夹一起上传或下载则需要使 ...
- [极客大挑战 2019]Havefun 1
[极客大挑战 2019]Havefun 1 一,审题,观察题目信息和知识点 观察题目,没发现有效信息 F12打开源代码,发现有一个GET传输. 知识点 GET方法的数据传输是通过URL传输的, ...
- C++ Traits Classes
参考博文 https://blog.csdn.net/lihao21/article/details/55043881 Traits classes 的作用主要是用来为使用者提供类型信息.在 C++ ...
- 文心一言 VS 讯飞星火 VS chatgpt (43)-- 算法导论5.4 7题
七.为使特征序列长度的下界变得更精确,请说明在 n 次硬币的公平抛掷中,不出现比Ign - 2lglgn 更长的连续正面特征序列的概率小于 1/n. 文心一言: 在 n 次硬币的公平抛掷中,每个硬币正 ...