小文 | 公众号 小文的数据之旅
上一次已经对机器学习的一些概念,一些损失函数以及模型的评估方法都做了简要的介绍,今天我们开始学习第一个机器学习的算法模型,它就是线性回归。其实我们大概在高中的时候,我们已经学过了,为什么我会这么说呢?
对于 y = kx+b这个函数,相信大家都不陌生了吧!还记得怎么求斜率k和截距b吗?当我们知道两个数据点的时候,就可以通过代入函数求得k和b。当数据量大起来之后,k和b值就得通过最小二乘法求得,公式如下:
这就是我们大家都学过的机器学习的算法模型---线性回归!没想到吧,原来我们早在上大学之前就已经学过机器学习的算法模型了,给自己加个鸡腿吧!!!既然大家都学过了,那么今天分享的内容就很好掌握了!
线性回归是利用数理统计中的回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,属于监督学习的一种,对于只有一个自变量和一个因变量的线性回归,我们称为一元线性回归,即我们常见的y = kx+b;而有多个自变量和一个因变量的线性回归,我们称为多元线性回归,即
又因无论我们的模型怎么精确,预测出来的y值总是与真实的y值存在一定的误差,于是将上述表达式写成:
误差为什么要假设其独立同分布且符合正态分布呢?
举个例子:小文每天饭后都需要散步一段时间,那么可以根据散步时间估计散步的距离。因为每天的散步速度会有不同,因此就算每天散步的时间固定了,每天的散步距离也会不同。如果根据我的数据拟合了一条线来估计散步距离,那么预测值与实际值的差值是一个浮动值,但是大概率变化不大,也就是符合正太分布。为什么呢?因为我的散步速度虽然不能保证每天都一样,但根据个人的行走习惯,散步速度的差异不会变化很大,我总不可能今天一脚20cm,明天100cm吧?步子大了容易扯了蛋!!因此我们可以认为它是符合正态分布的。另外我今天走得慢一些跟我明天走得快一些是完全没关系的,完全看我当时的情况,也就是说它是独立的。还有就是为什么说它是同分布的呢?因为它是我的数据,是根据我的个人情况来看的,而不是别人的,总不能用别人的数据来估计我的距离吧?毕竟不是每个人都有我这双大长腿的!!
ok!理解了为什么说误差是独立同分布且符合正态分布之后,我们就可以写出这个表达式:
也就是说已知x值以及斜率k,就可以求出真实值与y预测值接近的概率有多大,但往往斜率k我们并不知道。也就是说现在变成了求条件概率,如果概率值越大,求得的y值越接近真实值。为了求得概率值最大时的斜率k,我们想到了似然估计,因此上述表达式可以写成:
第一项是常数,所以求L的最大值也就是求第二项的最小值,也就等同于求误差平方和的最小值。
这就很好理解了,就是要保证模型预测出来的数据尽可能的接近真实数据,而接近的程度不就是用误差来度量的吗?此时大家是否想起上一期回归任务的性能度量呢?现在既然知道了要解决的问题是求L第二项的最小值,那么应该怎么计算呢?有两种方法,分别是最小二乘法和梯度下降法。
最小二乘法有个问题,当自变量间存在高度共线性时,方阵XTX是不可逆,为了避免这个问题,就有了另一种求解参数k的方法,也是在其他算法中用得比较多的算法--梯度下降法。
梯度下降法:
梯度下降的思想是通过迭代,参数k每次以最大梯度方向下降一次,直至参数不再变化, 得出最佳的参数k,而寻找最大梯度方向就是寻找目标函数的最小值。
表示步长,也称为学习率。学习率如果太小,迭代次数需要很大,运行效率大大地降低;学习率太大,迭代次数减小,但是可能会直接跨过极小值点,导致不收敛。
因为梯度下降法每次都会把所有的数据进行迭代,因此效率会很低,于是乎出现了优化算法--随机梯度下降,即每次随机取一条数据进行梯度下降,虽然迭代的次数多了,但是学习效率大大的提升,不过得出的值有可能是局部最优解,而不是全局最优解。
至此线性回归模型基本构建完毕,那么构建的模型性能怎么样,参数是否合理,该怎么判断呢?可以通过统计学上的假设检验, F检验判断模型的好坏、T检验判断参数是否合理和决定系数R方判断自变量对因变量的解释度。若都通过了检验,则我们的模型才是真正的完成。那么为什么能用F检验、T检验判断和 R方呢?
百度百科:
卡方检验(F检验)就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,如果卡方值越大,二者偏差程度越大;反之,二者偏差越小;若两个值完全相等时,卡方值就为0,表明理论值完全符合。
T检验主要用于样本含量较小,总体标准差σ未知的正态分布。T检验是用t分布理论来推论差异发生的概率,从而比较两个平均数的差异是否显著。
相信到了看到这里,为什么能用F检验模型的好坏就不需要多说了,还是不清楚的朋友们请拉上去再看一下推导过程!!那为什么用T检验呢?因为我们的目标函数,误差平方和是符合均值为0,方差为N平方的正太分布并且方差是未知的,是不是跟T检验的定义很像?!没错,也就是说我们可以使用T检验来检测我们参数是否全为0(全为0均值才可能为0),如果全为0,就说明每一个自变量对因变量都是不重要的。R方表示模型的所有自变量对因变量的联合影响程度,也就是自变量对因变量的解释度。
ok!今天的分享到此结束,下一期将会使用python实现最小二乘法、梯度下降法和随机梯度下降法求解线性回归的系数以及与sklearn中的线性模型进行比较。想跟小文唠嗑的可以来公众号小文的数据之旅找我玩哦!
— end —
小文的数据之旅
戳右上角「+关注」获取最新share
如果喜欢,请分享or点赞