k k k近邻学习是一种常用的监督学习方法,其工作机制非常简单:给定测试样本,基于某种距离度量找出训练集中与其最靠近的 k k k个训练样本,然后基于这 k k k个“邻居”的信息来进行预测。
通常,在分类任务中可使用“投票法”,即选择这 k k k个样本中出现最多的类别标记作为预测结果;在回归任务中可使用“平均法”,即将这 k k k个样本的实值输出标记的平均值作为预测结果;还可基于距离远近进行加权平均或加权投票,距离越近的样本权重越大。
k k k近邻学习涉及到三个主要因素: k k k的大小,距离或相似度的度量,以及特征归一化。 k k k的大小决定了近邻范围和投票权重,距离或相似度的度量决定了如何判断两个实例之间的接近程度,特征归一化决定了各个特征对距离或相似度计算的影响。这些因素都需要根据具体问题和数据集来选择合适的方法和参数。
k k k近邻学习是基于“密采样”假设——任意测试样本 x x x附近任意小的 δ \delta δ距离范围内总能找到一个训练样本,即训练样本的采样密度足够大。然而,这个假设在现实中很难满足,假设 δ = 0.001 \delta=0.001 δ=0.001,就意味着至少要有1000个样本点平均分布在归一化后的属性取值范围内,才能保证任意测试样本在其附近的0.001距离范围内总能找到一个训练样本,而这只是属性维数为1的情况,如果属性维数更大不仅需要的样本数会变多,同时高维空间会给距离计算带来很大的困难。所以有时我们需要通过降维来缓解维数灾难,也就是通过某种数学变换将原始高维属性空间转变为一个低维“子空间”,在这个子空间中样本密度大幅提高,而距离计算也变得更为容易。
下面介绍一种多维缩放方法,Multiple Dimensional Scaling(MDS),多维缩放的原理是:给定样本两两间距离/不相似度,如何获得样本的表示,使得样本间距离/不相似度和给定的一致。从降维角度,就是低维空间的样本间距离/不相似度要和高维空间样本间距离/不相似度基本一致。
具体来说,多维缩放的过程可以分为以下几个步骤:
降维效果的评估方法可以分为两类:
主成分分析(PCA)是一种使用最广泛的数据降维算法,它的主要思想是将 n n n维特征映射到 k k k维上,这 k k k维是全新的正交特征,也被称为主成分,是在原有 n n n维特征的基础上重新构造出来的 k k k维特征。
PCA的数学定义是:一个正交化线性变换,把数据变换到一个新的坐标系统中,使得这一数据的任何投影的第一大方差在第一个坐标(称为第一主成分)上,第二大方差在第二个坐标(第二主成分)上,依次类推。
PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的。其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。依次类推,可以得到 n n n个这样的坐标轴。通过这种方式获得的新的坐标轴,我们发现,大部分方差都包含在前面 k k k个坐标轴中,后面的坐标轴所含的方差几乎为0。于是,我们可以忽略余下的坐标轴,只保留前面 k k k个含有绝大部分方差的坐标轴。事实上,这相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,实现对数据特征的降维处理。
为了得到这些包含最大差异性的主成分方向,我们需要对数据进行一些预处理和计算。具体步骤如下:
主成分分析的目的是找到一个低维的超平面,使得原始数据在这个超平面上的投影能够尽可能地保留原始数据的信息。这个信息可以从两个方面来衡量:最近重构性和最大可分性。
最近重构性:重构后的样本映射回原空间,与原样本的距离都足够的近。也就是说,PCA要求投影后的数据能够用最小的误差来近似原始数据。这个误差可以用样本点到投影超平面的距离来表示,因此,最近重构性可以转化为一个最小化距离平方和的优化问题。
最大可分性:样本在这个超平面上的投影尽可能分开。也就是说,PCA要求投影后的数据能够有最大的方差,以反映原始数据的差异性。这个方差可以用投影后数据的协方差矩阵来表示,因此,最大可分性可以转化为一个最大化协方差矩阵迹的优化问题。
假定数据样本进行了中心化,即 ∑ x i = 0 \sum {{x_i}} = 0 ∑xi=0,再假定投影变换后得到的新坐标系为 { w 1 , w 2 , . . . , w d } \{ {w_1},{w_2},...,{w_d}\} {w1,w2,...,wd},若丢弃新坐标系中的部分坐标,即将维度降低到 d ′ < d d' < d d′<d,则样本点 x i x_i xi在低维坐标系中的投影是 z i = ( z i 1 ; z i 2 ; . . . ; z i d ′ ) {z_i} = ({z_{i1}};{z_{i2}};...;{z_{id'}}) zi=(zi1;zi2;...;zid′),其中 z i j = w j T x i {z_{ij}} = w_j^T{x_i} zij=wjTxi是 x i x_i xi在低维坐标系下第 j j j维的坐标,如果基于 z i z_i zi来重构 x i x_i xi,则会得到 x ‾ i = ∑ j = 1 d ′ z i j w j {\overline x _i} = \sum\limits_{j = 1}^{d'} {{z_{ij}}{w_j}} xi=j=1∑d′zijwj。
考虑整个训练集,原样本点 x i x_i xi与基于投影重构的样本点 x ‾ i {\overline x _i} xi之间的距离为
∑ i = 1 m ∥ ∑ j = 1 d ′ z i j w j − x i ∥ 2 2 = ∑ i = 1 m z i T z i − 2 ∑ i = 1 m z i T W T x i + c o n s t ∝ − t r ( W T ( ∑ i = 1 m x i x i T ) W ) \sum\limits_{i = 1}^m {\left\| {\sum\limits_{j = 1}^{d'} {{z_{ij}}{w_j} - {x_i}} } \right\|_2^2} = \sum\limits_{i = 1}^m {{z_i}^T{z_i} - 2\sum\limits_{i = 1}^m {{z_i}^T{{\bf{W}}^T}{x_i} + const} } \propto - tr({{\bf{W}}^T}(\sum\limits_{i = 1}^m {{x_i}{x_i}^T} ){\bf{W}}) i=1∑m j=1∑d′zijwj−xi 22=i=1∑mziTzi−2i=1∑mziTWTxi+const∝−tr(WT(i=1∑mxixiT)W)
根据最近重构性,上述式子需要最小化,则得到了如下的结果,也是主成分分析的优化目标。
min W − t r ( W T X X T W ) s . t . W T W = I \begin{aligned} \min\limits_{\bf{W}} &- tr({{\bf{W}}^T}{\bf{X}}{{\bf{X}}^T}{\bf{W}}) \\ s.t.&{{\bf{W}}^T}{\bf{W}} = {\bf{I}} \\ \end{aligned} Wmins.t.−tr(WTXXTW)WTW=I
根据最大可分性,若所有样本点的投影尽可能分开,则应该使投影后样本点的方差最大化,如下图所示。于是可以对协方差矩阵 X X T {\bf{X}}{{\bf{X}}^T} XXT进行特征值分解,将求得的特征值排序: λ 1 ⩾ λ 2 ⩾ . . . ⩾ λ d {\lambda _1} \geqslant {\lambda _2} \geqslant ... \geqslant {\lambda _d} λ1⩾λ2⩾...⩾λd,再取前 d ′ d' d′个特征值对应的特征向量构成 W ∗ = ( w 1 , w 2 , . . . , w d ′ ) {{\bf{W}}^*} = ({w_1},{w_2},...,{w_{d'}}) W∗=(w1,w2,...,wd′),这就是主成分分析的解。
现实任务中可能需要非线性映射来找到恰当的低维嵌入,如下图所示,样本点从二维空间中的矩形区域采样后以S形曲面嵌入到三维空间,若直接使用线性降维方法对三维空间观察到的样本点进行降维,则将失去原本的低维结构。为了对“原本采样的”低维空间与降维后的低维空间加以区别,我们称前者为“本真”低维空间,而非线性降维的一种常用方法,是基于核技巧对线性降维方法进行“核化”。
流形学习(manifold learning)是一种非线性降维技术,它基于这样一个假设:高维空间中的数据实际上是由一个低维流形映射到高维空间上的。流形是高维空间中的几何结构,可以看作是低维空间中曲线或曲面在高维空间中的推广。流形学习的目的是找到一个合适的映射函数,将高维空间中的数据投影到低维流形上,从而保留数据的内在结构和特征。流形学习有很多应用,例如数据可视化,数据压缩,数据生成,特征提取等。流形学习的典型算法有局部线性嵌入(LLE),拉普拉斯特征映射(LE),局部保持投影(LPP),等距映射(ISOMAP)等。
度量学习是一种从数据中学习一种度量数据对象间距离的方法,它的目的是使得在学得的距离度量下,相似对象间的距离小,不相似对象间的距离大。度量学习可以用于数据分类,聚类,检索,可视化等任务。
深度度量学习是一种结合了深度学习和度量学习的方法,它可以从原始数据中自动地学习高质量的特征表示,并利用激活函数来捕捉数据的非线性特征。深度度量学习主要由三个方面组成:样本挖掘,模型结构和损失函数。样本挖掘是指从数据集中选择合适的样本对或三元组来训练模型,使得模型能够从难分辨的样本中学习更多的信息。模型结构是指使用深度神经网络来提取数据的特征向量,常见的模型结构有孪生网络和三元组网络²。损失函数是指定义模型优化的目标函数,常见的损失函数有对比损失,三元组损失,N-pair损失等。