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

在介绍岭回归算法与Lasso回归算法之前,先要回顾一下线性回归算法。根据线性回归模型的参数估计公式可知可知,得到的前提是矩阵可逆。换句话说就是样本各个特征(自变量)之间线性无关。然而在实际问题中,常常会出现特征之间出现多重共线性的情况,使得行列式的值接近于0,最终造成回归系数无解或者无意义。

为了解决这个问题,岭回归算法的方法是在线性回归模型的目标函数之上添加一个l2的正则项,进而使得模型的回归系数有解。具体的岭回归目标函数可表示为如下:

在Python中,岭回归算法的实现方法如下。

在Python中sklearn算法包已经实现了所有基本机器学习的算法。直接

from sklearn.linear_model import Ridge,RidgeCV

就可以调用该算法。

Iris数据集的加载与预处理已在前文中介绍过,此处不再累述。定义岭回归算法的方法为如下:

rigdeCV = RidgeCV(alphas=Lambdas,normalize=True,scoring=‘neg_mean_squared_error‘,cv=15)

其中alphas用于指定多个λ值的元组或数组对象,默认该参数包含0.1、1和10三个值。normalize指是否对数据集进行归一化处理。scoring指的是用于评估模型的度量方法,此处为RMSE均分误差。cv指交叉验证的重数。

此处我使用的是15重交叉验证法确定的λ值。上面Lambdas为logspace方法生成的数组。

Lambdas = np.logspace(-5,2,200)

最后训练,测试:

rigdeCV.fit(X_train,Y_train)
predictedResult = rigdeCV.predict(X_test)

注意此处predictedResult为Series不是List。

此时岭回归算法分类正确率为0.8。

岭回归算法固然解决了线性回归模型中矩阵不可逆的问题。但岭回归算法无论如何会保留建模时所有的变量,无法降低模型的复杂度。为了克服岭回归算法的缺点,Lasso回归算法被提了出来。

与岭回归算法类似,Lasso回归算法同样属于缩减性估计。而且在回归系数的缩减过程中,可以将一些不重要的回归系数缩减为0,以打到变量筛选的目的。Lasso回归算法的目标函数为如下:

具体在Python上实现的方式与岭回归算法类似,先导入liner_model中的LassoCV类,然后就可以使用:

lasso_cv = LassoCV(alphas=Lambdas,normalize=True,cv=10,max_iter=10000)

这里max_iter指的是模型最大迭代次数。其它参数与岭回归类似。

此时Lasso回归算法的准确率为0.8。

由于岭回归算法和Lasso回归算法的相似性,在本次实验中,二者的分类结果完全相同,分类准确率同为0.8。考虑到线性回归并不是特别适合分类问题,所以这种结果也可以接受。下一步的学习方向是GBDT以及多种算法的综合模型。

原文地址:https://www.cnblogs.com/asagiyukina/p/10853090.html

时间: 2024-07-30 17:00:13

用Python实现岭回归算法与Lasso回归算法并处理Iris数据集的相关文章

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

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

岭回归和lasso回归(转)

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

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

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

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

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

机器学习之线性回归、岭回归、Lasso回归

1.回归算法分类算法的目标值是标称型数据,而回归的目标变量是连续型数据,主要包括线性回归,岭回归,lasso回归,前向逐步回归. 2.线性回归线性回归主要用于处理线性数据,结果易于理解,计算复杂度不高,但是处理不了非线性数据.线性回归用最适直线(回归线)去建立因变量Y和一个或多个自变量X之间的关系.可以用公式来表示:Y = wX + b.其中w为权重,也称为回归系数,b为偏置顶. 3.理解线性回归线性回归从高中数学就接触过了,不过我们主要学习二维形式的线性回归,即y = kx + b.其中斜率k

岭回归与Lasso回归

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

数据回归分类预测的基本算法及python实现

数据回归分类预测的基本算法及python实现 关于数据的回归和分类以及分析预测.讨论分析几种比较基础的算法,也可以算作是比较简单的机器学习算法. 一.        KNN算法 邻近算法,可以用来做回归分析也可以用来做分类分析.主要思想是采取K个最为邻近的自变量来求取其应变量的平均值,从而做一个回归或者是分类.一般来说,K取值越大,output的var会更小,但bias相应会变大.反之,则可能会造成过拟合.因此,合理的选取K的值是KNN算法当中一个很重要的步骤. Advantages First

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