多项式回归模型正则化(拉索,岭,弹性网)

目录

  • 多项式回归模型正则化(拉索,岭,弹性网)
  • 一、多项式回归模型正则化:
    • 1.L1正则化(lasso)回归
    • 2.L2正则化(Ridge)回归
    • 3.弹性网(ElasticNet)回归
  • 二、python可视化
    • 1.导入包
    • 2.产生数据
    • 3.模型对比及可视化
  • 总结

过拟合指学习时选择的模型所包含的参数过多,以至于出现模型对已知数据预测的很好,但对未知数据预测得很差得现象
——李航.《统计学习方法》

通常来说,我们收集到得数据是包含噪声的,朴素多项式回归对数据有很好的拟合效果,以导致其过多的拟合出了噪音关系,结果导致训练出的模型对训练数据集的拟合很好,但是对测试数据集的拟合能力就变的很差,此时模型的泛化能力就很差。因此,文章介绍了三种降低过拟合现象以增加泛化能力的方式并且用代码进行了可视化。


一、多项式回归模型正则化:

多项式回归模型减少过度拟合的方法之一对模型正则化,模型复杂度越低,模型就越不容易过拟合,通常做法是降低多项式各式的权重。主要有三种正则化方法:L1正则化,L2正则化,L1+L2正则化。
假设函数为:
h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n = [ θ 0 ⋮ θ n ] T ⋅ [ 1 x 1 x 2 ⋯ x n ] h_{\theta}\left( x \right) =\theta _0+\theta _1x_1+\theta _2x_2+\cdots +\theta _nx_n \\ =\left[ \begin{array}{c} \theta _0\\ \vdots\\ \theta _n\\ \end{array} \right] ^T\cdot \left[ \begin{matrix} 1& x_1& x_2\,\,\\ \end{matrix}\cdots \,\,x_n \right] hθ​(x)=θ0​+θ1​x1​+θ2​x2​+⋯+θn​xn​=⎣⎢⎡​θ0​⋮θn​​⎦⎥⎤​T⋅[1​x1​​x2​​⋯xn​]

1.L1正则化(lasso)回归

在原损失函数的基础上加上带训练参数θ的L1范数:
J ( θ ) = 1 2 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) + λ ∑ j = 1 m ∥ θ j ∥ 1 ] J\left( \theta \right) =\frac{1}{2m}\left[ \sum_{i=1}^m{\left( h_{\theta}\left( x^{\left( i \right)} \right) -y^{\left( i \right)} \right)}+\lambda \sum_{j=1}^m{\left\| \theta _j \right\| _1} \right] J(θ)=2m1​[i=1∑m​(hθ​(x(i))−y(i))+λj=1∑m​∥θj​∥1​]

特点:
(1)它将系数收缩为零(正好为零),这有助于特征选择;
(2)如果一批预测变量高度相关,则Lasso只挑选其中一个,并将其他缩减为零。

2.L2正则化(Ridge)回归

在原损失函数的基础上加上带训练参数θ的L2范数:
J ( θ ) = 1 2 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) + λ ∑ j = 1 m ∥ θ j ∥ 2 ] J\left( \theta \right) =\frac{1}{2m}\left[ \sum_{i=1}^m{\left( h_{\theta}\left( x^{\left( i \right)} \right) -y^{\left( i \right)} \right)}+\lambda \sum_{j=1}^m{\left\| \theta _j \right\| _2} \right] J(θ)=2m1​[i=1∑m​(hθ​(x(i))−y(i))+λj=1∑m​∥θj​∥2​]
特点:
(1)收缩系数的值,但不会达到零,这表明没有特征选择特征;

3.弹性网(ElasticNet)回归

ElasticNet是Lasso和Ridge回归技术的混合模型。它是用L1和L2作为正则化训练的。当有多个相关的特征时,Lasso可能随机选择其中一个,Elastic-net很可能两个都选择。
其损失函数为:
J ( θ ) = 1 2 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) + λ ∑ j = 1 m ∥ θ j ∥ 1 + 1 − λ 2 ∑ j = 1 m ∥ θ j ∥ 2 ] J\left( \theta \right) =\frac{1}{2m}\left[ \sum_{i=1}^m{\left( h_{\theta}\left( x^{\left( i \right)} \right) -y^{\left( i \right)} \right)}+\lambda \sum_{j=1}^m{\left\| \theta _j \right\| _1+\frac{1-\lambda}{2}\sum_{j=1}^m{\left\| \theta _j \right\| _2}} \right] J(θ)=2m1​[i=1∑m​(hθ​(x(i))−y(i))+λj=1∑m​∥θj​∥1​+21−λ​j=1∑m​∥θj​∥2​]
弹性网络是岭回归和Lasso回归的结合,其正则项就是岭回归和Lasso回归的正则项的混合,混合比例通过r来控制,当r=0时,弹性网络即等同于岭回归,而当r=1时,即相当于Lasso回归。
在Lasso和Ridge之间折衷的实际优点是它允许Elastic-Net继承一些Ridge的稳定性。

二、python可视化

代码如下:

1.导入包

import numpy as np
import matplotlib.pyplot as plt
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import PolynomialFeatures##特征扩展器
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression,Ridge,ElasticNet,Lasso

2.产生数据

代码如下:

##生成原始数据
np.random.seed=21
x=(np.linspace(-3,3,50)).reshape((-1,1))
def Y():return 0.2+x**2
y=Y()
y_train=y+np.random.normal(0,2,size=len(x)).reshape((-1,1))###多项式特征扩展
poly=PolynomialFeatures(degree=20)
poly.fit(x)
x_train=poly.transform(x)

3.模型对比及可视化

##--------数据标准化及模型选择,给polynomial regression,不加正则化
model1 = Pipeline([('sca', StandardScaler()),('lin_reg', LinearRegression()),
])
##--------数据标准化及模型选择,给polynomial regression加入L2正则化
model2 = Pipeline([('sca', StandardScaler()),('ridge', Ridge(solver='cholesky')),
])
##--------数据标准化及模型选择,给polynomial regression加入L1正则化
model3 = Pipeline([('sca', StandardScaler()),('lasso', Lasso()),
])
##--------数据标准化及模型选择,给polynomial regression加入L2+L1正则化(弹性网回归 ElasticNet Regression)
model4 = Pipeline([('sca', StandardScaler()),('elasticnet', ElasticNet()),
])model1.fit(x_train,y_train)
model2.fit(x_train,y_train)
model3.fit(x_train,y_train)
model4.fit(x_train,y_train)plt.ylim(-2,11)
plt.plot(x,y,'r')###无噪音原始函数关系
plt.scatter(x,y_train)##加入噪音后的散点图
plt.plot(x,model1.predict(x_train),'b')##无正则项的多项式回归
plt.plot(x,model2.predict(x_train),'g')##L2正则化的多项式回归
plt.plot(x,model3.predict(x_train),'black')##L1正则化的多项式回归
plt.plot(x,model4.predict(x_train),'m')##加入弹性网的多项式回归
plt.show()
features=x_train.shape[1]
print(features)
x_train.shape


上图红线为期望,输出蓝色线为无正则项的多项式回归结果,过拟合现象很严重,在加入正则项后过拟合现象基本消失。

总结

对于多项式回归过拟合现象,在其损失函数中加入正则项可有效缓解过拟合,降低模型复杂度。


参考:

  1. 多项式回归下的过拟合和欠拟合原理解释
  2. 机器学习算法(8)之多元线性回归分析理论详解
  3. normal linear model

python机器学习 多项式回归模型正则化(拉索,岭,弹性网)相关推荐

  1. python机器学习常用模型

    python机器学习 算法分类 监督学习 定义︰输入数据是由输入特征值和目标值所组成.函数的输出可以是一个连续的值(称为回归),或是输出是有限个离散值(称作分类). 分类: k-近邻 贝叶斯 决策树 ...

  2. python机器学习 | 多项式回归和拟合

    多项式回归和拟合.正则化 1 多项式回归 1.1 介绍 1.2 回归实现 2 拟合&正则化 2.1拟合问题 2.1.1 拟合出现的类型 2.2 解决拟合出现的问题 3 正则化 3.1 介绍 3 ...

  3. Python机器学习---KNN模型评价、追求

    文章目录 1. KNN模型评价 1.1 计算效率低,耗费计算资源较大 1.2 抗噪性较弱,对噪声数据(异常值)较为敏感 1.3 模型不稳定,可重复性较弱 1.4要进行归化处理: 2.模型的追求 2.1 ...

  4. Python机器学习之模型评估及选择

    1. 评估方法 1.回归:RMSE(平方根误差).MAE(平均绝对误差).MSE(平均平方误差).Coefficient of determination (决定系数R2). MAPE(平均绝对百分误 ...

  5. python 两点曲线_python机器学习分类模型评估

    python机器学习分类模型评估 1.混淆矩阵 在分类任务下,预测结果(Predicted Condition)与正确标记(True Condition)之间存在四种不同的组合,构成混淆矩阵(适用于多 ...

  6. 【Python机器学习】——多项式回归

    Python机器学习--多项式回归 文章目录 Python机器学习--多项式回归 一.Python机器学习 多项式回归 一.Python机器学习 多项式回归 多项式回归(Polynomial Regr ...

  7. 05机器学习--多项式回归与模型泛化及python实现

    目录 ①什么是多项式回归 ②scikit-learn中的多项式回归和Pipelin ③过拟合与欠拟合 ④验证数据集与交叉验证 ⑤回顾网格搜索 ⑥偏差方差权衡 ⑦解决过拟合问题--模型正则化1--岭回归 ...

  8. 机器学习中模型泛化能力和过拟合现象(overfitting)的矛盾、以及其主要缓解方法正则化技术原理初探...

    1. 偏差与方差 - 机器学习算法泛化性能分析 在一个项目中,我们通过设计和训练得到了一个model,该model的泛化可能很好,也可能不尽如人意,其背后的决定因素是什么呢?或者说我们可以从哪些方面去 ...

  9. 机器学习笔记——模型选择与正则化

    机器学习笔记--模型选择与正则化 一.模型选择 1.方差与偏差 2.过拟合与欠拟合 3.模型选择的平衡 4.欠.过拟合解决方法 二.正则化 1.正则化线性回归 2.正则化对数回归 3.训练集规模对误差 ...

最新文章

  1. mysql三个字段最优索引_mysql 多列索引优化
  2. duilib消息机制的介绍
  3. Idea怎么实现画类图
  4. 95-140-130-源码-transform-算子coGroup
  5. Linux 进程信号详细总结
  6. 一个unity2d横版小游戏
  7. java翻转字符串中的单词
  8. 音乐网站源码:Spring Boot + MyBatis + Vue 实现的
  9. popwindow的显示层面
  10. excel比较两列数据,相同?包含?
  11. 产品分析报告:潮汐-从番茄钟到场景化放松空间
  12. H3C S5820V2 MSR36-20
  13. 腾讯企业邮箱、网易企业邮箱、gamail企业邮箱、TOM企业邮箱测评
  14. 关于电子科技大学本科生宿舍热水情况调查
  15. python拼多多领现金_拼多多领现金100元攻略 100元快速提现技巧
  16. python 模拟微信浏览器请求_用chrome在电脑上模拟微信内置浏览器
  17. 诚聘.NET高级软件工程师
  18. 雷达信号处理基础 距离方程
  19. matlab通信工具comm,matlab-通信工具箱教程.ppt
  20. 俯视两道中学平面几何题

热门文章

  1. DISN:Deep Implicit Surface Network for High-quality Single-view 3D Reconstruction
  2. 真真感受到了c语言的古老!
  3. IPy——Python中ip地址处理模块
  4. 20221114-20221120工作总结
  5. IMX6Q_CPU中断与负荷均衡
  6. 情人必看的10大电影
  7. android 切换语言 广播,Android App 应用内多语言切换
  8. vscode远程debug mysql
  9. 马不停蹄的错过,轻而易举的辜负,不知不觉的陌路
  10. [5G][NR] PDSCH DMRS