什么是回归?

       什么是回归?回归实际上就是“最佳拟合”。

       根据已有的数据拟合出一条最佳的直线、曲线、超平面或函数等,用于预测其它数据的目标值。如已知一系列的点(x,y),我们可能就可以拟合出一条最佳的直线y=kx+b。那么如果已知自变量x,要预测目标值y的话,就可以直接带入到该直线方程中求出y。

       回归的目的就是预测数值型的目标值。

       下面介绍几种常见的回归方式。

       最简单的回归就是线性回归。线性回归就是将输入项分别乘以一些常量,再将结果相加起来得到输出。在二维情况下,线性回归得到的是一条直线;在三维情况下,线性回归得到的是一个平面或直线(因为乘的常量可能为0)。



线性回归方程可以用向量或矩阵的方式写成:


如果把输入数据存放在矩阵X中,则


       那么如何判断拟合出来的方程是否为最好的呢?最常用的方法就是找出使得预测y值与真实y值相差最小的w。为了防止正差值与负差值相互抵消,我们采用平方误差:


用矩阵表示可以写成:


对w求导,得到


令其等于0,解出w为:



       这里求出的w可能并不是数据中的真实w值,所以用一个“帽子”符号表示它是w的一个最佳估计。

       我们可以看到这里求w的公式并不适用于所有的情况。公式中需要对矩阵X’X求逆,因此当矩阵的逆不存在时公式不再适用。

       还有一点需要注意的,当把数据写成向量或矩阵时,必须要在向量第一位之前添加1或矩阵第一列之前添加一列1。因为如果没有添加的话,求出的回归方程是经过原点。我们知道回归方程不一定经过原点,所以添加一个1,实际上就也就在向量w中添加了一位,用来控制常量偏移。下面介绍的几种回归同样需要进行该操作,所以在以后的介绍中不再赘述。

       线性回归可能出现欠拟合现象这一问题。实际的拟合中,以二维为例,最佳的拟合不一定是一条直线,可能是一些折线段。这就是局部加权线性回归(LWLR),即给待预测点附近的每个点赋予一定的权重。

相应地判断标准更改为:


       之所以写成有两个下标的形式,是为了方便矩阵表示。把它们赋值给矩阵W对角线上的元素,矩阵W其它地方的元素为0。

用矩阵表示可以写成:


对w求导,得到


令其等于0,解出w为:



       同样,公式中需要对矩阵X’WX求逆,因此当矩阵的逆不存在时公式不再适用。

       那么要如何求w(I,i)呢?即如何求矩阵W呢?LWLR使用“核”来对附近的点赋予权重。核的类型可以自由选择,最常用的核是高斯核:


       点x为待预测数据,点x与xi越近,w(I,i)将会越大。而且,我们还可以看出,对于不同的待预测数据x,w(I,i)是不同的,即权重矩阵W是不同,所以每个不同的待预测数据的回归系数w是不同。这和线性回归有着本质的区别。

       下面让我们通过对k取不同的值来观察一下局部加权线性回归的拟合效果:

k=1.0


k=0.01


k=0.003


       我们可以看到,使用较小的核拟合效果最好,得到的误差较低。那么,为什么不在所有数据集上使用最小的核呢?实际上,取较小的核,在训练集上得到的误差较小,但是可能在测试集上得到的误差却很大;反之,取较大的核,尽管在训练集上得到的误差较大,但是在测试集上得到的误差却可能较小。因此,必须要根据实际的情况来选取合适的核,从而取得最佳的拟合效果。

       尽管局部加权线性回归拟合出的结果比普通的线性回归要好,但它也需要付出一定的代价——增加了计算量。

       前面我们在讲线性回归时提到如果矩阵X’X的逆不存在就不能使用线性回归。那么,在什么情况下矩阵X’X的逆不存在呢?

       当特征比样本点还要多,也就是说矩阵X不是满秩矩阵,或者特征高度相关,此时无法计算矩阵X’X的逆。在这种情况下,我们要如何来拟合数据预测数据呢?


下面引入两种通过缩减系数的回归来解决这一问题。

第一种是岭回归

判断标准为:


用矩阵表示可以写成:


对w求导,得到


令其等于0,解出w为:


       岭回归就是在矩阵X’X上加一个lamda*I,从而使得矩阵非奇异,进而可以对(X’X+lamda*I)求逆(矩阵I是一个m*m的单位矩阵,lamda是一个用户定义的数值)。

       岭回归必须使用标准化的数据。因为矩阵X’X需要加lamda*I,所以每维特征必须具有相同的重要性。特征矩阵X的标准化做法是把所有特征都减去各自的均值并除以方差;目标变量矩阵Y的标准化做法是目标变量减去均值。

       公式中的lamda是一个用户定义的数值,因此我们必须要通过比较选取出一个合适的lamda值。这里的lamda应以指数级变化,这样可以看出lamda在取非常小的值时和取非常大的值时分别对结果造成的影响。


第二种是前向逐步回归

       前向逐步回归属于一种贪心算法,每一步都尽可能减少误差。工作原理:初始化所有的权重为0,然后每一步所做的决策是对某个权重增加或减少一个很小的值,最终找到一个误差尽可能小的权重。

       上面提到前向足部回归每一步对某个权重增加或减少一个很小的值,这需要通过一个两层循环来完成这一步骤。第一层循环是关于每个权重的循环,权重的个数与矩阵X的列数相同,每次改变一个权重,有多少权重就要循环多少次;第二层循环是关于增加或减少权重大小的循环,共2次循环,每次改变一个权重,那么可能是增加一个epsilon或者减少一个epsilon。(epsilon值为用户定义的一个很小的值)

       但是仅有两层循环是不够的,因为上述两个循环只是对每个的权重改变了一次。因此,还需要在上述两个循环的外面再增加一个迭代次数的循环。通过多次改变权重得到一个最佳的权重值。

       每次最内层的循环都要求出预测y值与真实y值的平方差,通过比较找出最小的平方误差和对应的权重w。最终对应最小的平方误差的权重w就是最佳的。

       我们可以看到前向逐步回归和前面介绍的3种回归有着本质的区别。前面介绍的3种回归都是通过数学公式推导出来的;而前向逐步回归是一种贪心算法,通过一点点改变权重w,从而找出一个最佳的w。

       前向逐步回归与岭回归有一个相似之处,那就是同样需要对数据进行标准化。不过前向逐步回归的标准化与岭回归稍微有一点不同,不同之处在对矩阵X的标准化上。岭回归中矩阵X的标准化做法是把所有特征都减去各自的均值并除以方差;而前向逐步回归中矩阵X的标准化做法是把所有特征都减去各自的均值并除以标准差。这样做使得数据值在0周围波动,并且每个特征的均值为0,方差为1。

       岭回归和前向逐步回归最大的相似之处在于它们都是通过缩减系数来“理解”数据。岭回归通过引入lamda限制了所有w之和,通过引入该惩罚项,能够减少不重要的参数。前向逐步回归的权重初始化为0,通过循环来改变权重的值。在所有的循环结束之后,可能有某些权重的值仍为0,从而减少不重要的参数。


       上面一共介绍了4种回归:线性回归、局部加权线性回归、岭回归和前向逐步回归。每种回归都有各自优点和缺点,在实际使用的过程中可以根据需要选择合适的回归。

    • 10
      点赞
    • 57
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值