数据挖掘:模型选择——线性回归

线性回归

一元线性回归

最早接触的线性回归是y=ax+b的形式,这是对于一元线性回归来说。我们给入数据,通过最小二乘法,让真实值和预测值的残差平方和(也就是要优化的损失函数)最小。可对系数求一阶导数,让其为0,求得未知的a,b,得到方程。
数据挖掘:模型选择——线性回归_第1张图片

多元线性回归

而一般情况下,我们遇到的数据不是只有一个维度,而是多维数据,这时要用到多元线性回归。多元线性回归的公式为:
在这里插入图片描述
以上是一个数据对应的公式,如果在所有数据合在一起,则公式变为:
在这里插入图片描述
为了更加简洁,把上述公式改写为矩阵的格式。其中,X是我们的数据,w是需要求得参数,y^是预测的变量。
数据挖掘:模型选择——线性回归_第2张图片
在一元回归的求解时,定义了预测值与实际值之间的残差平方和为损失函数,通过让该函数最小,得到了要求的系数。在多元回归中,进行同样的处理,得到如下公式。
在这里插入图片描述
所以,我们的目标就是找到一组w,使得损失函数最小。
在这里插入图片描述
这里有两种方式求解,一是梯度下降法,二是正规方程法。
1:梯度下降法
在一元线性回归中,通过求导,另其为0,得到答案。但是在数据量特别大的时候,这种方法会很慢,这时可以使用梯度下降法,来更加迅速的求得使损失函数最小化的参数。
梯度下降法:相当于我们下山的过程,每次我们要走一步下山,寻找最低的地方,那么最可靠的方法便是环顾四周,寻找能一步到达的最低点,持续该过程,最后得到的便是最低点。
对于函数而言,便是求得该函数对所有参数(变量)的偏导,每次更新这些参数,直到到达最低点为止,注意这些参数必须在每一轮一起更新,而不是一个一个更新
数据挖掘:模型选择——线性回归_第3张图片
计算过程
定义的损失函数为:
在这里插入图片描述
为了让损失函数最小,参数值会沿着负梯度的方向下降。
梯度方向:求偏导后的结果。
下降的程度:学习率
在这里插入图片描述
数据挖掘:模型选择——线性回归_第4张图片
最后的参数变化的梯度下降公式:
在这里插入图片描述
参数通过不断的迭代,找到一组使得损失函数最小的参数。
关于学习率a

  • 如果a过小,那么学习的时间就会很长,导致算法的低效,不如直接使用最小二乘法。
  • 如果a过大,那么由于每一步更新过大,可能无法收敛到最低点。由于越偏离最低点函数的导数越大,如果a过大,某一次更新直接跨越了最低点,来到了比更新之前更高的地方。那么下一步更新步会更大,如此反复震荡,离最佳点越来越远。

2:正规方程法
也是对参数求偏导,但是应用矩阵求导的知识。
数据挖掘:模型选择——线性回归_第5张图片
其中,矩阵求导的规则如下:
在这里插入图片描述
所以,对公式进行化简后得到:
在这里插入图片描述
因为求最小值,所以要让一阶导数为0,即上面的结果等于0.
数据挖掘:模型选择——线性回归_第6张图片
这样就得到了参数的解。但是其中逆矩阵不一定存在解,即可能存在多重共线性(特征间的线性相关程度很大),因此加入L1,L2正则化来进行控制。
在梯度下降法的迭代次数一定时,这两种方法的结果差不多。

岭回归

岭回归是在原来的损失函数后面加了L2正则化。此时损失函数的公式为:
在这里插入图片描述
这时,再对参数w求偏导。
数据挖掘:模型选择——线性回归_第7张图片
另其一阶导数为0.
在这里插入图片描述
数据挖掘:模型选择——线性回归_第8张图片
这样就可以避免出现多重共线性。(矩阵的模不为0)
数据挖掘:模型选择——线性回归_第9张图片
可以看到a的值越大,矩阵对角线中的原始参数就会被压缩
数据挖掘:模型选择——线性回归_第10张图片
矩阵的对角线上由于加了a,所以不会出现为0的情况。除非有的地方a为0,或者矩阵对角线上的元素为-a。但是由于a是人为控制的,所以,可以通过调节a的值,来避免这种情况出现,即得到矩阵的逆永远存在。
数据挖掘:模型选择——线性回归_第11张图片
在这里插入图片描述
当存在高度相关关系的矩阵时,可以通过调大a,来让 矩阵的行列式变大,从而让逆矩阵变小,以此控制参数向量的偏移。当a越大,模型越不容易受到共线性的影响。

  • a的值越大,会导致参数的估计出现较大的偏移,无法正确拟合数据的真实面貌,原来参数的可解释性变差。
  • a的值越小,则会出现原来的多重共线性现象,影响预测结果。

Lasso回归

Lasso回归是在损失函数后面加上L1正则化,来避免多重共线性。
在这里插入图片描述
求解参数w过程依然是对w求偏导。
数据挖掘:模型选择——线性回归_第12张图片
另其一阶导数为0.
数据挖掘:模型选择——线性回归_第13张图片
对公式进行化简合并。
数据挖掘:模型选择——线性回归_第14张图片
但此时发现,想要求解参数,又出现了逆矩阵不存在的情况。所以,Lasso无法解决由于特征间高度相关带来的逆矩阵不存在的情况,而岭回归可以解决特征间的精确相关关系导致的最小二乘法无法使用的问题
但在实际应用中,我们基本不会遇到精确相关的多重共线性问题,每个特征的数据都存在自身的一些偏差和波动。即Y1=aY2,a为常数,这种情况很少见。因此,我们假设矩阵的逆是一定存在的。所以可以得到:
在这里插入图片描述
通过增加a,我们可以为参数w的计算增加一个负项,从而限制参数估计中w的大小,而防止多重共线性引起的参数w被估计过大导致模型失准的问题。Lasso不是从根本上解决多重共线性问题,而是限制多重共线性带来的影响
L1,L2都会压缩系数w的大小,对标签值贡献少的特征,其系数也会很小,也更容易被压缩。不过,L2正则化只会将系数压缩到尽量接近0,但L1正则化主导稀疏性,因此会将系数压缩到0。因此,可以用L1来进行特征选择,将对标签值贡献少的特征剔除。

多项式回归

线性回归是用一条直线去拟合数据,对于非线性数据,线性回归的效果不是很好,此时,可以用多项式回归来拟合非线性数据。
数据挖掘:模型选择——线性回归_第15张图片
线性回归中,我们的拟合方程自变量都是一次项:
在这里插入图片描述
通过多项式变化(线性模型中的升维工具,通过增加自变量上的次数,而将数据映射到高维空间的方法),使得线性模型能拟合非线性数据。一维多项式回归的方程为:
在这里插入图片描述
多维多项式回归方程为:
在这里插入图片描述
当我们进行多项式转换的时候,多项式会产出到最高次数为止的所有低高次项。通过特征与自身特征相乘或与其他特征相乘,来得到新的变量带入方程中,也可以用来做特征工程,构造一系列特征之间相乘的组合。
数据挖掘:模型选择——线性回归_第16张图片
关于多项式是线性模型还是非线性模型,这里加入狭义线性模型和广义线性模型的定义。即多项式回归时广义线性模型,而非狭义线性模型。
数据挖掘:模型选择——线性回归_第17张图片
另外一个需要注意的点是,线性回归进行多项式变化后被称为多项式回归,但这并不代表多项式变化只能够与线性回归连用。在现实中,多项式变化疯狂增加数据维度的同时,也增加了过拟合的可能性,因此多项式变化多与能够处理过拟合的线性模型如岭回归,Lasso等来连用,效果会好一些。

数据集的处理

在用模型之前,通常先要把数据处理好。对于线性回归模型,有几个点是需要注意的。

数据的无量纲化

由于线性回归模型的损失函数采用的是最小二乘法,衡量预测值与真实值的差异,即两点间的距离。因此,如果把房屋房间数和房屋面积的数据放入其中,去预测房屋价格,那么房间数相对面积要小很多,在得到最后的系数时,也会有偏差。另外,在用梯度下降法求解时,也会影响求解速度。所以,要消除数据间数值大小的差异,同时要保留数据的分布,用到的方法有归一化,标准化。

分类数据的处理

因为衡量预测值与真实值的差异,即数值的大小。而分类数据的123之间是没有数值大小可言的,是人主观赋予的意义,但是计算机却无法识别,因为,要对数据进行独热编码。
独热编码:大部分算法是基于向量空间中的度量来进行计算的,为了使非偏序关系的变量取值不具有偏序性,并且到原点是等距的。使用one-hot编码,将离散特征的取值扩展到了欧式空间,离散特征的某个取值就对应欧式空间的某个点。
将离散型特征使用one-hot编码,会让特征之间的距离计算更加合理。比如,有一个离散型特征,代表工作类型,该离散型特征,共有三个取值。

  • 不使用one-hot编码,其表示分别是x_1 = (1), x_2 = (2), x_3 = (3)。两个工作之间的距离是,(x_1, x_2) = 1, d(x_2, x_3) = 1, d(x_1, x_3) = 2。显然这样的表示,计算出来的特征的距离是不合理。
  • 如果使用one-hot编码,则得到x_1 = (1, 0, 0), x_2 = (0, 1, 0), x_3 = (0, 0, 1),那么两个工作之间的距离就都是sqrt(2):即每两个工作之间的距离是一样的,显得更合理。

独热编码不会产生新的特征,而是将原来的特征换了一种形式表现出来。使用独热编码可以解决分类特征的问题,但因此会产生很多的稀疏矩阵,可以采用PCA等降维方法进行特征提取。

数据分布的转化

多元线性回归有如下假设:
1、随机误差项是一个期望值或平均值为0的随机变量;
2、对于解释变量的所有观测值,随机误差项有相同的方差;
3、随机误差项彼此不相关;
4、解释变量是确定性变量,不是随机变量,与随机误差项彼此之间相互独立;
5、解释变量之间不存在精确的(完全的)线性关系,即解释变量的样本观测值矩阵是满秩矩阵;
6、随机误差项服从正态分布。
如数据的峰度和偏度不满足正态性,则会对结果造成误差。因此需要对数据进行正态性变换。右偏数据采用对数化,左偏数据采用指数化。或者采用Box-Cox变换。

数据缺失值

数据的缺失值需要进行填补。

参考文献

https://www.bilibili.com/video/BV1vJ41187hk?from=search&seid=13147394097118063633
https://weizhixiaoyi.com/archives/141.html?utm_source=wechat_session&utm_medium=social&utm_oi=672213749885177856

你可能感兴趣的:(数据挖掘,机器学习,数据分析,数据挖掘)