浅谈核方法

来源:互联网 发布:上国际学校的利弊知乎 编辑:程序博客网 时间:2024/04/28 14:48

说到核方法(kernel method)或者核技巧(kernel trick),了解SVM的人一定不会陌生。当数据集线性不可分时,就要用到非线性分类器。SVM采取的做法是将数据映射到更高的维度,从而将数据集在高维空间转化成线性可分的,然后再用线性SVM去训练一个线性分类器。以上做法的实现方式就是通过核方法隐式地实现的。

从上面可以看出,核方法是隐式地在高维的特征空间来计算向量的内积。但是本文要讲的是核方法的另外一个作用,也就是它的局部性原理(localization)。对于一个目标点,有时候通过拟合全部的样本点来对其做预测会造成预测的偏差,往往在目标点附近的样本点更能反映目标点的真实情况,这里,我们很容易就能想到依靠局部信息(近邻)来进行分类的K-NN。

K-NN及其改进

我们首先来看看K-NN。当K-NN用于分类时,我们需要明确三点,第一,K的取值;第二,距离度量方式;第三,分类决策规则。关于K的选取,对应于模型的选择,我们可以通过交叉验证的方式来获得最优的K值;距离度量一般采取欧氏距离;分类决策规则一般采取的是多数表决。我们可以看出,K-NN算法是一个局部性的算法,它只依靠离目标数据点最近的K个数据点的信息来对目标数据点做出分类预测。当K值过大,模型会欠拟合,因为算法始终会选择训练数据集中样本最多的类别;如果K值过小,那么模型过拟合,因为算法只看到了局部的信息,试想如果数据有噪声,那么模型在这局部就会过拟合。因此,合理的K值选择是模型成功的关键步骤之一。

以上是K-NN算法的基本操作方式,但是这样的方式在实践中可能会碰到一些问题,下面讲一个我在工程当中遇到的问题。假设我们要用K-NN做一个二分类器,K的取值为5。我们可能会遇到下图所示的情况:


上图中,三角形表示待分类的目标数据点,而矩形和椭圆形分别代表一个类别,由上可以看出三角形的5个最近邻包含两个矩形和三个椭圆形,如果按照上面讲的多数表决方法来对三角形做出分类预测,那么三角形应该属于椭圆形表示的类别,而我们从图中可以看出,三角形其实离矩形更近,它更应该属于矩形代表的类别。

上面的问题在于K-NN没有进一步去考虑数据点的局部信息。K-NN算法赋予了5个近邻同样的权重,使得它们在判断三角形的类别时做出了同样的贡献,而实际上它们的贡献应该是不一样的。因此,我们为这5个近邻赋予不同的权重,离三角形远的点,算法赋予较低的权重,反之则赋予较高的权重,权重与距离成反比。为了达到上面的效果,我们引进一个计算权重的公式。

(1)

式中,x0表示目标点。从上式可以看出,当x和x0的距离越远时,上式的值趋近于0,也就是对应x的权值越低;当x和x0的距离越近时,上式的值趋近于1,也就是对应的x的权值越高。

对于上面的例子,我们可以计算出5个近邻点相对于三角形的权值,然后将椭圆形和矩形表示的类别分别加权求和,最后取和较大的类别作为三角形的最终类别。上面的改进使得K-NN的准确率得到了提升。

上面对于K-NN算法的一个简单改进用到了更加详细的局部信息,也就是近邻点和目标点的距离。如果我们将式(1)作如下改进,就能得到一个核函数:

(2)

式(2)中的t取代了之前K-NN里的超参数K。t可以被看作是邻域(neighborhood)的大小,在t范围之外的点x与目标点x0的距离可以认为趋近于0。式(2)的形式很像高斯分布的表达式,但是这里它不表示高斯分布的任何性质,由于该核函数形式上很像高斯分布,因此我们称之为高斯核函数。

通过对核函数的引入,我们将K-NN转换成了核方法的形式。当t的值被确定后,核函数的表达式随之确定,对于待分类的目标点,由高斯核函数计算出它与每个训练样本点的距离,进而求出各个类的加权和,然后选出加权和最大的类作为目标点的类别。

通过上面对于K-NN模型的改进,我们看到了核方法具有的局部性原理,用目标点附近的训练样本点来拟合出分类模型。

局部加权线性回归(locallyweighted linear regression)

接下来简单介绍一下核函数局部性在线性回归中的应用。


上图摘自Andrew NG的课件。

现在假设给定的样本点如上图所示,我们的目标是要拟合出一个模型,使得该模型对于未知的点有很好的预测。

目前的解法是用一次函数拟合,从图中可以看出一次函数的拟合并没有完全捕获到样本点的特征,如果用该曲线来对新的点做预测,必然会有较大的偏差。注意到图中一共有6个样本点,如果我们用一个5次多项式函数,则一定可以完全拟合这些样本点,但是这样会导致拟合出的曲线方差较大。拟合出的曲线如下图:


上图摘自Andrew NG的课件。

为了解决方差较大的问题,我们可以引进正则化技术来降低模型的复杂度。这样得到的曲线就相对比较平滑,类似于下图。


上图摘自Andrew NG的课件。

从上面的分析我们可以得到一种做回归问题的思路:我们可以选取任意高次的函数或任意多的特征来拟合当前的样本点,然后用正则化技术来降低模型的复杂度,从而使得模型有较好的泛化能力。

但是这样做有一个问题,我们必须知道什么样的高次函数或者哪些特征组合才是最合适的,这都有待于我们去尝试,有时候尝试得比较准确,那么回归问题就能很好地解决,反之则可能正则化后的效果也不是很理想。因此,鉴于上述方法对特征的依赖较高,我们考虑能不能利用目标点的局部信息来对其做预测,以减少对特征的依赖。具体来说就是每当我们要预测一个目标点时,我们只用目标点附近的样本点来拟合出分类模型。对于离目标点较近的样本点,我们予以较高的权重,反之则予以较低的权重。为此,我们引入核函数来计算权重,由此可得局部加权线性回归:

 (3)

其中,我们假设核函数为高斯核函数。

(4)

由式(3)可以看出,当K的值越大,那么后面平方项的值就应该越小;如果K的值越小,那么后面的值是大是小都无关紧要。这就是说,如果该样本点离目标点越近,被赋予的权值K就越大,那么越应该对该样本点进行拟合;如果该样本点离目标点比较远,被赋予的权值K就越小,证明该样本点对于预测目标点所做的贡献不大,因此可以不用在该样本点处进行拟合。

式(4)中的参数t决定了样本点的权重随它与目标点距离的变化程度。根据高斯分布的图像,我们可以把t想象成一个窗口的大小,在窗口之外的训练样本,其权值基本上可以忽略,越靠近x0的样本点,其权值越大。对于参数t的选取,可以采用交叉验证的方式。

通过局部加权线性回归,我们可以很好地利用局部信息来预测目标点。

局部加权线性回归是非参数的一种回归方法,并且是基于内存的,也就是说这类方法本身没有训练模型的过程,它的模型就是整个训练数据集,每当要预测一个样本时,都需要扫描整个训练样本来做出预测。因此,这对于时间复杂度和存储的要求都很高,对于一些实时系统,这种方法的效率将是最大的瓶颈。此外,基于核方法的这一套理论需要训练数据集足够的大,否则通过该方式得出的模型将会过拟合。

0 0
原创粉丝点击