机器学习:降维与度量学习
1、K近邻学习
k近邻算法简称kNN(k-Nearest Neighbor),是一种经典的监督学习方法,数据挖掘十大算法之一。
-
工作机制:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个“邻居”的信息来进行预测。
-
通常,在分类任务中可使用“投票法”,即选择这k个样本中出现最多的类别标记作为预测结果;
-
在回归任务中可使用“平均法”,即将这k个样本的实值输出标记的平均值作为预测结果;还可基于距离远近进行加权平均或加权投票,距离越近的样本权重越大.
与前面介绍的学习方法相比, k近邻学习有一个明显的不同之处: 它似乎没有显式的训练过程! 事实上,它是“懒情学习” (lazy learning)的著名代表, 此类学习技术在训练阶段仅仅是把样本保存起来,训练时间开销为零, 待收到测试样本后再进行处理(因此朴素贝叶斯也可以懒惰式学习,此类技术在训练阶段开销为零,待收到测试样本后再进行计算。);
相应的,那些在训练阶段就对样本进行学习处理的方法, 称为“急切学习” (eager learning).
很容易看出:kNN算法的核心在于k值的选取以及距离的度量。k值选取太小,模型很容易受到噪声数据的干扰,例如:极端地取k=1,若待分类样本正好与一个噪声数据距离最近,就导致了分类错误;若k值太大, 则在更大的邻域内进行投票,此时模型的预测能力大大减弱,例如:极端取k=训练样本数,就相当于模型根本没有学习,所有测试样本的预测结果都是一样的。一般地我们都通过交叉验证法(简单来说,就是一部分样本做训练集,一部分做测试集)来选取一个适当的k值。
KNN算法流程
- 计算测试样本和训练样本中每个样本点的距离(常见的距离度量有欧式距离,马氏距离等);
- 对上面所有的距离值进行排序;
- 选前 k 个最小距离的样本;
- 根据这 k 个样本的标签进行投票,得到最后的分类类别;
2、MDS算法
不管是使用核函数升维还是对数据降维,我们都希望原始空间样本点之间的距离在新空间中基本保持不变,这样才不会使得原始空间样本之间的关系及总体分布发生较大的改变。“多维缩放”(Multiple Dimensional Scaling,MDS)正是基于这样的思想,MDS要求原始空间样本之间的距离在降维后的低维空间中得以保持。
MDS的算法流程
3、主成分分析(PCA)
主成分分析(Principal Component Analysis,简称 PCA)是最常用的一种降维方法。不同于MDS采用距离保持的方法,主成分分析(PCA)直接通过一个线性变换,将原始空间中的样本投影到新的低维空间中。简单来理解这一过程便是:PCA采用一组新的基来表示样本点,其中每一个基向量都是原来基向量的线性组合,通过使用尽可能少的新基向量来表出样本,从而达到降维的目的。
对于正交属性空间中的样本点,如何用一个超平面(直线的高维推广)对所有样本进行恰当的表达?
若存在这样的超平面具有这样的性质:
-
最近重构性:样本点到这个超平面的距离都足够近;
-
最大可分性:样本点在这个超平面上的投影能尽可能分开.
PCA算法流程
4、核化线性降维
线性降维方法假设从高维空间到低维空间的函数映射是线性的,然而,在不少现实任务中,可能需要非线性映射才能找到恰当的低维嵌入,图10.6给出了一个例子,样本点从二维空间中的矩形区域采样后以S形曲面嵌入到三维空间,若直接使用线性降维方法对三维空间观察到的样本点进行降维,则将丢失原本的低维结构,为了对“原本采样的”低维空间与降维后的低维空间加以区别,我们称前者为“本真”(intrinsic)低维空间。
正如SVM在处理非线性可分时,通过引入核函数将样本投影到高维特征空间,接着在高维空间再对样本点使用超平面划分。这里也是相同的问题:若我们的样本数据点本身就不是线性分布,那还如何使用一个超平面去近似表出呢?因此也就引入了核函数,即先将样本映射到高维空间,再在高维空间中使用线性降维的方法。
5、流形学习
流形学习(manifold learning)是一种借助拓扑流形概念的降维方法,流形是指在局部与欧式空间同胚的空间,即在局部与欧式空间具有相同的性质,能用欧氏距离计算样本之间的距离。这样即使高维空间的分布十分复杂,但是在局部上依然满足欧式空间的性质,基于流形学习的降维正是这种“邻域保持”的思想。其中等度量映射(Isomap)试图在降维前后保持邻域内样本之间的距离,而局部线性嵌入(LLE)则是保持邻域内样本之间的线性关系,下面将分别对这两种著名的流行学习方法进行介绍。
5.1等度量映射
等度量映射(Isometric Mapping, 简称 Isomap) 的基本出发点是:认为低维流形嵌入到高维空间之后,直接在高维空间中计算直线距离具有误导性,因为高维空间中的直线距离在低维嵌入流形上是不可达的。
如图10.7(a)所示,低维嵌入流形上两点间的距离是“测地线”(geodesic)距离: 想象一只虫子从一点爬到另一点,如果它不能脱离曲面行走,那么图10.7(a)中的红色曲线是距离最短的路径,即S曲面上的测地线,测地线距离是两点之间的本真距离,显然,直接在高维空间中计算直线距离是不恰当的.
利用流形在局部上与欧式空间同胚的性质,可以使用近邻距离来逼近测地线距离,即对于一个样本点,它与近邻内的样本点之间是可达的,且距离使用欧式距离计算,这样整个样本空间就形成了一张近邻图,高维空间中两个样本之间的距离就转为最短路径问题。
可采用著名的Dijkstra算法或Floyd算法计算最短距离,得到高维空间中任意两点之间的距离后便可以使用MDS算法来其计算低维空间中的坐标。
对近邻图的构建通常有两种做法,一种是指定近邻点个数,例如欧氏距离最近的k个点为近邻点,这样得到的近邻图称为k近邻图;另一种是指定距离阈值ϵ,距离小于ϵ的点被认为是近邻点,这样得到的近邻图称为ϵ近邻图。
- 若邻域范围指定过大,则会造成“短路问题”,即本身距离很远却成了近邻,将距离近的那些样本扼杀在摇篮。
- 若邻域范围指定过小,则会造成“断路问题”,即有些样本点无法可达了,整个世界村被划分为互不可达的小部落。
等度量映射算法流程
5.2局部线性嵌入(LLE)
与Isomap试图保持近邻样本之间的距离不同,局部线性嵌入(Locally Linear Embedding, 简称LLE) 试图保持邻域内样本之间的线性关系
LLE流程图
6、度量学习
在机器学习中,对高维数据进行降维的主要目的是希望找到一个合适的低维空间,在此空间中进行学习能比原始空间性能更好,事实上,每个空间对应了在样本属性上定义的一个距离度量,而寻找合适的空间,实质上就是在寻找一个合适的距离度量,那么,为何不直接尝试“学习”出一个合适的距离度量呢?这就是度量学习(metric learning)的基本动机.
度量学习便是对度量矩阵进行学习。
降维是将原高维空间嵌入到一个合适的低维子空间中,接着在低维空间中进行学习任务;
度量学习则是试图去学习出一个距离度量来等效降维的效果,两者都是为了解决维数灾难带来的诸多问题。
参考文献
《机器学习》周志华