转:http://hi.baidu.com/chb_seaok/item/faa54786a3ddd1d7d1f8cd0b
在常见的降维方法中,PCA和LDA是最为常用的两种降维方法。PCA是一种无监督方法,它关注的是将数据沿着方差最大化的方向映射。而LDA是一种监督方法,它寻找映射轴(类之间耦合度低,类内的聚合度高),两种方法估计的都是全局的统计信息(均值和协方差)。
manifold learning是最近比较热门的领域,它是一种非线性降维技术,主要研究的是高维数据的潜在的流行结构。首先我们来看下为什么要进行流行学习,先看经典图:
图1
数据在高维空间空间中,什么事合理的距离度量(两个点之间的距离)成了关键,如图1,如果我们用欧式距离分别来度量图中红点与蓝点和黄点的距离的话,红点与蓝点的距离应该较红点与黄点距离远。事实上是否如此的,该距离是否真实的反应了数据之间的距离关系呢?想象力丰富的同学可能可以看出来,这些数据像一条丝带,把他在一个平面内展开,再去度量红点与蓝点和黄点的距离是否更为合理些?
ISOMAP是manifold learning的最为常见的一种方法,它主要的思想是用n维的欧式空间近似于一个N维的流行(n<<N).
第一步:构建点的邻居
图2
用KNN最近邻居算法对高维数据构建一个稀疏图,如果是该点邻居,则添加一条边,两点之间的距离则为欧式距离。
第二步:根据构建的图计算点与点之间最短距离
注:我们用点与点之间最短距离近似于geodesic距离(根据weak bound和asymptotic convergence定理)
计算最短路用Dijkstra或者Floyd算法计算,得到一个距离矩阵M,(表示的是点与点之间的距离)
图3
第三步:高维数据映射到低维空间
建立一个损失函数:
,
注:DG代表原图中数据,DY代表映射后数据
为了使E尽量小,解决的方法类似于PCA,进行矩阵分解,取前P个特征根,也就是将数据映射到P维空间。
PCA分解的是协方差矩阵,而ISOMAP也要进行类似的处理。在第二步中我们计算出距离矩阵M,对M进行算子操作,
= (1)
(2)
注:N为样本数据点个数,为克罗内克函数.
该步的算子操作类似于PCA中的减去均值操作,然后进行矩阵分解,取前P个特征根。
至此,ISOMAP完成了高维数据的非线性降维,降维后的数据极大的保持全局的geodesic距离信息。