线性回归

一元线性回归

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

多元线性回归

而一般情况下,我们遇到的数据不是只有一个维度,而是多维数据,这时要用到多元线性回归。多元线性回归的公式为:

以上是一个数据对应的公式,如果在所有数据合在一起,则公式变为:

为了更加简洁,把上述公式改写为矩阵的格式。其中,X是我们的数据,w是需要求得参数,y^是预测的变量。

在一元回归的求解时,定义了预测值与实际值之间的残差平方和为损失函数,通过让该函数最小,得到了要求的系数。在多元回归中,进行同样的处理,得到如下公式。

所以,我们的目标就是找到一组w,使得损失函数最小。

这里有两种方式求解,一是梯度下降法,二是正规方程法。
1:梯度下降法
在一元线性回归中,通过求导,另其为0,得到答案。但是在数据量特别大的时候,这种方法会很慢,这时可以使用梯度下降法,来更加迅速的求得使损失函数最小化的参数。
梯度下降法:相当于我们下山的过程,每次我们要走一步下山,寻找最低的地方,那么最可靠的方法便是环顾四周,寻找能一步到达的最低点,持续该过程,最后得到的便是最低点。
对于函数而言,便是求得该函数对所有参数(变量)的偏导,每次更新这些参数,直到到达最低点为止,注意这些参数必须在每一轮一起更新,而不是一个一个更新

计算过程
定义的损失函数为:

为了让损失函数最小,参数值会沿着负梯度的方向下降。
梯度方向:求偏导后的结果。
下降的程度:学习率


最后的参数变化的梯度下降公式:

参数通过不断的迭代,找到一组使得损失函数最小的参数。
关于学习率a

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

2:正规方程法
也是对参数求偏导,但是应用矩阵求导的知识。

其中,矩阵求导的规则如下:

所以,对公式进行化简后得到:

因为求最小值,所以要让一阶导数为0,即上面的结果等于0.

这样就得到了参数的解。但是其中逆矩阵不一定存在解,即可能存在多重共线性(特征间的线性相关程度很大),因此加入L1,L2正则化来进行控制。
在梯度下降法的迭代次数一定时,这两种方法的结果差不多。

岭回归

岭回归是在原来的损失函数后面加了L2正则化。此时损失函数的公式为:

这时,再对参数w求偏导。

另其一阶导数为0.


这样就可以避免出现多重共线性。(矩阵的模不为0)

可以看到a的值越大,矩阵对角线中的原始参数就会被压缩

矩阵的对角线上由于加了a,所以不会出现为0的情况。除非有的地方a为0,或者矩阵对角线上的元素为-a。但是由于a是人为控制的,所以,可以通过调节a的值,来避免这种情况出现,即得到矩阵的逆永远存在。


当存在高度相关关系的矩阵时,可以通过调大a,来让 矩阵的行列式变大,从而让逆矩阵变小,以此控制参数向量的偏移。当a越大,模型越不容易受到共线性的影响。

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

Lasso回归

Lasso回归是在损失函数后面加上L1正则化,来避免多重共线性。

求解参数w过程依然是对w求偏导。

另其一阶导数为0.

对公式进行化简合并。

但此时发现,想要求解参数,又出现了逆矩阵不存在的情况。所以,Lasso无法解决由于特征间高度相关带来的逆矩阵不存在的情况,而岭回归可以解决特征间的精确相关关系导致的最小二乘法无法使用的问题
但在实际应用中,我们基本不会遇到精确相关的多重共线性问题,每个特征的数据都存在自身的一些偏差和波动。即Y1=aY2,a为常数,这种情况很少见。因此,我们假设矩阵的逆是一定存在的。所以可以得到:

通过增加a,我们可以为参数w的计算增加一个负项,从而限制参数估计中w的大小,而防止多重共线性引起的参数w被估计过大导致模型失准的问题。Lasso不是从根本上解决多重共线性问题,而是限制多重共线性带来的影响
L1,L2都会压缩系数w的大小,对标签值贡献少的特征,其系数也会很小,也更容易被压缩。不过,L2正则化只会将系数压缩到尽量接近0,但L1正则化主导稀疏性,因此会将系数压缩到0。因此,可以用L1来进行特征选择,将对标签值贡献少的特征剔除。

多项式回归

线性回归是用一条直线去拟合数据,对于非线性数据,线性回归的效果不是很好,此时,可以用多项式回归来拟合非线性数据。

线性回归中,我们的拟合方程自变量都是一次项:

通过多项式变化(线性模型中的升维工具,通过增加自变量上的次数,而将数据映射到高维空间的方法),使得线性模型能拟合非线性数据。一维多项式回归的方程为:

多维多项式回归方程为:

当我们进行多项式转换的时候,多项式会产出到最高次数为止的所有低高次项。通过特征与自身特征相乘或与其他特征相乘,来得到新的变量带入方程中,也可以用来做特征工程,构造一系列特征之间相乘的组合。

关于多项式是线性模型还是非线性模型,这里加入狭义线性模型和广义线性模型的定义。即多项式回归时广义线性模型,而非狭义线性模型。

另外一个需要注意的点是,线性回归进行多项式变化后被称为多项式回归,但这并不代表多项式变化只能够与线性回归连用。在现实中,多项式变化疯狂增加数据维度的同时,也增加了过拟合的可能性,因此多项式变化多与能够处理过拟合的线性模型如岭回归,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

数据挖掘:模型选择——线性回归相关推荐

  1. 数据挖掘:模型选择——监督学习(回归)

    数据挖掘:模型选择--监督学习(回归) 在上一篇文章数据挖掘:模型选择--监督学习(分类)中介绍了分类相关的算法原理,这次来介绍回归的一些算法.回归主要是预测连续型数据的目标值. 本文来自:机器学习菜 ...

  2. 数据挖掘:模型选择——监督学习(分类)

    数据挖掘:模型选择--监督学习(分类) 机器学习算法可分为监督学习和非监督学习.本文主要讨论非监督学习中的分类任务. 一.简单介绍 简单的说,监督学习就是有标签的数据,有需要预测的变量. 分类任务就是 ...

  3. 第六课.模型评估与模型选择

    目录 导语 模型评估 回归任务的评估指标 分类任务的评估指标 过拟合现象 过拟合的原因 过拟合解决办法 模型选择与调整超参数 正则化 留出法 交叉验证 网格搜索 实验:线性回归预测股票走势 实验说明 ...

  4. 运用高斯核模型进行最小二乘回归_数据科学 | 第8讲:模型选择与正则化

    点击上方"蓝字"带你去看小星星 模型选择,是指利用统计方法,从众多自变量中,选择显著的.最能解释因变量变化的那一部分自变量参与建模.在统计建模中,模型选择是重要的也是核心的步骤之一 ...

  5. PRML读书会第一章 Introduction(机器学习基本概念、学习理论、模型选择、维灾等)...

    主讲人 常象宇 大家好,我是likrain,本来我和网神说的是我可以作为机动,大家不想讲哪里我可以试试,结果大家不想讲第一章.估计都是大神觉得第一章比较简单,所以就由我来吧.我的背景是统计与数学,稍懂 ...

  6. 热门数据挖掘模型应用入门(一): LASSO回归

    热门数据挖掘模型应用入门(一): LASSO回归 目录: • 模型简介 • 线性回归 • Logistic回归 • Elstic Net理论简介 • 学习资料 模型简介 Kaggle网站(https: ...

  7. 机器学习中的模型评价、模型选择及算法选择

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 正确使用模型评估.模型选择和算法选择技术无论是对机器学习学术研究还是工业场景应用都至关重要.本文将对这三个任务的相关技术 ...

  8. 规则化和模型选择(Regularization and model selection)

    1 问题      模型选择问题:对于一个学习问题,可以有多种模型选择.比如要拟合一组样本点,可以使用线性回归,也可以用多项式回归.那么使用哪种模型好呢(能够在偏差和方差之间达到平衡最优)

  9. 做好数据挖掘模型的9条经验总结

    数据挖掘是利用业务知识从数据中发现和解释知识(或称为模式)的过程,这种知识是以自然或者人工形式创造的新知识. 当前的数据挖掘形式,是在20世纪90年代实践领域诞生的,是在集成数据挖掘算法平台发展的支撑 ...

最新文章

  1. 【C++】C++11 STL算法(七):排列操作(Permutation operations)、数值操作(Numeric operations)
  2. flask部署pytorch
  3. JavaScript大杂烩9 - 理解BOM
  4. SpringBoot用容器IoC管理Bean
  5. 爱丁堡大学人工智能和计算机科学研究生申请入口
  6. 16位汇编 寄存器的操作
  7. Android中build target,minSdkVersion,targetSdkVersion,maxSdkVersion概念区分
  8. 带有Spring的JavaFX 2
  9. HTML5 canvas点击爆炸网页特效代码
  10. ksoap2-android Project
  11. 现在农村有比较多老了的丝瓜,这些老了的丝瓜有什么作用吗?
  12. L1-012. 计算指数-PAT团体程序设计天梯赛GPLT
  13. swift 获得手机IP(运营商IP和WiFi的IP)
  14. 基于STM32的自由度云台运动姿态控制系统
  15. kali linux 清华源_Kali Linux 更新源
  16. linux下调用扫描仪sane协议
  17. diamond运算符
  18. 密码学编程基础——换位加密
  19. python函数做菜单_学不会的Python函数——函数小案例(名片管理器)
  20. vulfocus靶场进不去

热门文章

  1. jQuery中click事件多次触发解决方案
  2. Tomcat的安装、配置常见问题
  3. java spit 点_java split 的一些用法注意点。
  4. [C/CPP系列知识] C++中extern “C” name mangling -- Name Mangling and extern “C” in C++
  5. 窄脉冲matlab实现,[求助]如何获得与50Hz工频同步的窄脉冲信号
  6. 华为交换机eth口作用_华为交换机口如何绑定端口号
  7. 【转】CCScale9Sprite和CCControlButton
  8. 在 Linux 的应用中测试中的延时和丢包模拟
  9. java多线程学习系列
  10. 英文书: Python 网络编程基础手册