当前位置:   article > 正文

Regression算法之通俗讲解

regression算法

本篇内容较多,系统性介绍方法、算法。

Regression的意思是回归,回归和之前讲的分类都属于监督学习。与之前讲的分类机器学习方法不同,回归在于其目标变量是连续数值型。

回归的目的是预测数值型的目标值。最直接的办法是依据输入写出一个目标值的计算公式,就是所谓的回归方程。确定回归方程的回归系数的过程就是回归。一旦有了这些回归系数,再给定输入,做预测就非常容易了。具体做法就是将输入带入回归方程中,计算结果,就得到了预测值。

一、用线性回归找到最佳拟合直线

       说到回归,一般指的是线性回归(linear regression),线性回归意味着可以将输入项分别乘以一些常量,再将结果加起来得到输出。需要说明的是,存在另一种称为非线性回归的回归模型,该模型的回归方程是非线性的。本节只讨论线性回归。

       线性回归最主要的就是确定回归方程,也就是回归系数的确定。怎样从一大堆数据里求出回归方程呢?假定输入数据存放在矩阵X中,而回归系数存放在向量w中。那么对于给定的数据X1,预测结果将会通过给出。现在问题是,手里有一些X和对应的y,怎么才能找到w呢?一个常用的方法就是找出使误差最小的w。这里的误差是指预测y值和真实y值之间的差值,使用该误差的简单累加将使得正差值和负差值相互抵消,所以采用平方误差。

平方误差可以写做:

                         

用矩阵表示还可以写做。如果对w求导,得到,令其等于零,解出w如下:

                       

以上的w就是利用误差求解出来的最优解。

       几乎任一数据集都可以用上述线性回归方法建立模型,如何判断模型好坏呢(线性拟合效果),有一种方法可以计算预测值序列和真实值序列的匹配程度,就是计算这两个序列的相关系数。相关系数通过Numpy库提供的命令corrcoef(yEstimate, yActual)来计算预测值和真实值的相关性,会得到一个2X2的矩阵,包含所有两两组合的相关系数。相关系数值越高,拟合效果越好。

       最佳拟合直线方法将数据视为直线进行建模。但是有些数据可能还存在其他的潜在模式,如何利用这些模式呢?可以根据数据来局部调整预测。

二、局部加权线性回归

       线性回归的一个问题是有可能出现欠拟合现象,因为它求的是具有最小均方误差的无偏估计。所以有些方法允许在估计中引入一些偏差,从而降低预测的均方误差。其中一个方法就是局部加权线性回归(Locally Weighted Linear Regression, LWLR)。

       局部加权线性回归给待预测点附近的每个点赋予一定的权重,离预测点越近,权重W越大。然后在这个子集上基于最小均方差来进行普通的回归。这样算法计算出的回归系数w如下:

                              

权重W的计算是使用高斯核公式,公式包含一个需要用户指定的参数k,它决定了附近点赋予多大的权重。

                               

       k的取值对模型影响很大。当k较大时,大部分的数据都用于训练回归模型,而k较小时,仅有很少的局部点被用于训练模型,其他数据点的权重都接近零。有时候k的取值使得出的最佳拟合直线与标准的回归一致(如同将所有数据视为等权重)。有时候当k特别小时,可能会纳入太多的噪声点,拟合的直线与数据点过于贴近,导致过拟合的现象。

       局部加权线性回归也存在一个问题,即增加了计算量,因为它对每个点做预测时都必须使用整个数据集。但有时候k的取值,使大多数据点的权重都接近零,如果能够避免这些计算将可以减少程序运行时间,缓解因计算量增加带来的问题。目前还未解决。下面将介绍另一种提高预测精度的方法。

三、缩减系数来“理解”数据

       如果数据的特征比样本点还多(n>m),则说明输入数据的矩阵X不是满秩矩阵,非满秩矩阵在求逆时会出现问题,无法使用前面介绍的方法。

       为此,统计学家引入岭回归(ridge regression)的概念,这是第一种缩减方法。第二种缩减方法,就是前向逐步回归。

       岭回归算法在矩阵(nxn矩阵)上加入一个λI从而使得矩阵非奇异,进而能对求逆。其中矩阵I是nxn的单位矩阵,对角线上元素全为1,其他元素全为0。所以回归系数的计算公式将变为:

                               

       岭回归在这里引入λ来限制了所有w之和,通过引入该惩罚项,能够减少不重要的参数,这个技术在统计学中也叫做缩减(shrinkage)。缩减方法可以去掉不重要的参数,因此能更好的理解数据。此外,与简单的线性回归相比,缩减法能够取得更好的预测效果。λ取值不同,可以得到不同的回归系数,λ的取值也影响着系数的缩减情况。可以通过预测误差最小化得到最佳λ值。

四、前向逐步回归

       前向逐步回归算法属于一种贪心算法,即每一步都尽可能减少误差。一开始,所有似回归系数都设为0,然后每一步所做的决策是对某个系数增加或减少一个很小的值。每一次迭代遍历所有特征系数,找到一个系数,使得误差最小。之后每次迭代在此基础上,遍历所有特征系数,增加或减少其值,得到一个系数的改变使得本轮迭代误差最小。

       如果最后得到的系数矩阵中,某些参数值为0,说明它们不对目标值造成任何影响,也就说明这些特征很可能是不需要的。另外,如果增加或减少的这个值设置的大,一段时间后系数就已经饱和并在特定值之间来回震荡,这是因为步长太大的缘故,可以减小该值。

       前向逐步回归算法的主要优点在于它可以帮助人们理解现有的模型并做出改进。当构建了一个模型后,可以运行该算法找出重要的特征,这样就又可能及时停止对那些不重要特征的收集。

       当应用缩减方法(逐步线性回归或岭回归)时,模型也就增加了偏差(bias),与此同时却减小了模型的方差。接下来揭示这些概念之间关系及它们对结果的影响。

五、权衡偏差与方差

       偏差(Bias)是指模型预测值和数据之间的差异,是用所有可能的训练数据集训练出的所有模型的输出平均值与真实模型的输出值之间的差异。偏差的对象是单个模型,是期望输出与真实标记的差异。

       方差(Variance)是指模型之间的差异,是不同的训练数据集训练出的模型输出值之间的差异。方差是可度量的。不同的样本集会得到不同的回归系数,这些系数间的差异大小也就是模型方差大小的反映。方差的对象是多个模型,是相同分布的不同数据集训练出模型的输出值之间的差异。

       偏差与方差折中的概念在机器学习中十分流行并反复出现。首先要知道偏差和方差是无法完全避免的。在避免偏差时,尽量选择正确的模型,有了正确模型,还要慎重选择数据集大小,通常数据集越大越好,但是大到能够代表整体数据就行了,再大反而增加计算量。最后,要选择合适的模型复杂度,复杂度高的模型通常对训练数据有很好的拟合能力。

       最后通过一个例子说明偏差和方差间的折中效果。通过交叉验证测试实验找到最佳的岭回归模型。模型通过10次迭代(选择不同的数据集,权衡方差效果),每一次迭代通过30个不同的λ值进行训练。最后将10次结果求平均,得到10次中平均误差最低的λ,该λ构建的模型(该模型得到的回归系数)就是偏差最小的。这样在方差和偏差的计算中找到误差最小的回归系数。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/404528
推荐阅读
相关标签
  

闽ICP备14008679号