最小二乘回归,岭回归,Lasso回归,弹性网络

普通最小二乘法

理论:

损失函数:

权重计算:

1、对于普通最小二乘的系数估计问题,其依赖于模型各项的相互独立性。

2、当各项是相关的,且设计矩阵 X的各列近似线性相关,那么,设计矩阵会趋向于奇异矩阵,这会导致最小二乘估计对于随机误差非常敏感,产生很大的方差。

例如,在没有实验设计的情况下收集到的数据,这种多重共线性(multicollinearity)的情况可能真的会出现。

使用:

from sklearn import datasets, linear_model

regr = linear_model.LinearRegression()

reg.fit(X_train, y_train)

岭回归

理论:

损失函数:

其中阿尔法大于0,它的值越大,收缩量越大,这样系数对公线性的鲁棒性也更强

当X矩阵不存在广义逆(即奇异性),最小二乘法将不再适用。可以使用岭回归

X矩阵不存在广义逆(即奇异性)的情况:

1)X本身存在线性相关关系(即多重共线性),即非满秩矩阵。

当采样值误差造成本身线性相关的样本矩阵仍然可以求出逆阵时,此时的逆阵非常不稳定,所求的解也没有什么意义。

2)当变量比样本多,即p>n时.

岭迹图:

岭迹图作用:

1)观察λ较佳取值;

2)观察变量是否有多重共线性;

在λ很小时,W很大,且不稳定,当λ增大到一定程度时,W系数迅速缩小,趋于稳定。

λ的选择:一般通过观察,选取喇叭口附近的值

岭参数的一般选择原则

选择λ值,使到

1)各回归系数的岭估计基本稳定;

2)用最小二乘估计时符号不合理的回归系数,其岭估计的符号变得合理;

3)回归系数没有不合乎实际意义的值;

4)残差平方和增大不太多。 一般λ越大,系数β会出现稳定的假象,但是残差平方和也会更大

岭回归选择变量的原则(仅供参考)

1)在岭回归中设计矩阵X已经中心化和标准化了,这样可以直接比较标准化岭回归系数的大小。可以剔除掉标准化岭回归系数比较稳定且值很小的自变量。

2)随着λ的增加,回归系数不稳定,震动趋于零的自变量也可以剔除。

3)如果依照上述去掉变量的原则,有若干个回归系数不稳定,究竟去掉几个,去掉哪几个,这无一般原则可循,这需根据去掉某个变量后重新进行岭回归分析的效果来确定。

使用:

import numpy as np

import matplotlib.pyplot as plt

from sklearn import linear_model

# X is the 10x10 Hilbert matrix

X = 1. / (np.arange(1, 11) + np.arange(0, 10)[:, np.newaxis])

y = np.ones(10)

# #############################################################################

# Compute paths

n_alphas = 200

alphas = np.logspace(-10, -2, n_alphas)

coefs = []

for a in alphas:

ridge = linear_model.Ridge(alpha=a, fit_intercept=False)

ridge.fit(X, y)

coefs.append(ridge.coef_)

# #############################################################################

# Display results

ax = plt.gca()

ax.plot(alphas, coefs)

Lasso回归

理论:

维数灾难:

何谓高维数据?高维数据指数据的维度很高,甚至远大于样本量的个数。高维数据的明显的表现是:在空间中数据是非常稀疏的,与空间的维数相比样本量总是显得非常少。

在分析高维数据过程中碰到最大的问题就是维数的膨胀,也就是通常所说的“维数灾难”问题。研究表明,随着维数的增长,分析所需的空间样本数会呈指数增长。

如下所示,当数据空间维度由1增加为3,最明显的变化是其所需样本增加;换言之,当样本量确定时,样本密度将会降低,从而样本呈稀疏状态。假设样本量n=12,单个维度宽度为3,那在一维空间下,样本密度为12/3=4,在二维空间下,样本分布空间大小为3*3,则样本密度为12/9=1.33,在三维空间下样本密度为12/27=0.44。

设想一下,当数据空间为更高维时,X=[x1x1,x2x2,….,xnxn]会怎么样?

1、需要更多的样本,样本随着数据维度的增加呈指数型增长;

2、数据变得更稀疏,导致数据灾难;

3、在高维数据空间,预测将变得不再容易;

4、导致模型过拟合。

数据降维:

对于高维数据,维数灾难所带来的过拟合问题,其解决思路是:1)增加样本量;2)减少样本特征,而对于现实情况,会存在所能获取到的样本数据量有限的情况,甚至远小于数据维度,即:d>>n。如证券市场交易数据、多媒体图形图像视频数据、航天航空采集数据、生物特征数据等。

主成分分析作为一种数据降维方法,其出发点是通过整合原本的单一变量来得到一组新的综合变量,综合变量所代表的意义丰富且变量间互不相关,综合变量包含了原变量大部分的信息,这些综合变量称为主成分。主成分分析是在保留所有原变量的基础上,通过原变量的线性组合得到主成分,选取少数主成分就可保留原变量的绝大部分信息,这样就可用这几个主成分来代替原变量,从而达到降维的目的。

但是,主成分分析法只适用于数据空间维度小于样本量的情况,当数据空间维度很高时,将不再适用。

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

目标函数:

1、Lasso 是估计稀疏系数的线性模型。

2、它在一些情况下是有用的,因为它倾向于使用具有较少参数值的情况,有效地减少给定解决方案所依赖变量的数量。 因此,Lasso 及其变体是压缩感知领域的基础。 在一定条件下,它可以恢复一组非零权重的精确集

弹性网络

1、弹性网络 是一种使用 L1, L2 范数作为先验正则项训练的线性回归模型。

2、这种组合允许学习到一个只有少量参数是非零稀疏的模型,就像 Lasso 一样,但是它仍然保持 一些像 Ridge 的正则性质。我们可利用 l1_ratio 参数控制 L1 和 L2 的凸组合。

3、弹性网络在很多特征互相联系的情况下是非常有用的。Lasso 很可能只随机考虑这些特征中的一个,而弹性网络更倾向于选择两个。

4、在实践中,Lasso 和 Ridge 之间权衡的一个优势是它允许在循环过程(Under rotate)中继承 Ridge 的稳定性。

损失函数:

使用:

from sklearn.linear_model import ElasticNet

enet = ElasticNet(alpha=0.2, l1_ratio=0.7)    #alpha=α   l1_ratio=ρ

原文地址:https://www.cnblogs.com/yongfuxue/p/9971749.html

时间: 2024-08-11 01:22:51

最小二乘回归,岭回归,Lasso回归,弹性网络的相关文章

用Python实现岭回归算法与Lasso回归算法并处理Iris数据集

在介绍岭回归算法与Lasso回归算法之前,先要回顾一下线性回归算法.根据线性回归模型的参数估计公式可知可知,得到的前提是矩阵可逆.换句话说就是样本各个特征(自变量)之间线性无关.然而在实际问题中,常常会出现特征之间出现多重共线性的情况,使得行列式的值接近于0,最终造成回归系数无解或者无意义. 为了解决这个问题,岭回归算法的方法是在线性回归模型的目标函数之上添加一个l2的正则项,进而使得模型的回归系数有解.具体的岭回归目标函数可表示为如下: 在Python中,岭回归算法的实现方法如下. 在Pyth

通俗易懂--岭回归(L2)、lasso回归(L1)、ElasticNet讲解(算法+案例)

1.L2正则化(岭回归) 1.1问题 想要理解什么是正则化,首先我们先来了解上图的方程式.当训练的特征和数据很少时,往往会造成欠拟合的情况,对应的是左边的坐标:而我们想要达到的目的往往是中间的坐标,适当的特征和数据用来训练:但往往现实生活中影响结果的因素是很多的,也就是说会有很多个特征值,所以训练模型的时候往往会造成过拟合的情况,如右边的坐标所示. 1.2公式 以图中的公式为例,往往我们得到的模型是: 为了能够得到中间坐标的图形,肯定是希望θ3和θ4越小越好,因为这两项越小就越接近于0,就可以得

岭回归和lasso回归(转)

回归和分类是机器学习算法所要解决的两个主要问题.分类大家都知道,模型的输出值是离散值,对应着相应的类别,通常的简单分类问题模型输出值是二值的,也就是二分类问题.但是回归就稍微复杂一些,回归模型的输出值是连续的,也就是说,回归模型更像是一个函数,该函数通过不同的输入,得到不同的输出. 那么,什么是线性回归,什么是非线性回归呢? 线性回归与非线性回归 前面说了,我们的回归模型是一个函数是吧,那么线性回归就是模型函数是由若干个基本函数线性加权得到的函数.也就是每一个基本函数前面都有一个权值来调和自己对

Lasso回归算法: 坐标轴下降法与最小角回归法小结

前面的文章对线性回归做了一个小结,文章在这: 线性回归原理小结.里面对线程回归的正则化也做了一个初步的介绍.提到了线程回归的L2正则化-Ridge回归,以及线程回归的L1正则化-Lasso回归.但是对于Lasso回归的解法没有提及,本文是对该文的补充和扩展.以下都用矩阵法表示,如果对于矩阵分析不熟悉,推荐学习张贤达的<矩阵分析与应用>. 1. 回顾线性回归 首先我们简要回归下线性回归的一般形式: hθ(X)=Xθhθ(X)=Xθ 需要极小化的损失函数是: J(θ)=12(Xθ?Y)T(Xθ?Y

TensorFlow(四) 用TensorFlow实现弹性网络回归算法(多线性回归)

弹性网络回归算法是综合lasso回归和岭回归的一种回归算法,通过在损失函数中增加L1正则和L2正则项,进而控制单个系数对结果的影响 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt from sklearn import datasets sess=tf.Session() #加载鸢尾花集 iris=datasets.load_iris() #花瓣长度,花瓣宽度,花萼宽度 预测 花萼长度 x_va

线性回归、岭回归和LASSO回归

尽管有些内容还是不懂,先截取的摘录. 1.变量选择问题:从普通线性回归到lasso 使用最小二乘法拟合的普通线性回归是数据建模的基本方法.其建模要点在于误差项一般要求独立同分布(常假定为正态)零均值.t检验用来检验拟合的模型系数的显著性,F检验用来检验模型的显著性(方差分析).如果正态性不成立,t检验和F检验就没有意义. 对较复杂的数据建模(比如文本分类,图像去噪或者基因组研究)的时候,普通线性回归会有一些问题:(1)预测精度的问题 如果响应变量和预测变量之间有比较明显的线性关系,最小二乘回归会

线性回归——lasso回归和岭回归(ridge regression)

目录 线性回归--最小二乘 Lasso回归和岭回归 为什么 lasso 更容易使部分权重变为 0 而 ridge 不行? References 线性回归很简单,用线性函数拟合数据,用 mean square error (mse) 计算损失(cost),然后用梯度下降法找到一组使 mse 最小的权重. lasso 回归和岭回归(ridge regression)其实就是在标准线性回归的基础上分别加入 L1 和 L2 正则化(regularization). 本文的重点是解释为什么 L1 正则化会

用R建立岭回归和lasso回归

1 分别使用岭回归和Lasso解决薛毅书第279页例6.10的回归问题 例6.10的问题如下: 输入例题中的数据,生成数据集,并做简单线性回归,查看效果 cement <- data.frame(X1 = c(7, 1, 11, 11, 7, 11, 3, 1, 2, 21, 1, 11, 10), X2 = c(26,     29, 56, 31, 52, 55, 71, 31, 54, 47, 40, 66, 68), X3 = c(6, 15, 8, 8, 6,     9, 17, 2

岭回归与Lasso回归

线性回归的一般形式 过拟合问题及其解决方法 问题:以下面一张图片展示过拟合问题 解决方法:(1):丢弃一些对我们最终预测结果影响不大的特征,具体哪些特征需要丢弃可以通过PCA算法来实现:(2):使用正则化技术,保留所有特征,但是减少特征前面的参数θ的大小,具体就是修改线性回归中的损失函数形式即可,岭回归以及Lasso回归就是这么做的. 岭回归与Lasso回归 岭回归与Lasso回归的出现是为了解决线性回归出现的过拟合以及在通过正规方程方法求解θ的过程中出现的x转置乘以x不可逆这两类问题的,这两种