机器学习 第十章降维与度量学习

685 阅读10分钟

关于周志华老师的《机器学习》这本书的学习笔记
记录学习过程
本博客记录Chapter10

1 kk邻近学习

kk近邻(kk-Nearest Neighbor, KNN)学习是一种常用的监督学习方法。其基本思想是:给定测试样本,基于某种距离度量找到与其最靠近的kk个训练样本,根据这kk个邻居的信息来进行预测。其中,分类问题往往采用“投票法”;回归问题采用“平均法”。 其示意图如下:

image.png

kk-近邻分类器没有显式的训练过程,训练过程仅需要将样本保存起来,待收到测试样本后再进行处理,是典型的“懒惰训练”(lazy learning)。该方法的核心是确定kk,当k=1k=1,其又叫做“最近邻分类器”。

给定测试样本xx,若其最近邻样本为zz,则最近邻分类器出错的概率是xxzz标记不相同的概率:

P(err)=1cYP(cx)P(cz)P(err)=1-\sum_{c\in Y} P(c|x)P(c|z)

假设样本独立同分布,且对于任意xx和任意小的正数δ\delta,在xx附近δ\delta距离范围内总能找到一个训练样本。令c=argmaxcYP(cx)c^*=\arg\max_{c\in Y} P(c|x)表示贝叶斯最优分类器的结果,有:

P(err)=1cYP(cx)P(cz)1cYP2(cx)1P2(cx)=(1+P(cx))(1P(cx))2×(1P(cx)) P(err)=1-\sum_{c\in Y}P(c|x)P(c|z) \simeq1-\sum_{c\in Y}P^2(c|x) \le 1-P^2(c^*|x)\\ =(1+P(c^*|x))(1-P(c^*|x)) \le 2\times (1-P(c^*|x))

最近邻分类器虽然简单,但其泛化错误率不超过贝叶斯最优分类器的错误率的2倍

2 低维嵌入

上一节的讨论我们基于一个重要的假设:训练样本的采样密度足够大。但这个假设在现实生活中往往无法实现,例如若δ=0.001δ=0.001,仅考虑单个属性,则仅需1000个样本点平均分布在归一化后的属性取值范围内,即可使得任意测试样本在其附近0.001距离范围内总能找到一个训练样本,此时最近邻分类器的错误率不超过贝叶斯最优分类器的错误率的两倍。然而,这仅是属性维数为1的情形,若有更多的属性,则情况会发生显著变化。例如假定属性维数为20,若要求样本满足密采样条件,则至少需(103)20=1060(10^3)^{20}= 10^{60}个样本.现实应用中属性维数经常成千上万,要满足密采样条件所需的样本数目是无法达到的天文数字。此外,许多学习方法都涉及距离计算,而高维空间会给距离计算带来很大的麻烦,例如当维数很高时甚至连计算内积都很困难。

在高维情形下出现的样本数据稀疏、距离计算困难的问题,称为“维数灾难”(curse of dimensionality)。缓解维数灾难的方法就是降维:即通过某种数学变换将原始高维属性空间转变为一个低维“子空间”(subspace)。

image.png

降维要求原始空间中的样本之间的距离在低维空间中得以保持,即得到多维缩放(MDS)

  • 假定mm个样本在原始空间的距离矩阵为DRm×mD\in R^{m\times m},其iijj列的元素distijdist_{ij}为样本xix_ixjx_j的距离。我们的目标是获得样本在dd'维空间的表示ZRd×m,ddZ\in R^{d'\times m},d'\le d,且任意两个样本在dd'维的空间中欧氏距离等于原始空间中的距离,即zizj=distij||z_i-z_j||=dist_{ij}

  • B=ZTZRm×mB=Z^TZ\in R^{m\times m},其中BB为降维后的样本内积矩阵,bij=ziTzjb_{ij}=z_i^Tz_j,有

    distij2=zi2+zj22ziTzj=bii+bjj2bijdist_{ij}^2=||z_i||^2+||z_j||^2-2z_i^Tz_j=b_{ii}+b_{jj}-2b_{ij}
  • 令降维后的样本ZZ被中心化,即i=1mzi=0\sum_{i=1}^m z_i=\bold 0。我们可以得到:

    i=1mbij=i=1mziTzj=(i=1mziT)zj=0j=1mbij=j=1mziTzj=ziT(j=1mzj)=0\sum_{i=1}^m b_{ij}=\sum_{i=1}^m z_i^Tz_j=(\sum_{i=1}^mz_i^T )z_j=\bold 0\\ \sum_{j=1}^m b_{ij}=\sum_{j=1}^m z_i^Tz_j=z_i^T(\sum_{j=1}^mz_j )=\bold 0\\
  • 根据distdist的公式,我们能得到(tr()tr(\cdot)表示矩阵的迹(trace)):

    i=1jdistij2=i=1m(bii+bjj2bij)=tr(B)+mbjjj=1jdistij2=j=1m(bii+bjj2bij)=tr(B)+mbiii=1mj=1mdistij2=2mtr(B)tr(B)=i=1mzi2\sum_{i=1}^j dist_{ij}^2=\sum_{i=1}^m (b_{ii}+b_{jj}-2b_{ij})=tr(B)+mb_{jj}\\ \sum_{j=1}^j dist_{ij}^2=\sum_{j=1}^m (b_{ii}+b_{jj}-2b_{ij})=tr(B)+mb_{ii}\\ \sum_{i=1}^m \sum_{j=1}^m dist_{ij}^2=2m \cdot tr(B)\\ tr(B)=\sum_{i=1}^m||z_i||^2
  • 令:

    disti2=1mj=1mdistij2distj2=1mi=1mdistij2dist2=1m2i=1mj=1mdistij2dist_{i\cdot}^2=\frac{1}{m} \sum_{j=1}^m dist_{ij}^2\\ dist_{\cdot j}^2=\frac{1}{m} \sum_{i=1}^m dist_{ij}^2\\ dist_{\cdot \cdot}^2=\frac{1}{m^2}\sum_{i=1}^m \sum_{j=1}^m dist_{ij}^2\\
  • 由上述各式子可得

    bij=12(distij2disti2distj2+dist2)b_{ij}=-\frac{1}{2}(dist_{ij}^2-dist_{i\cdot}^2-dist_{\cdot j}^2+dist_{\cdot \cdot}^2)
  • 对矩阵BB做特征值分解,得B=VΛVTB=V\Lambda V^T,其中Λ=diag{λ1,λ2,,λd}\Lambda=diag \{\lambda_1,\lambda_2,…,\lambda_d \}为特征值构成的对角矩阵,λ1λ2λd\lambda_1\ge \lambda_2\ge…\ge\lambda_dVV是特征向量矩阵。假定有dd^*个非零特征值,它们构成对角矩阵Λ=diag{λ1,λ2,,λd}\Lambda_*=diag\{\lambda_1,\lambda_2,…,\lambda_{d^*} \},令VV_*表示相应的特征向量矩阵,则有:

    Z=Λ1/2VTRd×mZ=\Lambda_*^{1/2}V_*^T\in R^{d^*\times m}

MDS算法的描述如下:

image.png

3 主成分分析

主成分分析(Principal Component Analysis,PCA)是一类典型的线性降维方法。其原理可以通过以下两个性质分别推导:

  • 最近重构性:样本点到超平面的距离足够近
  • 最大可分性:样本点到超平面的投影尽可能分开

最近重构性的角度去推导:

  • 首先对数据样本进行中心化,即i=1xi=0\sum_{i=1}x_i=\bold 0

  • 假定投影变换后得到的新坐标系为:{w1,w2,wd}\{w_1,w_2,…,w_d\}。 其中wiw_i是标准正交基向量,wi2=1,wiTwj=0 (ij)||w_i||_2=1,w_i^Tw_j=0\space(i\neq j)。若丢弃部分坐标,即将维度降低到d<dd'\lt d,则样本点xix_i在低维坐标系中的投影为zi={zi1,zi2,,zid}z_i=\{z_{i1},z_{i2},…,z_{id'} \},其中zij=wjTxiz_{ij}=w_j^Tx_ixix_i在低维坐标系下第jj维的坐标,若基于ziz_i来重构xix_i,则得到xi^=j=1dzijwj\hat{x_i}=\sum_{j=1}^{d'}z_{ij}w_j

  • 考虑整个训练集,原样本点xix_i到基于投影重构的样本点x^i\hat x_i之间的距离为:

    i=1mi=1dzijwjxi22=i=1mziTzi2i=1mziTWTxi+const\sum_{i=1}^m||\sum_{i=1}^{d'}z_{ij}w_j-x_i||_2^2=\sum_{i=1}^mz_i^{T}z_i-2\sum_{i=1}^mz_i^{T}W^{T}x_i+const
  • 其中W=(w1,w2,,wd)W=(w_1,w_2,…,w_d)。根据最近重构性,应最小化上式,等价于:

    minWtr(WTXXTW)s.t.WTW=I\min_{W} -tr(W^TXX^TW)\\ s.t. W^TW=I

只需对协方差矩阵XXTXX^T进行特征值分解,将求得的特征值排序:λ1λ2...λd\lambda_1≥\lambda_2≥...≥\lambda_d,再取前dd'个特征值对应的特征向量构成W=(w1,w2,...,wd)W=(w_1,w_2,..., w_{d'}).这就是主成分分析的解。PCA算法描述如图所示:

image.png

4 核化线性降维

线性降维方法假设从高维空间到低维空间的函数映射是线性的,然而在不少现实任务中,可能需要非线性映射才能找到恰当的低维嵌入。下图给出了一个例子, 样本点从二维空间中的矩形区域采样后以S形曲面嵌入到三维空间,若直接使用线性降维方法对三维空间观察到的样本点进行降维,则将丢失原本的低维结构。

为了对“原本采样的”低维空间与降维后的低维空间加以区别,我们称前者为 “本真”(intrinsic)低维空间

image.png

非线性降维的一种方法是基于核技巧的对线性降维方法进行“核化”(kernelized)。以核主成分分析(Kernelized PCA)为例:

  • 假定高维特征空间中把数据投影到由W={w1,w2,,wd}W=\{w_1,w_2,…,w_d \}确定的超平面,对于wjw_j,有

    (i=1mziziT)wj=λjwj(\sum_{i=1}^mz_iz_i^T)w_j=\lambda_jw_j
  • 易知:

    wj=1λj(i=1mziziT)wj=i=1mziziTwjλj=i=1mziαijw_j=\frac{1}{\lambda_j}(\sum_{i=1}^mz_iz_i^T)w_j=\sum_{i=1}^mz_i\frac{z_i^Tw_j}{\lambda_j}=\sum_{i=1}^m z_i\alpha_i^j
  • 假设ziz_i由原始属性空间中的样本点xix_i通过映射ϕ\phi产生,即zi=ϕ(xi),i=1,2,,mz_i=\phi(x_i),i=1,2,…,m。若ϕ\phi能被显式表达出来,则通过它将样本映射到高维特征空间,再将特征空间中实施PCA即可

    (i=1mϕ(xi)ϕ(xi)T)wj=λjwjwj=i=1mϕ(xi)αij(\sum_{i=1}^m \phi(x_i)\phi(x_i)^T )w_j=\lambda_jw_j\\ w_j=\sum_{i=1}^m\phi(x_i)\alpha_i^j
  • 引入核函数:κ(xi,xj)=ϕ(xi)ϕ(xj)\kappa(x_i,x_j)=\phi(x_i)\phi(x_j)

  • 化简后可得:

    Kαj=λjαjK\alpha^j=\lambda_j \alpha^j
  • 其中,KKκ\kappa对应的核矩阵,(K)ij=κ(xi,xj),αj=(α1j,α2j,,αmj)(K)_{ij}=\kappa(x_i,x_j),\alpha_j=(\alpha_1^j,\alpha_2^j,…,\alpha_m^j)。显然上式是一个特征值分解问题,去KK最大的dd'个特征值对应的特征向量即可。

  • 对于新样本xx,其投影后的第jj维坐标为:

    zj=wjTϕ(x)=i=1mαijϕ(xi)Tϕ(x)=i=1Tαijκ(xi,x)z_j=w_j^T\phi(x)=\sum_{i=1}^m\alpha_i^j\phi(x_i)^T\phi(x)=\sum_{i=1}^T\alpha_i^j\kappa(x_i,x)

5 流形学习

流形学习(manifold learning) 是一类借鉴了拓扑流形概念的降维方法。流形是在局部与欧氏空间同胚的空间,换言之,它在局部具有欧氏空间的性质,能用欧氏距离来进行距离计算。这给降维方法带来了很大的启发:若低维流形嵌入到高维空间中,则数据样本在高维空间的分布虽然看上去非常复杂,但在局部上仍具有欧氏空间的性质,因此,可以容易地在局部建立降维映射关系,然后再设法将局部映射关系推广到全局。 当维数被降至二维或三维时,能对数据进行可视化展示,因此流形学习也可被用于可视化。

5.1 等度量映射

等度量映射(Isometric Mapping,简称Isomap):认为低维流形嵌入到高维空间之后,直接再高维空间计算直线距离有误导性,因为高维空间中直线距离在低维嵌入流形中不可达。如蚂蚁从一点爬到另一点,直接计算直线距离相当于“脱离曲面行走”,这是不可能的,具体见下图。

image.png

那么,如何计算测地线距离呢?

这时我们可利用流形在局部上与欧氏空间同胚这个性质,对每个点基于欧氏距离找出其近邻点,然后就能建立一个近邻连接图,图中近邻点之间存在连接,而非近邻点之间不存在连接,于是,计算两点之间测地线距离的问题,就转变为计算近邻连接图上两点之间的最短路径问题。 可以采用dijkstra算法或Floyd算法求得最短路径,再利用MDS算法获得样本点在低维空间中的坐标。

综上,Isomap算法流程如下:

image.png

需注意的是,Isomap仅是得到了训练样本在低维空间的坐标,对于新样本,如何将其映射到低维空间呢?这个问题的常用解决方案,是将训练样本的高维空间坐标作为输入、低维空间坐标作为输出,训练以一个回归学习器来对新样本的低维空间坐标进行预测。

5.2 局部线性嵌入

等度量映射试图保持邻域内样本之间的距离,而局部线性嵌入(Locally Linera Embedding,LLE)试图保持邻域内样本之间的线性关系

image.png

假定样本xix_i的坐标能通过其邻域样本xj,xk,xlx_j,x_k,x_l的坐标通过线性组合表示:

xi=wijxj+wikxk+wilxlx_i=w_{ij}x_j+w_{ik}x_k+w_{il}x_l

LLE希望上式在低维空间中能得以保持。

其算法描述如下图:

image.png

6 度量学习

在机器学习中,对高维数据进行降维的主要目的是希望找到一个合适的低维空间,在此空间中进行学习能比原始空间性能更好。事实上,每个空间对应了在样本属性上定义的一个距离度量,而寻找合适的空间,实质上就是在寻找一个合适的距离度量。那么,为何不直接尝试“学习”出一个合适的距离度量呢?这就是度量学习(metric learning) 的基本动机.

对两个dd维样本xix_ixjx_j,它们之间的平方欧氏距离可以写为:

disted2(xi,xj)=xixj22=distij,12+distij,22++distij,d2dist_{ed}^2(x_i,x_j)=||x_i-x_j||^2_2=dist_{ij,1}^2+dist_{ij,2}^2+…+dist_{ij,d}^2

其中,distij,kdist_{ij,k}表示xix_ixjx_j之间在kk维上的距离。同时若假定不同属性的重要性不同,可以引入属性权重ww,得到:

disted2(xi,xj)=w1distij,12+w2distij,22++wddistij,d2=(xixj)TW(xixj) dist_{ed}^2(x_i,x_j)=w_1\cdot dist_{ij,1}^2+w_2\cdot dist_{ij,2}^2+…+w_d\cdot dist_{ij,d}^2\\ =(x_i-x_j)^TW(x_i-x_j)

其中W=diag(w)W=diag(w)是一个对角矩阵,(W)ii=wi(W)_{ii}=w_i

式中的WW可通过学习确定,但我们还能再往前走一步:WW的非对角元素均为零,这意味着坐标轴是正交的,即属性之间无关;但现实问题中往往不是这样,例如考虑西瓜的“重量”和“体积”这两个属性,它们显然是正相关的,其对应的坐标轴不再正交。

为此,将式中的WW替换为一个普通的半正定对称矩阵M,于是就得到了马氏距离(Mahalanobis distance)

distmah2(xi,xj)=(xixj)TM(xixj)=xixjM2dist_{mah}^2(x_i,x_j)=(x_i-x_j)^TM(x_i-x_j)=||x_i-x_j||_M^2

MM亦称度量矩阵。对MM学习要设立一个目标,假定我们希望提高近邻分类器的性能,可以将MM直接嵌入到近邻分类器的评价指标中,通过优化该性能指标求得MM。下面以近邻成分分析为例:

  • 近邻分类器往往以投票法进行判别。假设对于任意样本xjx_j,它对xix_i的分类结果影响的概率为

    pij=exp(xixjM2)lexp(xixlM2)p_{ij}=\frac{exp(-||x_i-x_j||_M^2)}{\sum_l exp(-||x_i-x_l||_M^2)}

    xjx_jxix_i的影响随着它们之间距离的增加而减小

  • 若以留一法正确率的最大化为目标,可直接计算xix_i的留一法的正确理,即它被自身之外所有样本正确分类的概率:

    pi=jΩipijp_i=\sum_{j\in \Omega_i}p_{ij}
  • 因此,NCA的优化目标为:

    minP1i=1mjΩiexp(xixjM2)lexp(xixlM2)\min_{P} 1-\sum_{i=1}^m\sum_{j\in \Omega_i}\frac{exp(-||x_i-x_j||_M^2)}{\sum_l exp(-||x_i-x_l||_M^2)}
  • 求解上式即可以得到最大化近邻分类器LOO正确率的距离度量矩阵MM