在详细了解线性回归的所有知识点之前,我们先来了解一下线性回归的重要性。
数据集一共有 p
个数据点,每个数据点有 d
个描述的维度 xi=(xi1,xi2,xi3...xid)
其中 xi
是第 i
个数据点。线性模型试图学习到一个通过属性的线性组合来进行预测的函数。
一般写成向量形式:f(x)=WTx+b,其中参数 W
和 b
通过训练得出。
我们的目标肯定是模型预测出来的结果和真实结果越接近越好,即 f(xi)≈yi
。这里解释一下为什么只能无限接近,因为我们只能拿某一类事件所有数据中抽样出来的部分数据进行学习,抽样出来的数据不可能涵盖事件的所有的可能性,所以只能学习到总体的规律。
问题:如何衡量预测的准确性,即衡量f(x)与真实值y之间的差异?
SSE
判别我们先讨论一元线性回归。
这里使用均方误差MSE
来判定距离,并限定损失函数为平方损失函数,也就是普通最小二乘法(Ordinary Least Square,OLS),得到目标函数。其中 “二乘” 表示取平方,“最小” 表示损失函数最小。
接下来通过调整参数使得模型能够更加贴合真实数据
延伸问题:为什么可以用误差平方和来表示线性回归问题的损失函数
线性回归有这样的假设:对于给定的 y(i) 总能找到 ε(i) 使得如下等式成立:
ε(i) 代表真实值和预测值之间的误差且服从正态分布 ε(i) ~ Ν(0,σ2)
为什么要加 ε: 房价可能由 100 种特征共同组成,但是通常我们建模的时候不可能把所有可能性都考虑完全,所以把剩下的特征及噪声统一放到 ε 中考虑。
为什么误差服从正态分布: 误差的产生有很多种因素的影响,误差可以看作是这些因素(随机变量)之和共同作用而产生的,由中心极限定理可知随机变量和的分布近似的服从正态分布。
随机变量 ε(i) 的概率密度函数为:
代入 ε(i) = y(i)-hθ(x(i))则:
这里的 p(y(i)|x(i);θ) 并不代表条件概率,只是一个记号,它表示给定 x(i),y(i)和一组θ后的概率密度函数。由最大似然估计可知:
对 L(θ)
取对数从而得到对数化最大似然估计函数:
求解最大化对数似然函数可得:
可以发现两种方法推导出的损失函数都是一样的,我们把这种损失函数叫做最小二乘法。
可以看出最小二乘法得到的cost function是一个凸函数,可以看作一元二次方程,目标是求该方程的最小值,即求一元二次方程导数逼近0的点。介绍两种方法,一种通过矩阵运算得到精确解的方法,另一种在数据量巨大数据情况复杂时使用的逼近最优解的方法:梯度下降法
一元线性回归
E(w,b) 是关于 w 和 b 的凸函数,当它关于 w 和 b 的导数均为0时,得到 w 和 b 的最优解
解得
多元线性回归
比一元线性回归复杂的是,多元线性回归组成的不是直线,是一个多维空间中的超平面,数据点散落在超平面两侧。
将偏置项 b 放入参数矩阵 W 中,并在自变量 X 矩阵中增加一列 value 为 1 的列向量
用 W 表示 (w,b),求具体的参数:
问题:XTX 在现实任务中往往不是满秩矩阵,所以无法求解矩阵的逆,故无法求得唯一的解
解决方法:引入正则化(regularization)将矩阵补成满秩
I2正则(ridge regression):
使用了正则化后,X 被补成了满秩矩阵,即使3个变量拥有3个方程,使n个变量拥有n个方程,使得 W* 变得唯一:
正则化其它作用:限制模型复杂度,取效果最好但是模型最简单的参数组合
其它正则化方式: 岭回归、lasso回归、弹性网络(l1、l2的结合)
补充:I1正则与I2正则对比
梯度下降:随机初始化 w 和 b,通过逼近的方式来求解。
损失函数回顾:
梯度下降参数优化方法:
梯度下降形象解释: 把损失函数想象成一个山坡,目标是找到山坡最低的点。则随便选一个起点,计算损失函数对于参数矩阵在该点的偏导数,每次往偏导数的反向向走一步,步长通过 [公式] 来控制,直到走到最低点,即导数趋近于0的点为止。
缺点: 最小点时候收敛速度变慢,并且对初始点的选择极为敏感。
梯度下降有时会陷入局部最优解的问题中,即下山的路上有好多小坑,运气不好掉进坑里,但是由于底部梯度(导数)也为0,故以为找到了山的底部
同时,步长选择的过大或者过小,都会影响模型的计算精度及计算效率
解决方法: 随机梯度下降、批量梯度下降、动量梯度下降
解析解
logistic回归
。梯度下降
模型建好了,我们需要设计相关的指标来检验模型的表现。有人会问,最小二乘法不就是评价指标吗,和这里的评价指标有什么区别?
从概念上讲,两者都是评价指标没什么区别。但是从使用场景上讲,我们在上文提到的最小二乘法,是我们在用训练数据集训练建模时,为了调整模型参数而确定的评价指标,目的是为了优化模型参数。而这里我们要讲的评价指标,是衡量模型建立好以后,使用别的数据集时(测试数据集、真实数据集)这组模型参数的表现效果,目的是为了选择模型参数
这里给出准确定义:评价指标是针对将相同的数据,输入不同的算法模型,或者输入不同参数的同一种算法模型,而给出这个算法或者参数好坏的定量指标
均方误差(SSE)
真实值-预测值 然后平方之后求和平均
同样的数据集的情况下,SSE越小,误差越小,模型效果越好
缺点: SSE数值大小本身没有意义,随着样本增加,SSE必然增加,也就是说,不同的数据集的情况下,SSE比较没有意义。
改进: MSE 对SSE求平均。是线性回归中最常用的损失函数,线性回归过程中尽量让该损失函数最小。那么模型之间的对比也可以用它来比较
均方根误差(标准误差 RMSE)
MSE是用来衡量一组数自身的离散程度,而RMSE是用来衡量观测值同真值之间的偏差,它们的研究对象和研究目的不同。它的意义在于开个根号后,误差的结果就与数据是一个级别的,可以更好地来描述数据。标准误差对一组测量中的特大或特小误差反映非常敏感,所以,标准误差能够很好地反映出测量的精密度。这正是标准误差在工程测量中广泛被采用的原因
当数据集中有一个特别大的异常值,这种情况下,data会被skew,RMSE会被明显拉大。所以对RMSE低估值(under-predicted)的判罚明显小于估值过高(over-predicted)的情况
平均绝对误差(MAE)
平均绝对误差是绝对误差的平均值,平均绝对误差能更好地反映预测值误差的实际情况
MAE是一个线性的指标,所有个体差异在平均值上均等加权,所以它更加凸显出异常值。MSE和MAE适用于误差相对明显的时候,此时大的误差也有比较高的权重
R-square(决定系数)
对于回归类算法而言,只探索数据预测是否准确是不足够的。除了数据本身的数值大小之外,我们还希望模型能够捕捉到数据的”规律“,比如数据的分布规律,单调性等等,而是否捕获了这些信息并无法使用MSE或者MAE来衡量
其中红色线是我们的真实标签,而蓝色线是我们的拟合模型。这是一种比较极端,但的确可能发生的情况。这张图前半部分的拟合非常成功,看上去真实标签和预测结果几乎重合,但后半部分的拟合却非常糟糕,模型向着与真实标签完全相反的方向去了
对于这样的一个拟合模型,如果我们使用MSE来对它 进行判断,它的MSE会很小,因为大部分样本其实都被完美拟合了,少数样本的真实值和预测值的巨大差异在被均分到每个样本上之后,MSE就会很小。但这样的拟合结果必然不是一个好结果,因为一旦新样本是处于拟合曲线的后半段的,预测结果必然会有巨大的偏差。所以,我们希望找到新的指标,除了判断预测的数值是否正确之外,还能够判断我们的模型是否拟合了足够多的,数值之外的信息。
数学理解:分母理解为原始数据的离散程度,分子为预测数据和原始数据的误差,二者相除可以消除原始数据离散程度的影响
1、上面分子就是我们训练出的模型预测的误差和
2.、下面分母就是瞎猜的误差和。(通常取观测值的平均值)
3.、如果结果是0,就说明我们的模型跟瞎猜差不多
4.、如果结果是1。就说明我们模型无错误
5.、介于0~1之间,越接近1,回归拟合效果越好,一般认为超过0.8的模型拟合优度比较高
化简上面的公式
分子分母同时除以m,那么分子就变成了我们的均方误差MSE,下面分母就变成了方差。
方差的本质是任意一个值和样本均值的差异,差异越大,这些值所带的信息越多
在 R2
中,分子是真实值和预测值之差的差值,也就是我们的模型没有捕获到的信息总量,分母是真实标签所带的信息量,所以两者都衡量 1 - 我们的模型没有捕获到的信息量占真实标签中所带的信息量的比例,所以,两者都是越接近1越好
缺点:数据集的样本越大,R²越大,因此,不同数据集的模型结果比较会有一定的误差
复杂度高的模型通常对训练数据有很好的拟合能力,但是对测试数据就不一定了。而复杂度太低的模型又不能很好的拟合训练数据,更不能很好的拟合测试数据。因此,模型复杂度和模型偏差和方差具有如下图所示关系。
更多偏差,方差细节可以看这篇文章。
那到底什么时候可以使用线性回归呢?统计学家安斯库姆给出了四个数据集,被称为安斯库姆四重奏,从这四个数据集的分布可以看出,并不是所有的数据集都可以用一元线性回归来建模。现实世界中的问题往往更复杂,变量几乎不可能非常理想化地符合线性模型的要求。因此使用线性回归,需要遵守下面几个假设:
与回归相对的是分类问题(classification),分类问题要预测的变量y输出集合是有限的,预测值只能是有限集合内的一个。当要预测的变量y输出集合是无限且连续,我们称之为回归。比如,天气预报预测明天是否下雨,是一个二分类问题;预测明天的降雨量多少,就是一个回归问题。
线性通常是指变量之间保持等比例的关系,从图形上来看,变量之间的形状为直线,斜率是常数。这是一个非常强的假设,数据点的分布呈现复杂的曲线,则不能使用线性回归来建模。可以看出,四重奏右上角的数据就不太适合用线性回归的方式进行建模。
前面最小二乘法求解过程已经提到了误差的概念,误差可以表示为 误差 = 实际值 - 预测值
。
可以这样理解这个假设:线性回归允许预测值与真实值之间存在误差,随着数据量的增多,这些数据的误差平均值为0;从图形上来看,各个真实值可能在直线上方,也可能在直线下方,当数据足够多时,各个数据上上下下相互抵消。如果误差不服从均值为零的正太分布,那么很有可能是出现了一些异常值,数据的分布很可能是安斯库姆四重奏右下角的情况。
这也是一个非常强的假设,如果要使用线性回归模型,那么必须假设数据的误差均值为零的正太分布。
线性回归对变量 x
也有要求,要有一定变化,不能像安斯库姆四重奏右下角的数据那样,绝大多数数据都分布在一条竖线上。
如果不同特征不是相互独立,那么可能导致特征间产生共线性,进而导致模型不准确。举一个比较极端的例子,预测房价时使用多个特征:房间数量
,房间数量*2
,-房间数量
等,特征之间是线性相关的,如果模型只有这些特征,缺少其他有效特征,虽然可以训练出一个模型,但是模型不准确,预测性差。