机器学习--岭回归和Lasso回归

article/2025/9/28 21:17:56

任何数据都存在噪声和多重共线性
如何解决多重共线性 ?
1.算法角度(正则化)
2.数据角度(最有效果)

岭回归与Lasso回归的出现是为了解决线性回归出现的过拟合(数据间高度线性相关)以及在通过正规方程方法求解θ的过程中出现的x转置乘以x不可逆这两类问题的,这两种回归均通过在损失函数中引入正则化项来达到目的,具体三者的损失函数对比见下图:
在这里插入图片描述
其中λ称为正则化参数,如果λ选取过大,会把所有参数θ均最小化,造成欠拟合,如果λ选取过小,会导致对过拟合问题解决不当,因此λ的选取是一个技术活。

岭回归与Lasso回归最大的区别在于岭回归引入的是L2范数惩罚项,Lasso回归引入的是L1范数惩罚项,Lasso回归能够使得损失函数中的许多θ均变成0,这点要优于岭回归,因为岭回归是要所有的θ均存在的,这样计算量Lasso回归将远远小于岭回归。

一、岭回归

1.1 回归系数计算公式:

在这里插入图片描述
其中λ为正则系数,I为单位矩阵。

1.2 优点

缩减方法可以去掉不重要的参数,因此能更好地理解数据。此外,与简单的线性回归相比,缩减法能取得更好的预测效果。.岭回归作为一种缩减算法可以判断哪些特征重要或者不重要,有点类似于降维的效果

岭回归是加了二阶正则项的最小二乘,主要适用于过拟合严重或各变量之间存在多重共线性的时候,岭回归是有bias的,这里的bias是为了让variance更小。

缩减算法可以看作是对一个模型增加偏差的同时减少方差

1.3 应用场景

岭回归可以解决特征数量比样本量多的问题
变量间存在共线性(最小二乘回归得到的系数不稳定,方差很大)
应用场景就是处理高度相关的数据

1.4 简单应用

对糖尿病数据集进行岭回归建模

from pandas import Series,DataFrame
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inlinefrom sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_splitdiabetes = load_diabetes()
train = diabetes.data
target = diabetes.target
feature_names = diabetes.feature_namesX_train,X_test,y_train,y_test = train_test_split(train,target,test_size=0.2)rideg = Ridge(alpha=1.0)
rideg.fit(X_train,y_train)# 获取训练好模型的w参数
rideg.coef_# 对w参数绘制图形,通过w的大小可以进行特征选择
sns.set()
importances = Series(data=np.abs(rideg.coef_),index=feature_names).sort_values(ascending=False)
importances.plot(kind='bar')
plt.xticks(rotation=0)
plt.show()# 由图像我们选择前七个特征
importancesm_cols = ['sex','bmi','bp','s3','s4','s6','s5']
datasets = DataFrame(data=train,columns=feature_names)
X = datasets[importancesm_cols]
y = targetX_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2)
rideg = Ridge(alpha=1.0)
rideg.fit(X_train,y_train)from sklearn.metrics import mean_squared_error
mean_squared_error(y_test,rideg.predict(X_test))

图像如下:
在这里插入图片描述

二、Lasso回归

与岭回归相似的是,LASSO 回归同样是通过添加正则项来改进普通最小二乘法,不过这里添加的是 L1 正则项。即:
在这里插入图片描述

L1:L1正则化最大的特点是能稀疏矩阵,进行庞大特征数量下的特征选择
L1是模型各个参数的绝对值之和

L2:L2正则能够有效的防止模型过拟合,解决非满秩下求逆困难的问题
L2是模型各个参数的平方和的开方值。

2.1 简单应用

import numpy as np
from scipy.linalg import hilbert
from sklearn.linear_model import Lasso
import matplotlib.pyplot as plt
%matplotlib inline"""使用LASSO 回归拟合并绘图
"""
from sklearn.linear_model import Lassox = hilbert(10)
w = np.random.randint(2,10,10) # 随机生成 w 系数
y_temp = np.matrix(x) * np.matrix(w).T # 计算 y 值
y = np.array(y_temp.T)[0] #将 y 值转换成 1 维行向量  相当于给矩阵创建一个真实值
alphas = np.linspace(-2,2,10)
lasso_coefs = []
for a in alphas:lasso = Lasso(alpha=a,fit_intercept=False)lasso.fit(x,y)lasso_coefs.append(lasso.coef_)plt.plot(alphas,lasso_coefs) # 绘制不同alpha下的 w 拟合值
plt.xlabel('alpha')
plt.ylabel('w')
plt.title('Lasso Regression')
plt.scatter(np.linspace(0,0,10),parameters[0]) # 普通最小二乘法的 w 放入图中plt.show()

在这里插入图片描述
由图可见,当 alpha 取值越大时,正则项主导收敛过程,各 w 系数趋近于 0。当 alpha 很小时,各 w 系数波动幅度变大。


http://chatgpt.dhexx.cn/article/wRsflnKo.shtml

相关文章

LASSO和LARS

1、LASSO简介 LASSO是一种经典的松弛算法,其全称是The Least Absolute Shrinkage and Selectionator operator,于1996年由Tibshirani提出来。lasso的一个根本思想就是利用L1范式来诱导稀疏解,下面给出lasso的两种形式以及其等价性证明&#x…

R语言实现LASSO回归

Lasso回归又称为套索回归,是Robert Tibshirani于1996年提出的一种新的变量选择技术。Lasso是一种收缩估计方法,其基本思想是在回归系数的绝对值之和小于一个常数的约束条件下,使残差平方和最小化,从而能够产生某些严格等于0的回归…

python-LASSO回归模型

https://zhuanlan.zhihu.com/p/76055830 LASSO回归模型的应用 ①可视化方法确定值 import pandas as pd import numpy as np import matplotlib.pyplot as plt import matplotlib from sklearn import model_selection from sklearn.linear_model import Lasso, LassoCV font…

Lasso模型

Lasso是一种数据降维方法,该方法不仅适用于线性情况,也适用于非线性情况。Lasso是基于惩罚方法对样本数据进行变量选择,通过对原本的系数进行压缩,将原本很小的系数直接压缩至0,从而将这部分系数所对应的变量视为非显著…

Lasso算法理论介绍

先看一波过拟合: 图中,红色的线存在明显的过拟合,绿色的线才是合理的拟合曲线,为了避免过拟合,我们可以引入正则化。 下面可以利用正则化来解决曲线拟合过程中的过拟合发生,存在均方根误差也叫标准误差&…

Lasso回归系列二:Lasso回归/岭回归的原理

Lasso回归/岭回归的原理 在学习L1,L2正则化的作用和区别时,我们总是会看到这样的一副图片: 这幅图片形象化地解释了L1,L2对线性模型产生的不同的约束效果。 我最开始其实是不太理解为什么要这么画的。比如 1、L1范数(L1-norm)等…

回归问题-Lasso回归

Lasso(Least absolute shrinkage and selection operator)方法是以缩小变量集(降阶)为思想的压缩估计方法。它通过构造一个惩罚函数,可以将变量的系数进行压缩并使某些回归系数变为0,进而达到变量选择的目的。 正则化 正则化&am…

Lasso回归

维数灾难 高维数据 何谓高维数据?高维数据指数据的维度很高,甚至远大于样本量的个数。高维数据的明显的表现是:在空间中数据是非常稀疏的,与空间的维数相比样本量总是显得非常少。 在分析高维数据过程中碰到最大的问题就是维数…

1.1.3. Lasso(套索回归)

1.1.3. Lasso 一、简介 首先,Lasso同样是线性回归的一种变体。而文档中指出,它是一种能让参数 ω \omega ω稀疏的模型(作用)。它是压缩感知领域的基础(地位),在特定情况下,它可以“…

【机器学习】Lasso模型

一、引言 1.1 高维数据 何谓高维数据?高维数据指数据的维度很高,甚至远大于样本量的个数。高维数据的明显的表现是:在空间中数据是非常稀疏的,与空间的维数相比样本量总是显得非常少。 在分析高维数据过程中碰到最大的问题就是维…

多元线性回归-Lasso

目录 1.Lasso与多重共线性 2. Lasso的核心作用:特征选择 3. 选取最佳的正则化参数取值 1.Lasso与多重共线性 Lasso全称最小绝对收缩和选择算子(Least absolute shrinkage and selection operator),由于这个名称过于复杂所以简称为Lasso,和…

Lasso线性回归学习笔记(公式与代码实现)

目录 Lasso线性回归学习笔记(公式与代码实现)1 为什么要在线性回归中引入正则化项(简介)2 常见正则化项3 损失函数图像与正则化之后的图像3.1损失函数图像3.2 加了 L~1~ 正则项之后的损失函数图像 4 L~1~ 范数正则化的解中有更多零…

机器学习算法系列(五)- Lasso回归算法(Lasso Regression Algorithm)

阅读本文需要的背景知识点:线性回归算法、一丢丢编程知识 最近笔者做了一个基于人工智能实现音乐转谱和人声分离功能的在线应用——反谱(Serocs),感兴趣的读者欢迎试用与分享,感谢您的支持!serocs.cn 一、…

学习机器学习和深度学习的方法和步骤

学习机器学习和深度学习的方法和步骤 相信很多人都在找学习机器学习和深度学习的步骤和教程。作为过来人和大家一起交流一下。 我自己制作的一个思维导图希望对大家有帮助。

机器学习算法介绍

前言 谷歌董事长施密特曾说过:虽然谷歌的无人驾驶汽车和机器人受到了许多媒体关注,但是这家公司真正的未来在于机器学习,一种让计算机更聪明、更个性化的技术。 也许我们生活在人类历史上最关键的时期:从使用大型计算机&#xf…

机器学习之【提升方法】

机器学习【提升方法】 一、Adaboost的起源1.强可学习与弱可学习 二、怎样实现弱学习转为强学习1.怎样获得不同的弱分类器?BaggingBagging的弊端 2.怎样组合弱分类器? 三、Adaboost的提出四、Adaboost的基本概念五、Adaboost算法六、示例七、Boosting illustration 一、Adaboo…

(四)机器学习方法的分类

文章目录 一、监督学习二、非监督学习三、半监督学习四、增强学习五、机器学习的其他分类1. 批量学习(Batch Learning)2. 在线学习(Online Learning)3. 参数学习(Parametric Learning)4. 非参数学习 在上一…

【机器学习】之机器学习方法的分类

1,监督学习 给机器的训练数据拥有标记和答案 例如: 图像已经积累了标定信息银行已经积累了客户的信息和信用卡的信息 2,非监督学习 给机器的训练数据没有标记或答案 对没有标记的数据进行分类 – 聚类分析 对数据进行降维处理 特征提取…

机器学习常用方法

在本篇文章中,我将对机器学习做个概要的介绍。本文的目的是能让即便完全不了解机器学习的人也能了解机器学习,并且上手相关的实践。这篇文档也算是EasyPR开发的番外篇,从这里开始,必须对机器学习了解才能进一步介绍EasyPR的内核。…

机器学习的几种学习方式

根据数据类型的不同,对一个问题的建模有不同的方式,人们首先会考虑算法的学习方式。将算法按照学习方式分类可以让人们在建模和算法选择时,根据输入数据来选择最合适的算法,从而获得最好的结果。 在机器学习领域,有以…