降维与度量学习

浏览: 1695

K近邻学习

K近邻学习简称knn,是一种常用的监督学习方法,其工作机制简单,给定测试样本,基于某种距离度量找出训练集中与其最靠近的K个训练样本,然后基于这K个邻居的信息来进行预测,通常在分类任务中可使用投票法即选择这K个样本中出现最多的类别标记作为预测结果;在回归任务中可使用平均法即将这K个样本的实值输出标记的平均值作为预测结果;还可以基于距离远近进行加权平均或加权投票,距离越近的样本权重越大。

K近邻学习有个明显不同之处,它没有显式的训练过程,被称为懒惰学习,它的工作很简单,在训练阶段仅仅把样本保存起来,训练时间开销为零,待收到测试样本后再进行处理,相应的那些在训练阶段就对样本进行学习处理的方法称为急切学习。

当然,很容易知道,当K取值不同时,分类结果会显著不同,另一方面,若采用不同距离计算方式,则找出的近邻可能有显著差别,从而会导致分类结果有显著不同。

不仅如此,我们还得到了一个令人惊讶的结论:最近邻分类器虽然简单,但是它的泛化错误率不超过贝叶斯最优分类器的错误率的两倍。

上面的讨论是基于一个重要假设,任意测试样本附近任意小的距离范围内总能找到一个训练样本,即训练样本的采样密度足够大,或称为密采样,然而这个假设在现实任务中通常很难满足。

这里有个很有意思的事情:假定属性维数为20,若要求样本满足密采样条件,则至少需要10的60次方个样本。此外,许多学习方法都涉及距离计算,而高维空间会给距离计算带来很大的麻烦。事实上,在高维情形下出现的数据样本稀疏、距离计算困难等问题是所有机器学习方法共同面临的严重障碍,被称为维数灾难。维数灾难的一个重要解决方案就是降维,也称维数约简。为什么能降维?因为在很多时候人们观测或搜集到的数据样本虽是高维的,但与学习任务密切相关的也许是某个低维分布,即高维空间中的一个低维嵌入。若要使原始空间中样本之间的距离在低维空间中得以保持,即得到多维缩放,这是种经典的降维方法。然而在现实中,为有效降维,往往仅需降维后的距离与原始空间中的距离尽可能接近,而不必严格相等。

一般来说,欲获得低维子空间,最简单的是对原始高维空间进行线性变换。这么看来,新空间的属性是原空间属性的线性组合。这种基于线性变换来进行降维的方法称为线性降维法。

对降维效果的评估,通常是比较降维前后学习器的性能,若性能有所提高则认为降维起到了作用,若将降维降至二维或三维,则可通过可视化技术来直观判断降维效果。

主成分分析

主成分分析是最常用的一种降维方法。

在介绍主成分分析之前不妨先考虑一个问题:对于正交属性空间中的样本点,如何用一个超平面(直线的高维推广)对所有样本进行恰当的表达。容易想到若存在这样的超平面的话,那它大概具有这样的性质:

1最近重构性:样本点到这个超平面的距离都足够近

2最大可分性:样本点在这个超平面上的投影能尽可能分开

降维后低维空间的维数通常是由用户事先指定的,或通过在低维空间中对K近邻分类器(或其他开销较小的学习器)进行交叉验证来选取较好的值,对主成分分析而言,还可以从重构角度设置一个重构阈值。

显然,低维空间与原始高维空间必有不同,会舍弃一部分信息,但是这种舍弃部分信息往往是有必要的:一方面是舍弃这部分信息之后能使样本的采样密度增大,这正是降维的重要动机;另一方面,当数据受到噪声影响时,最小的特征值所对应的特征向量往往与噪声有关,将他们舍弃能在一定程度上起到去噪作用。

核化线性降维

线性降维方法假设从高维空间到低维空间的函数映射是线性的,然而,在不少现实任务中,可能需要非线性映射才能找到恰当的低维嵌入,非线性降维第一种常用方法是居于核技巧对线性降维方法进行核化。

等等后边还有几种方法,但是基于自己的水平与能力有限,不能很好的认识另外几种方法,这里也就不总结了,有兴趣的请自行参考周志华的机器学习一书,也叫西瓜书。

推荐 1
本文由 韩冰冰 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册