流形学习
数据降维问题
在很多应用中,数据的维数会很高。以图像数据为例,我们要识别32x32的手写数字图像,如果将像素按行或者列拼接起来形成向量,这个向量的维数是1024。高维的数据不仅给机器学习算法带来挑战,而且导致计算量大,此外还会面临维数灾难的问题(这一问题可以直观的理解成特征向量维数越高,机器学习算法的精度反而会降低)。人所能直观看到和理解的空间最多是3维的,为了数据的可视化,我们也需要将数据投影到低维空间中,因此就需要有数据降维这种算法来完成此任务。
例如,下图是将0-9这10个手写数字投影到3维空间中后的结果。从图中我们可以清晰的看到这些手写数字在3维空间中的分布,每一个类一般聚集在某一区域内。例如7位于空间的左上角,而6则位于右下角。
在机器学习算法中,数据降维算法是一个大家族,既有有监督学习的版本,也有无监督学习的版本;既有线性的降维算法,也有非线性的降维算法。
最经典的数据降维算法要数PCA
(主成分分析),这是一种线性降维算法
,而且是无监督
的,它通过线性变换将样本投影到低维空间中.
但是当数据是非线性的时候,我们常常使用非线性降维技术,即使用一个非线性的映射函数将输入向量x映射成一个更低维的向量y。
问题的关键是这个非线性映射函数如何得到,一般来说,它要使得数据降维之后保持之前的某些结构信息。非线性降维算法的典型代表有核PCA(KPCA,核主成分分析),神经网络(如自动编码器),流形学习等。
什么是流形?
流形(manifold)是几何中的一个概念,它是高维空间中的几何结构,即空间中的点构成的集合。可以简单的将流形理解成二维空间的曲线,三维空间的曲面在更高维空间的推广。
2维空间中的曲线,3维空间中的曲线可以看做是2维和3维空间中的1维流形,因为曲线是1维的。而3维空间中的曲面可以看做是2维的流形,因为曲面是2维的。n维空间中的m维流形就是具有m维几何形状的一个子集,在这里,m小于n。
什么是流形学习?
很多应用问题的数据在高维空间中的分布具有某种几何形状,即集中在某个低维的流形附近。对于前面所说的32x32的手写数字图像,数字7的图像在1024维空间中应该聚集在某一个形状的几何体周围(如带状区域,球面),其他的类别也是如此。
流形学习(manifold learning)假设数据在高维空间的分布位于某一更低维的流形上
,基于这个假设来进行数据的分析。对于降维,要保证降维之后的数据同样满足与高维空间流形有关的几何约束关系。除此之外,流形学习还可以用实现聚类,分类以及回归算法。
假设有一个N维空间中的流形M,即M为N维欧氏空间的一个真子集:
M
⊂
R
N
M\subset \mathbb{R}^N
M⊂RN,流形学习降维算法要实现的是如下映射:
M
→
R
n
,
n
<
N
M\rightarrow \mathbb{R}^n , n<N
M→Rn,n<N。即将N维空间中流形M上的点映射为n维空间中的点
⭐。下面介绍几种典型的流形降维算法,包括局部线性映射,拉普拉斯特征映射,局部保持投影,等距映射。
局部线性嵌入
局部线性嵌入(LLE)的核心思想是每个样本点都可以由与它相邻的多个点的线性组合来近似重构
,这相当于用分段的线性面片近似代替复杂的几何形状,样本投影到低维空间之后要保持这种线性重构关系,即有相同的重构系数。
假设数据集由l个D维向量
x
i
x_i
xi组成,它们分布在D维空间中的一个流形附近。每个数据点和它的邻居位于或者接近于流形的一个局部线性片段
(平面,体现了线性,类似于微积分中的以直代曲的思想)上,即可以用邻居点的线性组合来重构,组合系数刻画了局部面片的几何特性:
x
i
≈
∑
j
w
i
j
x
j
x_i\approx \sum_jw_{ij}x_j
xi≈∑jwijxj.权重
w
i
j
w_{ij}
wij为第j个数据点对第i个点的组合权重.
这些点的线性组合被用来近似重构数据点i。权重系数通过最小化下面的重构误差确定:
min
w
i
j
∑
i
=
1
l
∥
x
i
−
∑
j
=
1
l
w
i
j
x
j
∥
2
\min_{w_{ij}}\sum^l_{i=1}\Vert x_i-\sum^l_{j=1}w_{ij}x_j\Vert^2
wijmini=1∑l∥xi−j=1∑lwijxj∥2
在这里还加上了两个约束条件:每个点只由它的邻居来重构
,如果
x
j
x_j
xj不在
x
i
x_i
xi的邻居集合里则权重值为0,这体现了局部性
。另外限定权重矩阵的每一行元素之和为1,即:
∑
j
w
i
j
=
1
\sum_jw_{ij}=1
∑jwij=1.
这是一个带约束的优化问题,求解该问题可以得到权重系数。这一问题和主成分分析要求解的问题类似。可以证明,这个权重值对平移、旋转、缩放等几何变换具有不变性。
假设算法将向量从D维空间的x映射为d维空间的y。每个点在d维空间中的坐标由下面的最优化问题确定:
min
y
i
∑
i
=
1
l
∥
y
i
−
∑
j
=
1
l
w
i
j
y
j
∥
2
\min_{y_i}\sum^l_{i=1}\Vert y_i-\sum^l_{j=1}w_{ij}y_j \Vert ^2
yimini=1∑l∥yi−j=1∑lwijyj∥2
这里的权重和上一个优化问题的值相同,在前面已经得到。优化的目标是
y
i
y_i
yi,这个优化问题等价于求解稀疏矩阵的特征值问题。得到y之后,即完成了从D维空间到d维空间的非线性降维。下面是整个过程的示意图:
拉普拉斯特征映射
拉普拉斯特征映射(LE)是基于图论的方法。它从样本点构造带权重的图
,然后计算图的拉普拉斯矩
,对该矩阵进行特征值分解得到投影变换矩阵。
设W为一个图的邻接矩阵,D为一个对角矩阵,其主对角线元素为图中每个顶点带权重的度,则拉普拉斯矩阵定义为 L = D − W L=D-W L=D−W
无向图的拉普拉斯矩阵是对称矩阵,另外可以证明它是半正定矩阵,因此所有特征值为非负实数。降维变换通过对拉普拉斯矩阵进行特征值分解得到.
拉普拉斯矩阵进行数据降维的具体做法
假设有一批样本点 x 1 , . . . , x k x_1,...,x_k x1,...,xk,它们是 R l R^l Rl空间的向量,降维的目标就是将它们变换为更低维的 R m R^m Rm空间中的向量 y 1 , . . . , y k y_1,...,y_k y1,...,yk,其中 m < < l m<<l m<<l。这里假设 x 1 , . . . x k ∈ M x_1,...x_k\in M x1,...xk∈M,M为嵌入 R l R^l Rl空间中的一个流形。
算法为样本点构造加权图
,图的节点是每一个样本点,边为每个节点与它的邻居节点之间的相似度
,每个节点只和它的邻居有连接关系。
第一步
算法的第一步是构造图的邻接关系。如果样本点 x i x_i xi和样本点 x j x_j xj的距离很近,则为图的节点i和节点j建立一条边。
第二步
判断两个样本点是否解接近的方法有两种。
第一种
第一种是计算二者的欧氏距离
,如果距离小于某一值
ε
\varepsilon
ε则认为两个样本很接近:
∥
x
i
−
x
j
∥
2
<
ε
\Vert x_i-x_j \Vert^2<\varepsilon
∥xi−xj∥2<ε.其中
ε
\varepsilon
ε是一个人工设定的阈值。
第二种
第二步是计算边的权重,在这里也有两种选择。
第一种方法为如果节点i和节点j是联通的,则它们之间的边的权重为:
w
i
j
=
exp
(
−
∥
x
i
−
x
j
∥
2
t
)
w_{ij}=\exp(-\frac{\Vert x_i-x_j \Vert^2}{t})
wij=exp(−t∥xi−xj∥2)
否则权重为
w
i
j
=
0
w_{ij}=0
wij=0。其中t是一个人为设定的大于0的实数。
第二种方法为如果节点i与节点j是联通的则权重为1,否则为0.
第三步
特征映射。假设构造的图是联通的,即任何两个节点之间都有路径可达,如果不联通,则算法分别作用于每个联通分量上。根据前面构造的图计算它的拉普拉斯矩阵,然后求解如下广义特征值和特征向量问题: L f = λ D f Lf=\lambda Df Lf=λDf
由于是实对称矩阵半正定矩阵,因此特征值非负。假设 f 0 , . . . , f k − 1 f_0,...,f_{k-1} f0,...,fk−1是这个广义特征值问题的解,它们按照特征值的大小升序排列,即: 0 = λ 0 ≤ . . . ≤ λ k − 1 0=\lambda_0\leq...\leq\lambda_{k-1} 0=λ0≤...≤λk−1
去掉值为0的特征值 λ 0 \lambda_0 λ0,用剩下部分特征向量为行来构造投影矩阵,将向量投影到以它们为基的空间中。下图是拉普拉斯特征映射对三维数据进行降维的一个例子:
上图中左侧为三维空间中的样本分布,右图为降维后的结果。这种变换起到的效果大致上相当于把三维空间中的曲面拉平之后铺到二维平面上。
局部保持投影
局部保持投影(LPP)思路和拉普拉斯特征映射类似,也是一种基于图论的方法。
假设有样本集 x 1 , . . . , x m x_1,...,x_m x1,...,xm,它们是 R n R^n Rn空间中的向量,这里的目标是寻找一个变换矩阵A,将这些样本点映射到更低维的 R l R^l Rl空间,得到向量 y 1 , . . . , y m y_1,...,y_m y1,...,ym,使得 y i y_i yi能够代表 x i x_i xi: y i = A T x i y_i=A^Tx_i yi=ATxi.假设 x 1 , . . . x m ∈ M x_1,...x_m\in M x1,...xm∈M其中M是 R l R^l Rl空间中的一个流形。
第一步
根据样本构造图,这和拉普拉斯特征映射的做法相同,在这里不再重复介绍。
第二步
特征映射,计算广义特征向量问题: X L X T a = λ X D X T a XLX^Ta=\lambda XDX^Ta XLXTa=λXDXTa
矩阵L和D的定义与计算方式和上一节相同,矩阵X是将样本按列排列形成的。假设上面广义特征向量问题的解为 a 0 , . . . , a l − 1 a_0,...,a_{l-1} a0,...,al−1,它们对应的特征值满足 λ 0 < . . . < λ l − 1 \lambda_0<...<\lambda_{l-1} λ0<...<λl−1.要寻找的降维变换矩阵为: x i → y i = A T x i , A = ( a 0 , a 1 , . . . a l − 1 ) x_i\rightarrow y_i =A^Tx_i,A=(a_0,a_1,...a_{l-1}) xi→yi=ATxi,A=(a0,a1,...al−1)
这样 y i y_i yi是一个l维的向量,A是一个nxl的矩阵。对向量左乘矩阵Ay_i的转置即可完成数据的降维。