【机器学习第10章——降维与度量学习】

10.降维与度量学习

10.1 k近邻学习

给定测试样本x,若其最近邻样本为z,则最近邻分类器出错的概率就是x与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) P(err)=1cyP(cx)P(cz)
贝叶斯最优分类器的结果表示为
c ∗ = arg ⁡ max ⁡ c ∈ y P ( c   ∣   x ) c^*=\arg\max_{c\in y}P(c\,|\,x) c=argcymaxP(cx)

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 ) ] 1 − P ( c ∗   ∣   x ) a 为贝叶斯最优分类器的错误率 P(err)=1-\sum_{c\in y}P(c\,|\,x)P(c\,|\,z)\\ \approx1-\sum_{c\in y}P^2(c\,|\,x)\\ \leq1-P^2(c^*\,|\,x)\\ =[1+P(c^*\,|\,x)][1-P(c^*\,|\,x)]\\ \leq2\times[1-P(c^*\,|\,x)]\quad\quad1-P(c^*\,|\,x)a为贝叶斯最优分类器的错误率 P(err)=1cyP(cx)P(cz)1cyP2(cx)1P2(cx)=[1+P(cx)][1P(cx)]2×[1P(cx)]1P(cx)a为贝叶斯最优分类器的错误率

可以得出k近邻的错误率不超过贝叶斯最优分类器错误率的两倍

  • K近邻算法存在的问题

    • 问题一:近邻间的距离会被大量的不相关属性所支配。
      • 应用k-近邻算法的一个实践问题是,实例间的距离是根据实例的所有属性(也就是包含实例的欧氏空间的所有坐标轴)计算的
    • 解决方法:当计算两个实例间的距离时对每个属性加权。
      • 这相当于按比例缩放欧氏空间中的坐标轴,缩短对应于不太相关属性的坐标轴,拉长对应于更相关的属性的坐标轴。每个坐标轴应伸展的数量可以通过交叉验证的方法自动决定。
    • 问题二:K-近邻算法必须保存全部数据集,如果训练数据集的很大,必须使用大量的存储空间。此外,由于必须对数据集中的每个数据计算距离值,实际使用时可能非常耗时
    • 问题三:在训练数据集中要求的观测值的数目,随着维数k的增长以指数方式增长。这是因为和最近邻的期望距离随着维数k的增多而急剧上升,除非训练数据集的大小随着k以指数方式增长。
    • 解决方法:当计算两个实例间的距离时对每个属性加权。
      • 通过降维技术来减少维数,如主成分分析,因子分析,变量选择(因子选择)从而减少计算距离的时间
  • 降维的动机

    • 原始观察空间中的样本具有极大的信息冗余
    • 样本的高维数引发分类器设计的“维数灾难“
    • 数据可视化(MATLAB的tsne函数:数据降维可视化)、特征提取、分类与聚类等任务需求

10.2 低维嵌入(MDS)

  • ·在高维情形下出现的数据样本稀疏、距离计算困难等问题,是所有机器学习方法共同面临的严重障碍,被称为维数灾难

  • 缓解维数灾难的一个重要途径是降维,亦称为维数约简,即通过某种数学变换将原始高维属性空间转变为一个低维子空间。在这个子空间中样本密度大幅提高,距离计算也更为容易。

  • 若要求原始空间中样本之间的距离在低维空间中得以保持,即多维缩放。

  • MDS是一种非监督的维数约简方法.
  • MDS的基本思想:约简后低维空间中任意两点间的距离应该与它们在原高维空间中的距离相同.
  • MDS的求解:通过适当定义准则函数来体现在低维空间中对高维距离的重建误差,对准则函数用梯度下降法求解,L对于某些特殊的距离可以推导出解析解法.

假定m个样本在原始空间的距离矩阵
D ∈ R m × m D\in R^{m\times m} DRm×m
其第i行j列的元素
d i s t i j 为样本 x i 到 x j 的距离 dist_{ij}为样本x_i到x_j的距离 distij为样本xixj的距离
我们的目标是获得样本在d’维空间的表示
D ∈ R d ′ × m , d ′ ≤ d D\in R^{d'\times m},d'\leq d DRd×m,dd
且任意两个样本在d’维空间中的欧式距离等于原始空间中的距离,即
∣ ∣ z i − z j ∣ ∣ = d i s t i j ||z_i-z_j||=dist_{ij} ∣∣zizj∣∣=distij

B = Z T Z ∈ R m × m B= Z^TZ\in R^{m\times m} B=ZTZRm×m
其中B为降维后样本的内积矩阵,里面的每一个元素表示第i个样本和第j个样本之间的距离
b i j = z i T z j , ∴ d i s t i j 2 = ∣ ∣ z i ∣ ∣ 2 + ∣ ∣ z j ∣ ∣ 2 − 2 z i T z j = z i T z i + z j T z j − 2 z i T z j = b i i + b j j − 2 b i j ( 10.3 ) b_{ij}=z^T_iz_j,\\ \therefore\quad dist_{ij}^2=||z_i||^2+||z_j||^2-2z_i^Tz_j=z^T_iz_i+z^T_jz_j-2z_i^Tz_j \\=b_{ii}+b_{jj}-2b_{ij}\quad (10.3) bij=ziTzj,distij2=∣∣zi2+∣∣zj22ziTzj=ziTzi+zjTzj2ziTzj=bii+bjj2bij(10.3)
为便于讨论,令降维后的样本Z被中心化(矩阵B的行与列之和均为零)
∑ i = 1 m b i j = ∑ j = 1 m b i j = 0 \sum_{i=1}^mb_{ij}=\sum_{j=1}^mb_{ij}=0 i=1mbij=j=1mbij=0
可得
∑ i = 1 m d i s t i j 2 = t r ( B ) + m b j j ( 10.4 ) \sum_{i=1}^mdist^2_{ij}=tr(B)+mb_{jj}\quad(10.4) i=1mdistij2=tr(B)+mbjj(10.4)
在这里插入图片描述

∑ j = 1 m d i s t i j 2 = t r ( B ) + m b i i ( 10.5 ) \sum_{j=1}^mdist^2_{ij}=tr(B)+mb_{ii}\quad(10.5) j=1mdistij2=tr(B)+mbii(10.5)

∑ i = 1 m ∑ j = 1 m d i s t i j 2 = 2 m   t r ( B ) ( 10.6 ) \sum_{i=1}^m\sum_{j=1}^mdist^2_{ij}=2m\,tr(B)\quad(10.6) i=1mj=1mdistij2=2mtr(B)(10.6)

在这里插入图片描述

我们将上述式子简化表示
d i s t i ⋅ 2 = 1 m ∑ j = 1 m d i s t i j 2 ( 10.7 ) dist^2_{i\cdot}=\frac{1}{m}\sum_{j=1}^mdist^2_{ij}\quad\quad(10.7) disti2=m1j=1mdistij2(10.7)

d i s t ⋅ j 2 = 1 m ∑ i = 1 m d i s t i j 2 ( 10.8 ) dist^2_{\cdot j}=\frac{1}{m}\sum_{i=1}^mdist^2_{ij}\quad\quad(10.8) distj2=m1i=1mdistij2(10.8)

d i s t ⋅ ⋅ 2 = 1 m 2 ∑ i = 1 m ∑ j = 1 m d i s t i j 2 ( 10.9 ) dist^2_{\cdot\cdot}=\frac{1}{m^2}\sum_{i=1}^m\sum_{j=1}^mdist^2_{ij}\quad\quad(10.9) dist⋅⋅2=m21i=1mj=1mdistij2(10.9)

通过上式合并可得
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^2_{i\cdot}-dist^2_{\cdot j}+dist^2_{\cdot\cdot}) bij=21(distij2disti2distj2+dist⋅⋅2)
由此即可通过降维前后保持不变的距离矩阵D求取内积矩阵B

对矩阵B做特征值分解
B = V Λ V T Λ = d i a g ( λ 1 , λ 2 , . . . , λ d ) 为特征值构成的对角矩阵 λ 1 ≥ λ 2 ≥ . . . ≥ λ d V 为特征向量矩阵 B=\rm{V}\Lambda\rm{V}^T\\ \Lambda=diag(\lambda_1,\lambda_2,...,\lambda_d)为特征值构成的对角矩阵\\ \lambda_1\geq\lambda_2\geq...\geq\lambda_d\\ \rm{V}为特征向量矩阵 B=VΛVTΛ=diag(λ1,λ2,...,λd)为特征值构成的对角矩阵λ1λ2...λdV为特征向量矩阵
假定其中有
d ∗ d^* d
个非零特征值,它们构成对角矩阵
Λ ∗ = d i a g ( λ 1 , λ 2 , . . . , λ d ∗ ) \Lambda_*=diag(\lambda_1,\lambda_2,...,\lambda_d*) Λ=diag(λ1,λ2,...,λd)

V ∗ \rm{V_*} V
表示相应的特征向量矩阵,则Z可表达为
Z = Λ ∗ 1 2 Λ ∗ T ∈ R d ∗ × m ( 10.11 ) Z=\Lambda_*^{\frac{1}{2}}\Lambda_*^T\in R^{d^*\times m}\quad\quad(10.11) Z=Λ21ΛTRd×m(10.11)
在现实应用中为了有效降维,往往仅需降维后的距离与原始空间中的距离尽可能接近,而不必严格相等。此时可取
d ′ < < d d'<< d d<<d
个最大特征值构成对角矩阵
Λ ~ = d i a g ( λ 1 , λ 2 , . . . , λ d ′ ) \tilde\Lambda= diag(\lambda_1,\lambda_2,...,\lambda_{d'}) Λ~=diag(λ1,λ2,...,λd)

V ~ \rm{\tilde V} V~
表示相应的特征向量矩阵,则Z可表达为
Z = Λ ~ 1 2 Λ ~ T ∈ R d ′ × m ( 10.12 ) Z=\tilde\Lambda^{\frac{1}{2}}\tilde\Lambda^T\in R^{d'\times m}\quad\quad(10.12) Z=Λ~21Λ~TRd×m(10.12)
在这里插入图片描述

  • (1)MDS降维条件

    • 保持原始空间样本之间的距离和低维空间中的距离相等。这是MDS降维方法的前提和条件,但是在实际的应用中,在本文后面的分析中会发现,我们并不会保证样本之间距离在降维前后保持百分之百不变,而是使得降维前后样本距离大致一致。
  • (2) MDS降维步骤

    • Step1:对原始数据做归一化预处理。

      对原始数据进行归一化后,保证所有属性的数据点全部落在[0,1]区间内,这样方便后面MDS算法处理。

      for a=1:p
      	max_val=max(data(:,a));
      	min_val=min(data(:,a));
      	range=max_val-min_val;
      	for b=1:n
      		data(b,a)=(data(b,a)-min_val)/range;
          end
      end
      
    • Step2:首先需要计算每个样本之间的欧氏距离

      使用两层for循环,对原始数据样本分别进行行和列遍历,最后得m个样本在原始空间的距离矩阵
      D ∈ R m × m D\in R^{m\times m} DRm×m
      现在我们的目标是获得样本在d’维空间中的表示
      D ∈ R d ′ × m D\in R^{d'\times m} DRd×m
      其中d’<=d,并且两个样本在d’维空间中的欧氏距离等于原始空间中的距离。

      D=zeros(n,n);
      for i=1:m
      	for j=1:m
      		temp=0;
      		for k=1:d
      			temp=temp+(data(i,k)-data(j,k))^2;
              end
              D(i,j)=sqrt(temp);
          end
      end
      
    • Step3:计算降维后样本的内积矩阵B

      首先构造矩阵
      B = Z T Z ∈ R m × m B= Z^TZ\in R^{m\times m} B=ZTZRm×m
      其中Z是step2中表示的降维后的样本矩阵。经过一系列的推导过程,最后我们能够得到如下的计算公式:
      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^2_{i\cdot}-dist^2_{\cdot j}+dist^2_{\cdot\cdot}) bij=21(distij2disti2distj2+dist⋅⋅2)
      根据这个公式,我们就能够计算出矩阵B中每一个元素的值。

      B=zeros(n,n);
      for i=1:n
      	for j=1:n
      		B(i,j)=-0.5*(D(i,j)^2-1/n*D(i,:)*D(i,:)'-1/n*D(:,j)'*D(:,j)+1/n^2*sum( sum(D.^2)));
      	end
      end
      
    • Step4:对上述矩阵内积矩阵B做特征值分解

      对step3中得到的矩阵B做特征值分解
      B = V Λ V T Λ = d i a g ( λ 1 , λ 2 , . . . , λ d ) 为特征值构成的对角矩阵 λ 1 ≥ λ 2 ≥ . . . ≥ λ d V 为特征向量矩阵 B=\rm{V}\Lambda\rm{V}^T\\ \Lambda=diag(\lambda_1,\lambda_2,...,\lambda_d)为特征值构成的对角矩阵\\ \lambda_1\geq\lambda_2\geq...\geq\lambda_d\\ \rm{V}为特征向量矩阵 B=VΛVTΛ=diag(λ1,λ2,...,λd)为特征值构成的对角矩阵λ1λ2...λdV为特征向量矩阵
      如果特征值中有
      d ∗ d^* d
      个非零特征值,那么我们将得到如下计算Z矩阵的表达式:
      Z = Λ ∗ 1 2 Λ ∗ T ∈ R d ∗ × m ( 10.11 ) Z=\Lambda_*^{\frac{1}{2}}\Lambda_*^T\in R^{d^*\times m}\quad\quad(10.11) Z=Λ21ΛTRd×m(10.11)
      在该式中,矩阵Z的每一列表示一个样本,每一行表示降维后在d’空间内的一个维度,由于d’<=d,因此也就达到了降维的目的。后续的分析中,我们只需要修改d’的值,就可以将原数据样本降维到我们想要的维度了。

      [V A]=eig(B);
      num=3;
      Z=V(:,1:num)*A(1:num,1:num).^(1/2);
      
    • Step5:对降维后的数据进行可视化

      scatter3(z(:,1),z(:,2),z(,3));
      xlabel('dimension 1');
      ylabel('dimension 2');
      zlabel('dimension 3');
      

      为了能够对降维后的数据进行可视化,因此可以选择降到2维或者降到3维。

10.3 主成分分析(PCA)

  • 主成分分析(PCA)是最常用的一种降维方法。
  • 对于正交属性空间中的样本点,如何用一个超平面(直线的高维推广)对所有的样本进行恰当的表达?
  • 应该具有两个性质:
    • 最近重构性:样本点到这个超平面的距离足够近
    • 最大可分性:样本点在这个超平面上的投影能尽可能分开

最近重构性

假定数据样本进行了中心化,即
∑ i x i = 0 \sum_ix_i=0 ixi=0
再假定投影变换后得到的新坐标系为
{ w 1 , w 2 , . . . , w d } w i 是标准正交基向量 ∣ ∣ w i ∣ ∣ 2 = 1 , w i T w j = 0 ( i ≠ j ) \{w_1,w_2,...,w_d\}\\ w_i是标准正交基向量\\ ||w_i||_2=1,w_i^Tw_j=0(i≠j) {w1,w2,...,wd}wi是标准正交基向量∣∣wi2=1,wiTwj=0(i=j)
注:在一个向量空间中,一组向量如果彼此之间正交(即任意两个不同的向量的点积为零),则这组向量称为正交基。当这些正交基向量的长度都为1时,它们被称为标准正交基向量。即,标准正交基向量不仅正交,而且单位化。

若丢弃新坐标系中的部分坐标,即将维度降低到d’<d,则样本点
x i x_i xi
在低维坐标系中的投影是
z i = ( z i 1 ; z i 2 ; . . . ; z i d ′ ) z i j = w j T x i 是 x i 在低维坐标系下第 j 维的坐标 z_i=(z_{i1};z_{i2};...;z_{id'})\\ z_{ij}=w_j^Tx_i是x_i在低维坐标系下第j维的坐标 zi=(zi1;zi2;...;zid)zij=wjTxixi在低维坐标系下第j维的坐标
若基于
z i z_i zi
来重构
x i x_i xi
则会得到
x ^ i = ∑ j = 1 d ′ z i j w j \hat x_i=\sum_{j=1}^{d'}z_{ij}w_j x^i=j=1dzijwj
考虑整个训练集,原样本点
x i x_i xi
与基于投影重构的样本点
x ^ i \hat x_i x^i
之间的距离为
∑ 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 \sum_{i=1}^m\bigg|\bigg|\sum_{j=1}^{d'}z_{ij}w_j-x_i\bigg|\bigg|^2_2=\sum_{i=1}^mz_i^Tz_i-2\sum_{i=1}^mz_i^T\rm{W}^T\it{x_{i}+const} i=1m j=1dzijwjxi 22=i=1mziTzi2i=1mziTWTxi+const

∝ − t r ( W T ( ∑ i = 1 m x i x i T ) W ) ( 10.14 ) ∝-tr\bigg(\rm{W}\it{^T\bigg(\sum_{i=1}^mx_ix_i^T}\bigg)\rm{W}\bigg)\quad (10.14) tr(WT(i=1mxixiT)W)(10.14)

根据最近重构性,式(10.14)应被最小化,考虑到
w j 是标准正交基 ∑ i x i x i T 是协方差矩阵 w_j是标准正交基\\ \sum_ix_ix_i^T是协方差矩阵 wj是标准正交基ixixiT是协方差矩阵

min ⁡ W − t r ( W T X X T W ) s . t . W T W = I ( 10.15 ) \min_{\rm{W}}-tr(\rm{W^TXX^TW})\quad s.t. \rm{W^TW=I}\quad(10.15) Wmintr(WTXXTW)s.t.WTW=I(10.15)
这就是主成分分析的优化目标.

最大可分性

从最大可分性出发,能得到主成分分析的另一种解释.我们知道,样本点
x i x_i xi
在新空间中超平面上的投影是
W T x i \rm{W^T}\it{x_i} WTxi
若所有样本点的投影能尽可能分开,则应该使投影后样本点的方差最大化,如图10.4所示。

在这里插入图片描述

投影后样本点的方差是
∑ i W T x i x i T W \sum_i\rm{W}\it{^Tx_ix_i^T}\rm{W} iWTxixiTW
于是优化目标可写为
max ⁡ W t r ( W T X X T W ) s . t . W T W = I ( 10.16 ) \max_{\rm{W}}\quad tr(\rm{W^TXX^TW})\quad s.t. \rm{W^TW=I}\quad(10.16) Wmaxtr(WTXXTW)s.t.WTW=I(10.16)
显然,式(10.16)与(10.15)等价.

对式(10.15)或(10.16)使用拉格朗日乘子法可得
X X T W = λ W ( 10.17 ) \rm{XX^TW=\lambda W}\quad(10.17) XXTW=λW(10.17)
于是,只需对协方差矩阵
X X T \rm{XX}^T XXT
进行特征值分解,将求得的特征值排序:
λ 1 ≥ λ 2 ≥ . . . ≥ λ d \lambda_1\geq\lambda_2\geq ...\geq\lambda_d λ1λ2...λd
再取前d’个特征值对应的特征向量构成
W = ( w 1 , w 2 , . . . , w d ′ ) \rm{W}=\it{(w_1,w_2,...,w_{d'})} W=(w1,w2,...,wd)
这就是主成分分析的解,PCA算法描述如图10.5所示。

在这里插入图片描述

降维后低维空间的维数d’通常是由用户事先指定,或通过在d’值不同的低维空间中对k近邻分类器(或其他开销较小的学习器)进行交叉验证来选取较好的d’值。对PCA,还可从重构的角度设置一个重构阈值,例如t=95%,然后选取使下式成立的最小d’值:
∑ i = 1 d ′ λ i ∑ i = 1 d λ i ≥ t ( 10.18 ) \frac{\sum_{i=1}^{d'}\lambda_i}{\sum_{i=1}^{d}\lambda_i}\geq t\quad(10.18) i=1dλii=1dλit(10.18)
PCA仅需保留W与样本的均值向量即可通过简单的向量减法和矩阵-向量乘法将新样本投影至低维空间中.显然,低维空间与原始高维空间必有不同,因为对应于最小的d-d’个特征值的特征向量被舍弃了,这是降维导致的结果.但舍弃这部分信息往往是必要的:一方面,舍弃这部分信息之后能使样本的采样密度增大,这正是降维的重要动机;另一方面,当数据受到噪声影响时,最小的特征值所对应的特征向量往往与噪声有关,将它们舍弃能在一定程度上起到去噪的效果.

PCA算法描述

  • 输入:样本集
    D = { x 1 , x 2 , . . . , x m } D=\{x_1,x_2,...,x_m\} D={x1,x2,...,xm}
    和低维样本空间数

  • 过程:

    • 对所有样本进行中心化:
      x i = x i − 1 m ∑ i = 1 m x i x_i=x_i-\frac{1}{m}\sum_{i=1}^mx_i xi=xim1i=1mxi

    • 计算样本的协方差矩阵
      X T X X^TX XTX

    • 对协方差矩阵做特征值分解

    • 取最大的d’个特征值所对应的特征向量
      w 1 , w 2 , . . . , w d ′ w_1,w_2,...,w_{d'} w1,w2,...,wd

  • 输出投影矩阵
    W ∗ = { w 1 , w 2 , . . . , w d ′ } W^*=\{w_1,w_2,...,w_{d'}\} W={w1,w2,...,wd}

10.5 流形学习

  • 什么是流形?
    • 流形是线性子空间(向量子空间)(包含零向量,具有加法和乘法封闭性)的一种非线性推广
    • 拓扑学角度:局部区域线性,与低维欧式空间拓扑同胚
    • 微分几何角度:有重叠图表的光滑过渡
    • 黎曼流形就是以光滑的方式在每一点的切空间上指定了欧氏内积微分流形

在这里插入图片描述

  • 流形的数学定义

    • 设M是一个Hausdorff拓扑空间,若对每一点
      p ∈ M p\in M pM
      都有P的一个开邻域U和
      R d R^d Rd
      的一个开子集同胚,则称M为d维拓扑流形,简称为d维流形

在这里插入图片描述

  • 流形学习的目的

    • 流形学习是一种非线性的维数约简方法
    • 高维观察数据的变化模式本质是由少数几个隐含变量所决定的
      • 如:人脸采样由光线亮度、人与相机的距离、人的头部姿势、人的面部表情等因素决定
    • 从认知心理学的角度,心理学家认为人的认知过程是基于认知流形和拓扑连续性的
  • 数学定义


    • Y ⊂ R d 是一个低维流形 ( 降维后的数据 ) f : Y → R D 是一个光滑嵌入 ( 原始数据 ) Y\subset R^d是一个低维流形(降维后的数据)\\ f:Y→R^D是一个光滑嵌入(原始数据) YRd是一个低维流形(降维后的数据)f:YRD是一个光滑嵌入(原始数据)
      其中 D>d。数据集
      { y i } \{y_i\} {yi}
      是随机生成的,且经过f映射为观察空间的数据
      { x i = f ( y i ) } \{x_i=f(y_i)\} {xi=f(yi)}
      流形学习就是在给定观察样本集
      { x i } \{x_i\} {xi}
      的条件下重构
      f 和 { y i } f和\{y_i\} f{yi}
方法简称所保持的集合属性全局/局部关系计算复杂度
ISOMAP点对测地距离全局非常高
LLE局部线性重构关系局部

10.5.1 等度量映射(Isomap)

  • 保持全局测地距离
    • 测地距离反映数据在流形上的真实距离差异
  • 等距映射
    • 基于线性算法MDS,采用“测地距离”作为数据差异度

在这里插入图片描述

  • Isomap算法流程

    • 1计算每个点的近邻点(用K近邻或ε邻域).

    • 2在样本集上定义一个赋权无向图如果
      X i 和 X j X_i和X_j XiXj
      互为近邻点,则边的权值为
      d X ( i , j ) d_X(i,j) dX(i,j)

    • 3计算图中两点间的最短距离,记所得的距离矩阵为
      D G = { d G ( i , j ) } . D_G=\{d_G(i,j)\}. DG={dG(i,j)}.

    • 4用MDS求低维嵌入坐标


      • S = ( S i j ) = ( D i j 2 ) , H = ( H i j ) = ( δ i j − 1 / N ) , τ ( D ) = − H S H / 2 S=(S_{ij})=(D^2_{ij}),H=(H_{ij})=(\delta_{ij}-1/N),\tau(D)=-HSH/2 S=(Sij)=(Dij2),H=(Hij)=(δij1/N),τ(D)=HSH/2
        低维嵌入是
        τ ( D ) \tau(D) τ(D)
        的第1大到第d大的特征值所对应的特征向量
  • ISOMAP

    • 前提假设
      • 数据所在的低维流形与欧式空间的一个子集整体等距
      • 该欧式空间的子集是一个凸集
    • 思想核心
      • 较近点对之间的测地距离用欧式距离代替
      • 较远点对之间的测地距离用最短路径来逼近(Dijkstra和Floyd算法)
    • 算法特点
      • 适用于学习内部平坦的低维流形
      • 不适于学习有较大内在曲率的流形
      • 计算点对间的最短路径比较耗时

10.5.2 局部线性嵌入(LLE)

  • LLE

    • 显式利用“局部线性”的假设
    • 保持局部邻域几何结构-重构权重
    • 权重对样本集的几何变换具有不变性
    • 前提假设
      • 采样数据所在的低维流形在局部是线性的
      • 每个采样点均可以利用其近邻样本进行线性重构表示
    • 学习目标
      • 低维空间中保持每个邻域中的重构权值不变
      • 在嵌入映射为局部线性的条件下,最小化重构误差
      • x_i最终形式化为特征值分解问题
  • 算法流程

    • 计算每一个点
      x i x_i xi
      的近邻点(用K近邻或ε邻域).

    • 计算权值
      w i j w_{ij} wij
      使得把
      x i x_i xi
      用它的K个近邻点线性表示的误差最小,即通过最小化
      ∣ ∣ x i − w i j x j ∣ ∣ ||x_i-w_{ij}x_j|| ∣∣xiwijxj∣∣
      来求出
      W i j W_{ij} Wij

      min ⁡ ε ( w ) = ∑ i ∣ ∣ x i − ∑ j w i j x i j ∣ ∣ 2 \min \varepsilon(w)=\sum_{i} \bigg|\bigg|x_i-\sum_jw_{ij}x_{ij}\bigg|\bigg|^2 minε(w)=i xijwijxij 2

    • 保持权值
      W i j W_{ij} Wij
      不变,求
      x i x_i xi
      在低维空间的象
      y i y_i yi
      使得低维重构误差最小.
      min ⁡ ϕ ( Y ) = ∑ i ∣ ∣ y i − ∑ j w i j y i j ∣ ∣ 2 \min \phi(Y)=\sum_i\bigg|\bigg|y_i-\sum_jw_{ij}y_{ij}\bigg|\bigg|^2 minϕ(Y)=i yijwijyij 2

  • 优点

    • 算法可以学习任意维的局部线性的低维流形
    • 算法归结为稀疏矩阵特征值计算,计算复杂度相对较小
  • 缺点

    • 算法所学习的流形只能是不闭合的
    • 算法要求样本在流形上是稠密采样的
    • 算法对样本中的噪声邻域参数比较敏感

10.6 度量学习

事实上,对高维数据进行降维的主要目的是希望能够在低维空间中更好的对距离进行度量,那为什么不尝试直接在高维中对数据进行度量呢?这就是度量学习的意义。

  • 相似度度量
    • 机器学习的目的就是让机器具有类似于人类的学习、认识、理解事物的能力。计算机对大量的数据记录进行归纳和总结,发现数据中潜在的规律,给人们的生活带来便利。
    • 对数据记录和总结中常用到聚类算法。聚类算法就是按照对象间的相似性进行分组,因此如何描述对象间相似性是聚类的重要问题。
    • 刻画数据样本点之间的亲疏远近程度主要有以下两类函数:
      • 相似系数函数:两个样本点愈相似,则相似系数值愈接近1;样本点愈不相似,则相似系数值愈接近0。这样就可以使用相似系数值来刻画样本点性质的相似性。
      • 距离函数:可以把每个样本点看作高维空间中的一个点,进而使用某种距离来表示样本点之间的相似性,距离较近的样本点性质较相似,距离较远的样本点则差异较大。

主要相似度算法

欧氏距离

欧氏距离也称欧几里得距离,它是一个通常采用的距离定义,它是在m维空间中两个点之间的真实距离。
d i s t ( X , Y ) = ∑ i = 1 n ( x i − y i ) 2 dist(X,Y)=\sqrt{\sum_{i=1}^n(x_i-y_i)^2} dist(X,Y)=i=1n(xiyi)2
也可以用表示成向量运算的形式:
d 12 = ( a − b ) T ( a − b ) a , b 为列向量 d_{12}= \sqrt{(a-b)^T(a- b)}\\ a,b为列向量 d12=(ab)T(ab) a,b为列向量

标准欧式距离

标准欧式距离:由于特征向量的各分量的量纲不一致(比如说身高和体重),通常需要先对各分量进行标准化,使其与单位无关。假设样本集X的均值为m,标准差为s,那么X的“标准化变量”表示为:
X ∗ = X − m s X^*=\frac{X-m}{s} X=sXm

加权欧式距离

加权欧式距离:在距离计算时,考虑各项具有不同的权重。i和j两点加权距离如下:
d i s t ( X i , Y j ) = ∑ k = 1 n α k ( x i k − y j k ) 2 , n 为特征数量 ∑ i = 1 n α i = 1 dist(X_i,Y_j)=\sum_{k=1}^n\sqrt{\alpha_k(x_{ik}-y_{jk})^2},n为特征数量\\ \sum_{i=1}^n\alpha_i=1 dist(Xi,Yj)=k=1nαk(xikyjk)2 ,n为特征数量i=1nαi=1
也可以用表示成向量运算的形式:
d 12 = ( X − Y ) T W ( X − Y ) X , Y 为列向量 , W 为对角正定矩阵 d_{12}= \sqrt{(X-Y)^TW(X-Y)}\\ X,Y为列向量,W为对角正定矩阵 d12=(XY)TW(XY) X,Y为列向量,W为对角正定矩阵

  • 比如说一个国家奥运金牌榜,可以表示为
    X i = ( x i 1 , x i 2 , x i 3 ) ( 金牌数 , 银牌数 , 铜牌数 ) X_i=(x_{i1},x_{i2},x_{i3})\quad\quad(金牌数,银牌数,铜牌数) Xi=(xi1,xi2,xi3)(金牌数,银牌数,铜牌数)
    如果我们有两点间的欧式距离进行计算,相当于把金、银、铜牌所起的作用等同看待,这显然不合理,如果使用加权欧式进行计算,则两个国家的距离定义如下
    d i s t ( X i , Y j ) = α 1 ( x i 1 − y j 1 ) 2 + α 2 ( x i 2 − y j 2 ) 2 + α 3 ( x i 3 − y j 3 ) 2 dist(X_i,Y_j)=\sqrt{\alpha_1(x_{i1}-y_{j1})^2+\alpha_2(x_{i2}-y_{j2})^2+\alpha_3(x_{i3}-y_{j3})^2} dist(Xi,Yj)=α1(xi1yj1)2+α2(xi2yj2)2+α3(xi3yj3)2
曼哈顿距离

曼哈顿距离:也称为城市街区距离,是一种使用在几何度量空间的几何学用语,用以标明两个点在标准坐标系上的绝对轴距总和:
d i s t ( X , Y ) = ∑ i = 1 n ∣ x i − y i ∣ dist(X,Y)=\sum_{i=1}^n|x_i-y_i| dist(X,Y)=i=1nxiyi

闵可夫斯基距离

闵可夫斯基距离(闵氏距离)不是一种距离,而是一组距离的定义。闵氏距离是欧氏距离的推广,是对多个距离度量公式的概括性的表述。公式如下:
d i s t ( X , Y ) = ( ∑ i = 1 n ∣ x i − y i ∣ p ) 1 p dist(X,Y)=(\sum_{i=1}^n|x_i-y_i|^p)^{\frac{1}{p}} dist(X,Y)=(i=1nxiyip)p1
其中p是一个变参数

  • 当p=1时,就是曼哈顿距离;

  • 当p=2时,就是欧氏距离;

  • 当p趋近无穷时,就是切比雪夫距离。

  • 切比雪夫距离是由一致范数(或称为上确界范数)所衍生的度量,也是超凸度量的一种。在数学中,切比雪夫距离是向量空间中的一种度量,二个点之间的距离定义是其各坐标数值差的最大值。
    d i s t ( X , Y ) = lim ⁡ p → ∞ ( ∑ i = 1 n ∣ x i − y i ∣ p ) 1 p = max ⁡ ∣ x i − y i ∣ dist(X,Y)=\lim_{p→\infty}(\sum_{i=1}^n|x_i-y_i|^p)^{\frac{1}{p}}=\max|x_i-y_i| dist(X,Y)=plim(i=1nxiyip)p1=maxxiyi

    • 例如,X(2,4),Y(1,6)
      d i s t ( X , Y ) = max ⁡ ∣ 2 − 1 ∣ , ∣ 4 − 6 ∣ = 2 dist(X,Y)=\max{|2-1|,|4-6|}=2 dist(X,Y)=max∣21∣,∣46∣=2
马氏距离

马氏距离(由加权欧式距离演变而来):表示数据的协方差距离。它是一种有效的计算两个未知样本集的相似度的方法。与欧式距离不同的是它考虑到各种特性之间的联系,我们举个例子说明一下

  • 在加权欧式距离所讲到的金、银和铜牌的例子中,我们假定奖牌的权重是不同的,金牌肯定更有含金量,那么它的权重也会稍微大一点,但是金、银、铜牌之间又是有关联的,比如铜牌数较少,可能金、银牌的数量也会相对较少
  • 又比如对于一个人的身高体重来说,两者占据一定的权重比例,并且这之间是具有一定关联的

D ( X , Y ) = ( X − Y ) T Σ − 1 ( X − Y ) Σ 为协方差矩阵 D(X,Y)=\sqrt{(X-Y)^T\Sigma^{-1}(X-Y)}\\ \Sigma为协方差矩阵 D(X,Y)=(XY)TΣ1(XY) Σ为协方差矩阵

如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧式距离,如果协方差矩阵为对角阵,则其也可称为正规化的欧氏距离。

汉明距离

汉明距离:两个等长字符串s1与s2之间的汉明距离定义为将其中一个变为另外一个所需要作的最小替换次数。汉明距离就是表示X,Y取值不同的分量数目,只适用分量只取-1或1的情况。
D h ( X , Y ) = 1 2 ( n − ∑ k = 1 n x k ⋅ y k ) D_h(X,Y)=\frac{1}{2}(n-\sum_{k=1}^nx_k\cdot y_k) Dh(X,Y)=21(nk=1nxkyk)
例如字符串“1111”与“1001”之间的汉明距离为
D = 1 2 [ 4 − ( 1 + ( − 1 ) + ( − 1 ) + 1 ) ] = 2 注 : 需要把 0 看成 − 1 进行计算 D=\frac{1}{2}[4-\big(1+(-1)+(-1)+1\big)]=2\\ 注:需要把0看成-1进行计算 D=21[4(1+(1)+(1)+1)]=2:需要把0看成1进行计算

杰卡德相似系数和杰卡德距离
  • 卡德距离:是与杰卡德相似系数相反的概念,杰卡德距离用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度。杰卡德距离可用如下公式表示:
    J ( A , B ) = ∣ A ∩ B ∣ ∣ A ∪ B ∣ J(A,B)=\frac{|A\cap B|}{|A\cup B|} J(A,B)=ABAB

  • 杰卡德相似系数:两个集合A和B的交集元素在A,B的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A, B)表示。杰卡德相似系数是衡量两个集合的相似度一种指标。
    J δ ( A , B ) = 1 − J ( A , B ) = ∣ A ∪ B ∣ − ∣ A ∩ B ∣ ∣ A ∪ B ∣ J_\delta(A,B)=1-J(A,B)=\frac{|A\cup B|-|A\cap B|}{|A\cup B|} Jδ(A,B)=1J(A,B)=ABABAB

余弦相似度

余弦相似度:用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。
cos ⁡ ( θ ) = a ⋅ b ∣ a ∣ ∣ b ∣ \cos(\theta)=\frac{a\cdot b}{|a||b|} cos(θ)=a∣∣bab

cos ⁡ ( θ ) = ∑ k = 1 n x 1 k x 2 k ∑ k = 1 n x 1 k 2 ∑ k = 1 n x 2 k 2 \cos(\theta)=\frac{\sum_{k=1}^nx_{1k}x_{2k}}{\sqrt{\sum_{k=1}^nx_{1k}^2}\sqrt{\sum_{k=1}^nx_{2k}^2}} cos(θ)=k=1nx1k2 k=1nx2k2 k=1nx1kx2k

调整余弦相似度
  • 余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感,因此没法衡量每个维度上数值的差异。需要修正这种不合理性,就出现了调整余弦相似度,即所有维度上的数值都减去一个均值

    用户对内容按5分制进行评分

    • 用户X对内容A、B、C进行评分为(2,2,5)
    • 用户X对内容A、B、D进行评分为(4,5,3)

    这里需要注意的是用户X并没有对内容D进行评分,用户Y并没有对内容E进行评分,等会儿对皮尔森相似度的计算有用

    使用余弦相似度得到的结果
    cos ⁡ ( X , Y ) = 2 × 4 + 2 × 5 2 2 + 2 2 + 5 2 ⋅ 4 2 + 5 2 + 3 2 = 8 + 10 4 + 4 + 25 ⋅ 16 + 25 + 9 = 18 33 ⋅ 50 = 0.443 \cos(X,Y)=\frac{2\times4+2\times5}{\sqrt{2^2+2^2+5^2}\cdot\sqrt{4^2+5^2+3^2}}\\ =\frac{8+10}{\sqrt{4+4+25}\cdot\sqrt{16+25+9}}=\frac{18}{\sqrt{33}\cdot\sqrt{50}}=0.443 cos(X,Y)=22+22+52 42+52+32 2×4+2×5=4+4+25 16+25+9 8+10=33 50 18=0.443
    两者具有一定的相似性。但从评分上看,用户X似乎不太喜欢前两个内容,而Y则比较喜欢。

    此时X的评分均值为3,Y的评分均值为4,用调整余弦相似度计算
    cos ⁡ ( X , Y ) = ( 2 − 3 ) ⋅ ( 4 − 4 ) + ( 2 − 3 ) ⋅ ( 5 − 4 ) ( 2 − 3 ) 2 + ( 2 − 3 ) 2 + ( 5 − 3 ) 2 ⋅ ( 4 − 4 ) 2 + ( 5 − 4 ) 2 + ( 3 − 4 ) 2 = − 0.288 \cos(X,Y)=\frac{(2-3)\cdot(4-4)+(2-3)\cdot(5-4)}{\sqrt{(2-3)^2+(2-3)^2+(5-3)^2}\cdot\sqrt{(4-4)^2+(5-4)^2+(3-4)^2}}\\ =-0.288 cos(X,Y)=(23)2+(23)2+(53)2 (44)2+(54)2+(34)2 (23)(44)+(23)(54)=0.288
    相似度为负值并且差异不小,但显然更加符合现实。

皮尔森相似度

皮尔森相似度,和调整余弦相似度类似,只是计算在分母中有所调整,调整为两个个体所共同的集合,即
cos ⁡ ( X , Y ) = ( 2 − 3 ) ⋅ ( 4 − 4 ) + ( 2 − 3 ) ⋅ ( 5 − 4 ) ( 2 − 3 ) 2 + ( 2 − 3 ) 2 ⋅ ( 4 − 4 ) 2 + ( 5 − 4 ) 2 = − 0.707 \cos(X,Y)=\frac{(2-3)\cdot(4-4)+(2-3)\cdot(5-4)}{\sqrt{(2-3)^2+(2-3)^2}\cdot\sqrt{(4-4)^2+(5-4)^2}}\\ =-0.707 cos(X,Y)=(23)2+(23)2 (44)2+(54)2 (23)(44)+(23)(54)=0.707

斯皮尔曼相关性

斯皮尔曼相关性可以理解为是排列后用户喜好值之间的Pearson相关度。皮尔曼相关度的计算舍弃了一些重要信息,即真实的评分值。但它保留了用户喜好值的本质特性——排序,它是建立在排序(等级)的基础上计算的。

描述film1的排名film2的排名film3的排名
User1User1对film1的评分为7
对film2的评分为8
对film3的评分为9
321
User2User1对film1的评分为9
对film2的评分为4
对film3的评分为3
123
User3User1对film1的评分为7
对film2和film3无评分
1

现有的大部分算法对图像进行特征提取后化为向量的表达形式,其本质是把每一幅用于训练的图像通过某种映射到欧氏空间的一个点,并利用欧氏空间的良好性质在其中进行学习器的训练。但定义图像特征之间的欧氏距离未必能很好反映出样本之间的相似。通过训练样本寻找一种能够合理描述当前样本相似度的距离度量能够大大提高学习器的性能。
度量学习是机器学习的一个重要分支,通过有标记样本或结合未标记样本,寻找一个能够在给定指标下最恰当刻画样本相似度的距离矩阵或距离函数。

近年来,距离度量学习已成为智能信息处理方面的一个研究热点,研究表明,距离度量学习能够大大提升了图像分类、图像匹配、及图像检索等工作的性能。

近邻成分分析(NCA)

需要用到上述提到的马氏距离(具体看上面)
d i s t 2 ( x i , x j ) = ( x i − x j ) T M ( x i − x j ) = ∣ ∣ x i − x j ∣ ∣ M 2 dist^2(x_i,x_j)=(x_i-x_j)^TM(x_i-x_j)=||x_i-x_j||^2_M\\ dist2(xi,xj)=(xixj)TM(xixj)=∣∣xixjM2
也对原本的K近邻算法(KNN)进行调整,对于样本点
x i x_i xi
对它的领域中样本点
x j x_j xj
进行概率投票
p i j = exp ⁡ ( − ∣ ∣ x i − x j ∣ ∣ M 2 ) ∑ l exp ⁡ ( − ∣ ∣ x i − x l ∣ ∣ M 2 ) x i 旁有 l 个邻居 p_{ij}=\frac{\exp(-||x_i-x_j||^2_M)}{\sum_l\exp(-||x_i-x_l||^2_M)}\\ x_i旁有l个邻居 pij=lexp(∣∣xixlM2)exp(∣∣xixjM2)xi旁有l个邻居
能对样本点进行正确分类的概率为
p i = ∑ j ∈ Ω i p i j Ω i 表示 x i 的邻域中 , 与 x i 相同类别的样本 p_i=\sum_{j\in \Omega_i}p_{ij}\\ \Omega_i表示x_i的邻域中,与x_i相同类别的样本 pi=jΩipijΩi表示xi的邻域中,xi相同类别的样本
在整个样本集上的正确率
∑ i = 1 m p i = ∑ i = 1 m ∑ j ∈ Ω i p i j = ∑ i = 1 m ∑ j ∈ Ω i exp ⁡ ( − ∣ ∣ x i − x j ∣ ∣ M 2 ) ∑ l exp ⁡ ( − ∣ ∣ x i − x l ∣ ∣ M 2 ) \sum_{i=1}^mp_i=\sum_{i=1}^m\sum_{j\in \Omega_i}p_{ij}=\sum_{i=1}^m\sum_{j\in \Omega_i}\frac{\exp(-||x_i-x_j||^2_M)}{\sum_l\exp(-||x_i-x_l||^2_M)} i=1mpi=i=1mjΩipij=i=1mjΩilexp(∣∣xixlM2)exp(∣∣xixjM2)
那么错误率为
1 − ∑ i = 1 m ∑ j ∈ Ω i exp ⁡ ( − ∣ ∣ x i − x j ∣ ∣ M 2 ) ∑ l exp ⁡ ( − ∣ ∣ x i − x l ∣ ∣ M 2 ) 1-\sum_{i=1}^m\sum_{j\in \Omega_i}\frac{\exp(-||x_i-x_j||^2_M)}{\sum_l\exp(-||x_i-x_l||^2_M)} 1i=1mjΩilexp(∣∣xixlM2)exp(∣∣xixjM2)
优化目标就是要使错误率尽可能小。

10.7 PCA算法实现

import numpy as np
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
def pca(dataMat,topNfeat=9999999):
    # 计算均值(按列)
    meanVals=np.mean(dataMat,axis=0)
    # 去除平均值,实现数据中心化
    meanRemoved=dataMat-meanVals
    # 计算协方差矩阵
    covMat=np. cov(meanRemoved,rowvar=0)
    # 计算矩阵的特征值和特征向量
    eigVals,eigVects=np.linalg.eig(np.mat(covMat))
    eigValInd=np.argsort(eigVals)
    # 从小到大对N个值排序
    eigValInd=eigValInd[:-(topNfeat+1):-1]
    recEigVects=eigVects[:,eigValInd]
    # 将数据转换到新空问
    lowDDataMat=meanRemoved*recEigVects
    reconMat=(lowDDataMat*recEigVects.T)+meanVals
    return lowDDataMat,reconMat
X=load_iris().data[:,:]
lowDDataMat,reconMat=pca(X,topNfeat=2)
print(lowDDataMat)
print(reconMat)
plt.scatter(lowDDataMat[:,0].tolist(),lowDDataMat[:,1].tolist(),c='r',marker='o')

绘图结果如下,我们通过计算协方差矩阵、特征值和特征向量,把原本四维的数据集转换成了二维数据集

在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值