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

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

1 k k 邻近学习

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

image.png

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

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

P ( e r r ) = 1 c Y P ( c x ) P ( c z ) P(err)=1-\sum_{c\in Y} P(c|x)P(c|z)

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

P ( e r r ) = 1 c Y P ( c x ) P ( c z ) 1 c Y P 2 ( c x ) 1 P 2 ( c x ) = ( 1 + P ( c x ) ) ( 1 P ( c x ) ) 2 × ( 1 P ( c x ) ) 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,若要求样本满足密采样条件,则至少需 ( 1 0 3 ) 20 = 1 0 60 (10^3)^{20}= 10^{60} 个样本.现实应用中属性维数经常成千上万,要满足密采样条件所需的样本数目是无法达到的天文数字。此外,许多学习方法都涉及距离计算,而高维空间会给距离计算带来很大的麻烦,例如当维数很高时甚至连计算内积都很困难。

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

image.png

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

  • 假定 m m 个样本在原始空间的距离矩阵为 D R m × m D\in R^{m\times m} ,其 i i j j 列的元素 d i s t i j dist_{ij} 为样本 x i x_i x j x_j 的距离。我们的目标是获得样本在 d d' 维空间的表示 Z R d × m , d d Z\in R^{d'\times m},d'\le d ,且任意两个样本在 d d' 维的空间中欧氏距离等于原始空间中的距离,即 z i z j = d i s t i j ||z_i-z_j||=dist_{ij}

  • B = Z T Z R m × m B=Z^TZ\in R^{m\times m} ,其中 B B 为降维后的样本内积矩阵, b i j = z i T z j b_{ij}=z_i^Tz_j ,有

    d i s t i j 2 = z i 2 + z j 2 2 z i T z j = b i i + b j j 2 b i j dist_{ij}^2=||z_i||^2+||z_j||^2-2z_i^Tz_j=b_{ii}+b_{jj}-2b_{ij}
  • 令降维后的样本 Z Z 被中心化,即 i = 1 m z i = 0 \sum_{i=1}^m z_i=\bold 0 。我们可以得到:

    i = 1 m b i j = i = 1 m z i T z j = ( i = 1 m z i T ) z j = 0 j = 1 m b i j = j = 1 m z i T z j = z i T ( j = 1 m z j ) = 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\\
  • 根据 d i s t dist 的公式,我们能得到( t r ( ) tr(\cdot) 表示矩阵的迹(trace)):

    i = 1 j d i s t i j 2 = i = 1 m ( b i i + b j j 2 b i j ) = t r ( B ) + m b j j j = 1 j d i s t i j 2 = j = 1 m ( b i i + b j j 2 b i j ) = t r ( B ) + m b i i i = 1 m j = 1 m d i s t i j 2 = 2 m t r ( B ) t r ( B ) = i = 1 m z i 2 \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
  • 令:

    d i s t i 2 = 1 m j = 1 m d i s t i j 2 d i s t j 2 = 1 m i = 1 m d i s t i j 2 d i s t 2 = 1 m 2 i = 1 m j = 1 m d i s t i j 2 dist_{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\\
  • 由上述各式子可得

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

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

MDS算法的描述如下:

image.png

3 主成分分析

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

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

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

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

  • 假定投影变换后得到的新坐标系为: { w 1 , w 2 , w d } \{w_1,w_2,…,w_d\} 。 其中 w i w_i 是标准正交基向量, w i 2 = 1 , w i T w j = 0   ( i j ) ||w_i||_2=1,w_i^Tw_j=0\space(i\neq j) 。若丢弃部分坐标,即将维度降低到 d < d d'\lt d ,则样本点 x i x_i 在低维坐标系中的投影为 z i = { z i 1 , z i 2 , , z i d } z_i=\{z_{i1},z_{i2},…,z_{id'} \} ,其中 z i j = w j T x i z_{ij}=w_j^Tx_i x i x_i 在低维坐标系下第 j j 维的坐标,若基于 z i z_i 来重构 x i x_i ,则得到 x i ^ = j = 1 d z i j w j \hat{x_i}=\sum_{j=1}^{d'}z_{ij}w_j

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

    i = 1 m i = 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 \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 = ( w 1 , w 2 , , w d ) W=(w_1,w_2,…,w_d) 。根据最近重构性,应最小化上式,等价于:

    min W t r ( W T X X T W ) s . t . W T W = I \min_{W} -tr(W^TXX^TW)\\ s.t. W^TW=I

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

image.png

4 核化线性降维

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

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

image.png

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

  • 假定高维特征空间中把数据投影到由 W = { w 1 , w 2 , , w d } W=\{w_1,w_2,…,w_d \} 确定的超平面,对于 w j w_j ,有

    ( i = 1 m z i z i T ) w j = λ j w j (\sum_{i=1}^mz_iz_i^T)w_j=\lambda_jw_j
  • 易知:

    w j = 1 λ j ( i = 1 m z i z i T ) w j = i = 1 m z i z i T w j λ j = i = 1 m z i α i j w_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
  • 假设 z i z_i 由原始属性空间中的样本点 x i x_i 通过映射 ϕ \phi 产生,即 z i = ϕ ( x i ) , i = 1 , 2 , , m z_i=\phi(x_i),i=1,2,…,m 。若 ϕ \phi 能被显式表达出来,则通过它将样本映射到高维特征空间,再将特征空间中实施PCA即可

    ( i = 1 m ϕ ( x i ) ϕ ( x i ) T ) w j = λ j w j w j = i = 1 m ϕ ( x i ) α i j (\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
  • 引入核函数: κ ( x i , x j ) = ϕ ( x i ) ϕ ( x j ) \kappa(x_i,x_j)=\phi(x_i)\phi(x_j)

  • 化简后可得:

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

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

    z j = w j T ϕ ( x ) = i = 1 m α i j ϕ ( x i ) T ϕ ( x ) = i = 1 T α i j κ ( x i , 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

假定样本 x i x_i 的坐标能通过其邻域样本 x j , x k , x l x_j,x_k,x_l 的坐标通过线性组合表示:

x i = w i j x j + w i k x k + w i l x l x_i=w_{ij}x_j+w_{ik}x_k+w_{il}x_l

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

其算法描述如下图:

image.png

6 度量学习

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

对两个 d d 维样本 x i x_i x j x_j ,它们之间的平方欧氏距离可以写为:

d i s t e d 2 ( x i , x j ) = x i x j 2 2 = d i s t i j , 1 2 + d i s t i j , 2 2 + + d i s t i j , d 2 dist_{ed}^2(x_i,x_j)=||x_i-x_j||^2_2=dist_{ij,1}^2+dist_{ij,2}^2+…+dist_{ij,d}^2

其中, d i s t i j , k dist_{ij,k} 表示 x i x_i x j x_j 之间在 k k 维上的距离。同时若假定不同属性的重要性不同,可以引入属性权重 w w ,得到:

d i s t e d 2 ( x i , x j ) = w 1 d i s t i j , 1 2 + w 2 d i s t i j , 2 2 + + w d d i s t i j , d 2 = ( x i x j ) T W ( x i x j ) 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 = d i a g ( w ) W=diag(w) 是一个对角矩阵, ( W ) i i = w i (W)_{ii}=w_i

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

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

d i s t m a h 2 ( x i , x j ) = ( x i x j ) T M ( x i x j ) = x i x j M 2 dist_{mah}^2(x_i,x_j)=(x_i-x_j)^TM(x_i-x_j)=||x_i-x_j||_M^2

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

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

    p i j = e x p ( x i x j M 2 ) l e x p ( x i x l M 2 ) p_{ij}=\frac{exp(-||x_i-x_j||_M^2)}{\sum_l exp(-||x_i-x_l||_M^2)}

    x j x_j x i x_i 的影响随着它们之间距离的增加而减小

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

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

    min P 1 i = 1 m j Ω i e x p ( x i x j M 2 ) l e x p ( x i x l M 2 ) \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正确率的距离度量矩阵 M M

猜你喜欢

转载自juejin.im/post/7079380137845719071