sklearn中的线性回归大家族

1.多元线性回归

(1)基本原理
多元线性回归预测函数的本质是我们需要构建的模型,而构建预测函数的核心就是找到模型的参数向量ω。

(2)在逻辑回归和SVM中,都是先定义了损失函数,然后通过最小化损失函数或损失函数的某种变化来求解参数向量,以此将单纯的求解问题转化为一个最优化问题。在sklearn中,将损失函数称之为RSS残差平方和。
最小二乘法求解多元线性回归的参数,是通过最小化真实值和预测值之间的RSS来求解参数的方法。

(3)linear_model.LinearRegression
线性回归的类是目前为止学过的最简单的类,仅有四个参数就可以完成一个完整的算法。并且这些参数并没有一个是必填的,这说明线性回归的性能往往取决于数据本身,而并非是调参的能力,线性回归也因此对数据有着很高的要求。

2.回归类的模型评估指标

回归类与分类型算法的模型评估指标的相似之处在于,都是找真实标签和预测值的差异。只不过在分类型算法中,这个差异只有一种角度来评判:是否预测到了正确的分类;在回归类算法中,有两种不同的角度来看回归的效果:一,是否预测到了正确的数值,二,是否拟合到了足够的信息。

(1)是否预测到了正确的数值
均方误差是在RSS的基础上除以了样本总量,得到了每个样本上的平均误差。
虽然均方误差永远为正,但在sklearn的参数scoring下,均方误差作为评判标准时,是在计算"负均方误差"(neg_mean_squared_error)。

cross_val_score(reg,X,y,cv=10,scoring='neg_mean_squared_error')

(2)是否拟合了足够的信息
对于回归类算法来说,只探究数据预测是否准确是不足够的。除了数据本身的数值大小之外,还希望模型能够捕捉到数据的“规律”,而是否捕捉到了这些信息并无法使用MSE来衡量。为了衡量模型对数据上的信息量的捕捉,定义了R²,表示1-模型没有捕获到的信息量占真实标签中所带的信息量的比例,R²越接近1越好。
三种调用R²的方式:
①直接从metrics中导入r2_score

from sklearn.metrics import r2_score
r2_score(y_true=Ytest,y_pred=yhat)

②直接从线性回归LinearRegression的接口score来进行调用

r2 = reg.score(Xtest,Ytest)

③在交叉验证中,输入“r2”来调用

cross_val_score(reg,X,y,cv=10,scoring='r2').mean()

当R²显示为负数的时候,证明模型对数据的拟合结果非常糟糕,模型完全不能使用。

3.多重共线性:岭回归和Lasso

(1)多重共线性和相关性
多重共线性是一种统计现象,是指线性模型中的特征(解释变量)之间由于存在精确相关性或高度相关关系,多重共线性的存在会造成模型极大地便宜,无法模拟数据的全貌。
相关性是衡量两个或多个变量一起波动的程度的指标,可以是正的,也可以是负的。

在现实中,特征之间完全独立的情况是非常少的,数据多多少少会存在一些相关性。这些相关性在机器学习中通常无伤大雅,即便有一些偏差,只要最小二乘法能够求解,都可以无视它。对于机器学习来说,很有可能尽量排除相关性之后,模型的整体效果会受到巨大的打击。这种情况下,我们选择不处理相关性,只要结果好,一切万事大吉。

在线性模型中,除了线性回归之外,最知名的就是岭回归和Lasso了。这两个算法不是为了提升模型表现,而是为了修复漏洞而设计的。在实际中,使用Lasso或者岭回归,模型的效果往往会下降一些(因为删除了一小部分信息),所以在结果为上的机器学习领域有些被冷落的意味。

(2)岭回归
岭回归在多元线性回归的损失函数上加上了正则化项,表达式为ω的L2范式乘以正则化系数α。

①linear_model.Ridge
和线性回归相比,岭回归的参数要多一些,但真正核心的参数是正则化系数α。其他的参数是在希望使用最小二乘法之外的求解方法来求解岭回归的时候才需要,通常完全不需要去触碰这些参数。
虽然岭回归和Lasso是专注于解决多重共线性问题的,不是用来提高模型表现的,但当α在一定范围内变动时,消除多重共线性也许能够在一定程度上提高模型的泛化能力。但是泛化能力没有直接衡量的指标,因此往往只能够通过观察模型的准确性指标和方差来大致评价模型的泛化能力是否提高。

②选择最佳的正则化参数取值
应该使用交叉验证来选择最佳的正则化参数。

(3)Lasso
Lasso使用的是系数ω的L1范式乘以正则化系数α。
Lasso不是从根本上解决多重共线性,而是限制多重共线性带来的影响。

①L1正则化和L2正则化对系数ω的差异:
两个正则化都会压缩系数ω的大小,对标签贡献更少的额特征的系数会更小,也会更容易被压缩。不过,L2正则化只会将系数压缩到尽量接近0,但L1正则化主导稀疏性,因此系数会被压缩到0.

②Lasso的核心作用:特征选择

③选取最佳的正则化参数取值

4.非线性问题

(1)线性数据与非线性数据
对于回归问题,数据若能分布为一条直线,则是线性的,否则是非线性的;对于分类问题 ,数据分布若能使用一条直线来划分类别,则是线性可分的,否则数据则是线性不可分的。

(2)线性模型可以用来拟合非线性数据,而非线性模型也可以用来拟合线性数据。有的算法即使没有模型也可以处理各种数据,而有的模型既可以是线性模型,也可以是非线性模型。

①非线性模型拟合线性数据
无一例外,非线性模型几乎都可以在线性可分数据上有不逊于线性模型的表现。比如,使用随机森林来拟合一条曲线,毫无疑问会过拟合,因为线性数据对于非线性模型来说太过简单,很容易把训练集上的R²训练的很高,MSE训练的很低。

②线性模型拟合非线性数据
通常,线性模型用来拟合非线性数据或者对非线性可分的数据进行分类,表现会很糟糕,所以对于非线性数据或非线性可分的数据,不会使用线性模型进行建模。
改善线性模型在非线性数据上的效果的方法之一,是进行分箱,并且分箱后的效果可能会高过一些非线性模型。

③既是线性,又是非线性的模型
比如强大的支持向量机

5.线性回归处理非线性数据

(1)使用分箱处理非线性问题
对数据进行分箱——离散化

(2)多项式回归PolynomialFeatures
①灵感来源:支持向量机“高位呈现,低纬解释”的思维
支持向量机通过升维可以将非线性可分数据转化为线性可分,然后使用核函数在低维空间进行计算。同样,也可以让线性回归使用类似于升维的转换,将数据映射到高维空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值