1
(1)分类,拟合,回归的区别?
前几天用到了MATLAB中的多项式拟合函数和线性回归函数,然后发现有些概念和我理解的不一样。我就把我对这三个概念的理解说一下。
分类:在之前两讲中讲的算法PLA和朴素贝叶斯都是用来解决分类问题的。在二分类中,Y=+1或-1。分类问题是找到一个最好的超平面将不同的样本分开。
回归:回归问题的输出Y不只是局限在+1或者-1中,通常Y可以取整个实数空间的任意值。在这里我们要做的事情和分类问题要做的事情就不一样了,我们要根据样本的特征去预测这个样本的Y是多少(不只是局限在+1和-1)。 回归问题是找到一个超平面尽量将所有的样本落在这个超平面上。
拟合:我觉得拟合就是回归的简化,当样本的特征只有1维时,也就是在二维xy坐标系下,这个回归问题也就称为拟合问题。在MATLAB中多项式拟合函数只能对样本特征为一维的数据进行拟合,而回归函数是可以处理样本特征为多维的数据。
(2)线性回归初步理解
在前面我们已经讲了PLA,通过PLA可以学习到一个超平面(在二维坐标系下是一条直线),通过判断样本是在这个超平面的上方还是下方去预测样本的类别。
线性回归同样也是学习到一个超平面,不过这个超平面的作用和PLA的作用有所不同。线性回归中的超平面不是将样本区分开的,而是要尽量使样本落在这个超平面上。
通过下面这两幅图,可以直观的看出线性回归是怎么回事。(为了方便可视化,我们限定在二维坐标系下)
线性分类:
线性回归:
2.正式开始
线性回归很简单,不过正是这些很简单机器学习算法,在最开始的时候让我们对整个机器学习的过程有了个大概的了解。
线性回归的目标就是找到一个超平面使样本尽量集中在超平面周围(离超平面的距离尽量近)。
沿用之前学习理论的知识,接下来需要找到一个超平面
H(X)=WX
(这里仍然沿用PLA的书写习惯将常数项写进W中)使
Ein≈0以及Eout≈Ein
。
先看第一个式子,
Ein≈0
,训练集的误差约等于0,我们首先要确定在线性回归中该怎么样衡量误差。在线性分类中我们使用简单的0-1误差去衡量误差,即犯错了代价就是1,;正确代价就是0。现在在回归问题中,这么做显然是不合适的。在这里我们采用去平方误差去衡量误差,即squared error:
(Y预测−Y真实)2
。
接下来就是怎么令
Ein≈0
了?
Ein=1N∑Nn=1(H(Xn)−Yn)2
注:这里N是训练集的大小,
(Xn,Yn)是训练样本
,
H(Xn)是Xn根据超平面预测的Y值,
我们通过使右式最小化进而就可以使
Ein≈0
。右式的矩阵形式为:偷个懒,粘个图。
Ein
是连续可微的凸函数,这是令人很兴奋的一件事,终于可以直接求梯度令其为0,求出其最小值了,找到最佳的W。
这里不详细说梯度的求法,自行百度“矩阵求导”。
我们令梯度为0,发现需要分成两种情况
XTX
可逆不可逆。
当
XTX
可逆时,直接可以求出
XTX
的逆。
当
XTX
不可逆时,有很多现成的软件可以直接求出来
XTX
的逆的估计值,称作pseudo-inverse(伪逆)。
根据梯度算出来W,就找到了那个超平面,线性回归就结束了。真的就这么简单。
总结如下:
这是在机器学习中极少的几个可以直接进行求导就可以求出全局最优解的模型。
3
在2中说了,线性回归保证了
Ein≈0
,我们在这里说一下怎么保证
Eout≈Ein
。
还记得在机器学习总结2_PLA中证明PLA中的线性模型的VC维是d+1么?
PLA的模型也是线性的,这里的模型也是线性的,我们大可就认为这里的线性模型的VC也是和d+1,这样也就保证了
Eout≈Ein
。
注:在台湾大学《机器学习基石第九讲》通过另外一种方式证明了线性回归的
Eout和Ein
是差不多的。感兴趣的小伙伴可以去看一看视频。