近邻法要求样本点比较密集。给定测试样本点 ,理论上希望在 附近距离 范围内总能找到一个训练样本 ,其中 是个充分小的正数。即:要求训练样本的采样密度足够大,也称作“密采样”。
假设 , 且假设样本点只有一个特征,且该特征归一化后范围是 [0,1]
,则需要 1000 个样本点平均分布在 [0,1]
之间。
此时任何测试样本在其附近 0.001 距离范围内总能找到一个训练样本。
假设 , 且假设样本点只有十个特征,且该特征归一化后范围是 [0,1]
,则需要 个样本点平均分布[0,1]
之间。
此时任何测试样本在其附近 0.001 距离范围内总能找到一个训练样本。
现实应用中特征维度经常成千上万,要满足密采样所需的样本数目是个天文数字。
另外许多学习方法都涉及距离计算,而高维空间会给距离计算带来很大的麻烦(高维空间中计算内积都麻烦)。
在高维情形下出现的数据样本稀疏、距离计算困难等问题是所有机器学习方法共同面临的严重障碍,称作“维度灾难”(curse of dimensionality
)。
缓解维度灾难的一个重要途径是降维(dimension reduction
)。
降维之所以有效的原因是:人们观测或者收集到的数据样本虽然是高维的,但是与学习任务密切相关的也许仅仅是某个低维分布,即高维空间中的一个低维“嵌入”。
常见的降维方法:
Linear Discriminant Analysis:LDA
。PCA
。对于降维效果的评估,通常是比较降维前后学习器的性能。如果性能有所提高,则认为降维起了作用。
也可以将维数降至二维或者三维,然后通过可视化技术来直观地判断降维效果。
对于常见的降维算法,无论是PCA
还是流形学习,都是基于距离来计算重构误差。此时建议对特征进行标准化,因为距离的计算依赖于特征的量纲。如身高特征:
m
量纲,则取值范围通常在1~2
之间。cm
量纲,则取值范围通常在100~200
之间。采用不同的量纲会导致不同的重构误差。
Principal Component Analysis:PCA
是最常用的一种降维方法。给定数据集 ,其中 。假定样本经过了中心化,即:
假设坐标变换矩阵为 ,经过变换之后样本 的坐标为: 。其中 , 。
令 ,它表示样本 降低到 维度。令 ,则有: 。
根据坐标变换矩阵的性质,有:
对数据集 中的样本 ,降维后的数据为 。令:
即 的第 行就是样本 , 的第 行就是降维后的数据 。
则根据 ,有 :
因此降维的物理意义为:通过线性组合原始特征,从而去掉一些冗余的或者不重要的特征、保留重要的特征。
考虑对 进行重构,重构之后的样本为: 。
对整个数据集 所有重建样本与原始样本的误差为:
根据定义有:
由于 是标量,所以有: 。
由于标量的转置等于它本身,所以有: 。
则有:
根据 的定义,可以证明( 为矩阵的Frobenius
范数):
证明:
则有:
将最后的下标从 替换为 即可得证。
PCA
降维要求重构误差最小。现在求解最优化问题:
因为矩阵及其转置的迹相等,因此 。
由于可以在 中调整矩阵的顺序,则 。
考虑到:
代入上式有: 。
于是有:
由于 与 无关,因此:
调整矩阵顺序,则有: 。其约束条件为: 。
PCA
最优化问题需要求解就是 的特征值。
PCA
算法:
输入:
输出:投影矩阵 。
算法步骤:
通常低维空间维数 的选取有两种方法:
通过交叉验证法选取较好的 。“比较好”指的是在降维后的学习器的性能比较好。
从算法原理的角度设置一个阈值,比如 ,然后选取使得下式成立的最小的 的值:
其中 从大到小排列。
从物理意义上看: 给定协方差矩阵 ,通过坐标变换将其对角化为矩阵:
这相当于在新的坐标系中:
即:数据在每个维度上尽可能分散,且任意两个维度之间不相关。
降维的过程就是寻找这样的一个坐标变换,也就是坐标变换矩阵 。
由于协方差矩阵 是对称矩阵,根据实对称矩阵的性质,这样的坐标变换矩阵一定存在。
PCA
算法中,低维空间与高维空间必然不相同。因为末尾 个最小的特征值对应的特征向量被抛弃了,这就是降维导致的结果。
PCA
降低了输入数据的维度同时保留了主要信息/能量,但是这个主要信息只是针对训练集的,而且这个主要信息未必是重要信息。
有可能舍弃了一些看似无用的信息,但是这些看似无用的信息恰好是重要信息,只是在训练集上没有很大的表现,所以PCA
也可能加剧了过拟合。
PCA
中训练样本越多越好。
如果训练样本太少,则训练集很有可能“偶然”近似落在同一个平面上。
极端情况下,如果样本数量小于目标维度,比如样本数量为 100,目标维度为 1000 维。则这 100个样本总可以构成一个 1000 维的平面,且这样的平面有无穷多个。此时如果进行PCA
降维,则前几个特征值 占比非常大。
但是如果将样本数量扩充为 10000 ,则这些样本构成一个 1000 维的平面的巧合就几乎很难成立。此时如果进行PCA
降维,则前几个特征值 占比就会降低。
本质上是因为 决定了协方差矩阵 的秩的上界。
当 较小时, 也会很小,导致大量的特征值 为 0 。
PCA
不仅将数据压缩到低维,它也使得降维之后的数据各特征相互独立。
注意:PCA
推导过程中,并没有要求数据中心化;但是在推导协方差矩阵时,要求数据中心化。此时:
其中:
对于训练集、验证集、测试集,当对训练集进行PCA
降维时,也需要对验证集、测试集执行同样的降维。
注意:对验证集、测试集执行中心化操作时,中心向量必须从训练集计算而来。不能使用验证集的中心向量,也不能用测试集的中心向量。
PCA
降维的准则有两个:
可以证明,最近重构性就等价于最大可分性。证明如下:
对于样本点 , 它在降维后空间中的投影是 。 则有: 。
由于样本数据进行了中心化,则投影后样本点的方差是:
根据 的定义,有: 。则样本点的方差最大的优化目标可写作:
这就是前面最近重构性推导的结果。
LDA
也可以用于降维。对于2维空间降低到1维直线的情况下,它设法将样例投影到某一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离。
LDA
考虑的是:向类别区分最大的方向投影。如下图中的绿色投影直线。PCA
考虑的是:向方差最大的方向投影。如下图中的紫色投影直线。因此LDA
降维对于类别的区分效果要好的多。
酉矩阵:若 阶矩阵满足 ,则它是酉矩阵。其中 为 的共轭转置。
为酉矩阵的充要条件是: 。
奇异值分解:设 为 阶矩阵,且 ,则存在 阶酉矩阵 和 阶酉矩阵 ,使得:
其中
称作矩阵 的奇异值。
根据酉矩阵的性质, ,则有:
则有 , 其中 是个 阶对角矩阵:
由数据集 中样本构成的 为实矩阵,因此有 。另外考虑到 为实对称矩阵,因此 也是实矩阵,因此 。 则有:
根据 ,则有: 。
根据 是个对角矩阵的性质,有: ,则有: 。
则 就是的 特征值, 其对应的单位特征向量组成正交矩阵 。
因此SVD
奇异值分解等价于PCA
主成分分析,核心都是求解 的特征值以及对应的单位特征向量。
PCA
方法假设从高维空间到低维空间的映射是线性的,但是在不少现实任务中可能需要非线性映射才能找到合适的低维空间来降维。
非线性降维的一种常用方法是基于核技巧对线性降维方法进行核化kernelized
, 如核主成分分析Kernelized PCA:KPCA
,它是对PCA
的一种推广。
假定原始特征空间中的样本点 通过映射 映射到高维特征空间的坐标为 ,即 。且假
设高维特征空间为 维的,即: 。假定要将高维特征空间中的数据投影到低维空间中,投影矩阵为 为 维矩阵。
根据 PCA
推导的结果,求解方程: 。其中 为 维矩阵。
于是有: 。
通常并不清楚 的解析表达式,因此并不会直接得到 ,所以无法直接求解方程: 。
于是引入核函数: 。
定义核矩阵 :
则有: 。
定义 ,则 为 维行向量 。定义: 为 维矩阵
则有:
将 代入 ,有: 。
两边同时左乘以 ,再代入 有: 。
通常会要求核矩阵可逆,上式两边同时左乘以 ,则有: 。
同样该问题也是一个特征值分解问题,取 最大的 个特征值对应的特征向量组成 即可。
对于新样本 , 其投影后第 维的坐标为:
其中 为行向量 的第 个分量。
可以看到:为了获取投影后的坐标, KPCA
需要对所有样本求和,因此它的计算开销较大。
流形学习manifold learning
是一类借鉴了拓扑流形概念的降维方法。
流形是在局部和欧氏空间同胚的空间,它在局部具有欧氏空间的性质,能用欧氏距离进行距离计算。
如果低维流形嵌入到高维空间中,则数据样本在高维空间的分布虽然看起来非常复杂,但是在局部上仍然具有欧氏空间的性质。
当维数被降低至二维或者三维时,能对数据进行可视化展示,因此流形学习也可用于可视化。
流形学习若想取得很好的效果,则必须对邻域保持样本密采样,但这恰恰是高维情形下面临的重大障碍。因此流形学习方法在实践中的降维性能往往没有预期的好。
流形学习对于噪音数据非常敏感。噪音数据可能出现在两个区域连接处:
多维缩放Multiple Dimensional Scaling:MDS
要求原始空间中样本之间的距离在低维空间中得到保持。
假设 个样本在原始空间中的距离矩阵为 :
其中 为样本 到样本 的距离。
假设原始样本是在 维空间,目标是获取样本在 维空间且欧氏距离保持不变,其中满足 。
假设样本集在原空间的表示为 ,样本集在降维后空间的表示为 。
所求的正是 矩阵,同时也不知道 。
很明显:并不是所有的低维空间都满足线性映射之后,样本点之间的欧氏距离保持不变。
令 ,即 :
其中 为降维后样本的内积。
则根据降维前后样本的欧氏距离保持不变有:
假设降维后的样本集 被中心化,即 ,则矩阵 的每行之和均为零,每列之和均为零。即:
于是有:
令:
代入 ,有:
右式根据 给出了 ,因此可以根据原始空间中的距离矩阵 求出在降维后空间的内积矩阵 。
现在的问题是已知内积矩阵 ,如何求得矩阵 。
对矩阵 做特征值分解,设 ,其中
为特征值构成的对角矩阵, , 为特征向量矩阵。
假定特征值中有 个非零特征值,它们构成对角矩阵 。令 为对应的特征向量矩阵,则 。
此时有 , 。
在现实应用中为了有效降维,往往仅需要降维后的距离与原始空间中的距离尽可能相等,而不必严格相等。
此时可以取 个最大特征值构成对角矩阵 。令 表示对应的特征向量矩阵,则 。
多维缩放MDS
算法:
输入:
输出:样本集在低维空间中的矩阵 。
算法步骤:
根据下列式子计算 :
根据下式计算矩阵 : 。
对矩阵 进行特征值分解。
取 为 个最大特征值所构成的对角矩阵, 表示对应的特征向量矩阵, 计算: 。
等度量映射 Isometric Mapping:Isomap
的基本观点是:低维流形嵌入到高维空间后,直接在高维空间中计算直线距离具有误导性。因为在高维空间中的直线距离在低维嵌入流形上是不可达的。
低维嵌入流形上,两点之间的距离是“测地线”geodesic
距离。
计算测地线距离的方法是:利用流形在局部上与欧氏空间同胚这个性质,对每个点基于欧氏距离找出它在低维流形上的近邻点, 然后就能建立一个近邻连接图。
于是计算两点之间测地线距离的问题转变为计算近邻连接图上两点之间的最短路径问题(可以通过著名的Dijkstra
算法或者Floyd
算法)。
在得到任意两点的距离之后,就可以通过MDS
算法来获得样本点在低维空间中的坐标。
Isomap
算法:
输入:
输出:样本集在低维空间中的矩阵 。
算法步骤:
MDS
算法,获得样本集在低维空间中的矩阵 。Isomap
算法有个很大的问题:对于新样本,如何将其映射到低维空间?
常用的方法是:
这仅仅是一个权宜之计,但是目前并没有更好的办法。如果将新样本添加到样本集中,重新调用Isomap
算法,则会得到一个新的低维空间。
Isomap
算法)。对于近邻图的构建有两种常用方案:
这两种方案都有不足:
与Isomap
试图保持邻域内样本之间的距离不同,局部线性嵌入Locally Linear Embedding:LLE
试图保持邻域内样本之间的线性关系。
这种线性保持在二维空间中就是保持共线性,三维空间中就是保持共面性。
假定样本点 的坐标能够通过它的邻域样本 进行线性组合而重构出来,即: 。LLE
算法希望这种关系在低维空间中得到保持。
LLE
首先为每个样本 找到其近邻点下标集合 , 然后计算基于 中的样本点对 进行线性重构的系数 。
定义样本集重构误差为( 为 的分量):
目标是样本集重构误差最小,即:
这样的解有无数个,对权重增加约束,进行归一化处理。即:
现在就是求解最优化问题:
该最优化问题有解析解。令 ,则可以解出:
其中:
求出了线性重构的系数 之后, LLE
在低维空间中保持 不变。
设 对应的低维坐标 ,已知线性重构的系数 ,定义样本集在低维空间中重构误差为:
现在的问题是要求出 ,从而使得上式最小。即求解:
令 ,其中 为低维空间的维数( 为原始样本所在的高维空间的维数)。令
定义 ,于是最优化问题可重写为: 。
该最优化问题有无数个解。添加约束 ,于是最优化问题为:
该最优化问题可以通过特征值分解求解:选取 最小的 个特征值对应的特征向量组成的矩阵即为 。
LLE
中出现了两个重构误差。
LLE
算法:
输入:
输出:样本集在低维空间中的矩阵 。
算法步骤:
对于样本集中的每个点 ,执行下列操作:
确定 的 近邻,获得其近邻下标集合 。
对于 , 根据下式计算 :
对于 ,
根据 构建矩阵 。
计算 。
对 进行特征值分解,取其最小的 个特征值对应的特征向量,即得到样本集在低维空间中的矩阵 。
在机器学习中对高维数据进行降维的主要目的是:希望找出一个合适的低维空间,在这个低维空间中进行学习能比原始空间性能更好。
每个空间对应了在样本属性上定义的一个距离度量。寻找合适的空间,本质上就是在寻找一个合适的距离度量。
度量学习metric learning
的思想就是:尝试直接学习出一个合适的距离度量。
推广欧氏距离:对于两个 维样本 ,假定不同的属性的重要性不同,因此引入了权重:
其中 表示 在第 维上的距离, 第 维距离的权重。
定义对角矩阵 为:
则 。
上式中的权重矩阵 可以通过学习确定。
前述假设权重矩阵 是对角矩阵,这意味着坐标轴是正交的,即属性之间无关。
现实任务中可能会发生属性相关的情况,此时对应的坐标轴不再正交。于是可以将 替换成一个普通的半正定对称矩阵 ,此时就得到了马氏距离 Mahalanobis distance
:
其中的矩阵 也称作度量矩阵,度量学习就是对 进行学习。
为了保持距离非负而且对称,则 必须是半正定对称矩阵。即必有正交基 ,使得 。
对 学习的目标是:将 嵌入到学习器的评价指标中去,通过优化学习器的评价指标来求得 。
即:对 的学习无法直接提出优化目标,而是将 的学习与学习器的学习作为一个整体,然后优化学习器的优化目标。
如果学习得的 是一个低秩矩阵(假设秩为 ), 可以找到一组正交基,其中正交基的数量为 ,该组正交基构成矩阵 。
于是度量学习的结果可以衍生出一个降维矩阵 ,能用于降维。降维后的低维空间就是该组正交基张成的空间。
定义隐变量 ,它属于低维空间(也称作隐空间,即隐变量所在的空间)。假设 的先验分布为高斯分布: ,其均值为 ,协方差矩阵为 。
定义观测变量 ,它属于高维空间。假设条件概率分布 也是高斯分布: 。其中:均值是的 线性函数, 为权重, 为偏置;协方差矩阵为 。
则PPCA
模型生成观测样本的步骤为:
首先以概率 生成隐变量 。
然后观测样本 由如下规则生成: 。
其中 是一个 维的均值为零、协方差矩阵为 的高斯分布的噪声: 。
可以利用最大似然准则来确定参数 的解析解。
根据边缘概率分布的定义有:
由于 、 均为高斯分布,因此 也是高斯分布。假 的其均值为 ,协方差为 。则:
推导过程中假设 和 是相互独立的随机变量。
因此 。
给定数据集 ,则对数似然函数为:
其中 这里表示行列式的值。
求解 ,解得 。
对数据集 进行零均值化,即: 。则有:
,因此 。
其中 。
对数似然函数(忽略常数项 ):
其中 为协方差矩阵。 记:
则 。
Tipping and Bishop(1999b)
证明:
的所有驻点都可以写做: 。其中:
当 个特征向量被选择为前 个最大的特征值对应的特征向量时, 取得最大值。其它的所有解都是鞍点。
假定协方差矩阵 的特征值从大到小排列 ,对应的 个特征向量为 。
则最大似然准则得到的解析解为:
是正交矩阵,因此它可以视作 维隐空间的一个旋转矩阵。
根据 ,则 与 无关。这表明: 在隐空间中具有旋转不变性,因此 可以选任意一个正交矩阵。
这代表某种形式的统计不可区分性,因此有多个 都会产生同样的密度函数 。
当 时, 。此时 ,它表示 的列是对 进行缩放,缩放比例为 。
由于 是正交的,因此 的列也是正交的。
当通过解析解直接求解时,可以直接令 。但是当通过共轭梯度法或者EM
算法求解时, 可能是任意的,此时 的列不再是正交的。
如果需要 是正交的,则需要恰当的后处理。
对于任意一个方向向量 ,其中 ,分布 在该方向上的方差为 。
如果 与 正交,即 是被丢弃的特征向量的某个线性组合,则有 。
因此有 。
如果 就是 其中之一,即 ,则有 。
可以看到:沿着特征向量 方向上的方差 由两部分组成:
因此:PPCA
正确的描述了数据集 沿着主轴方向(即 方向)的方差,并且用一个单一的均值 近似了所有剩余方向上的方差。
当 时,不存在降维的过程。此时有 , 。根据正交矩阵的性质: ,以及 ,则有: 。
由于计算时需要用到 ,这涉及到一个 矩阵的求逆。
可以考虑简化为: ,其中 。计算复杂度从 降低到了 。
在PPCA
模型中,数据集 中的每个数据点 都对应一个隐变量 ,于是可以使用EM
算法来求解模型参数。
实际上PPCA
模型参数已经可以得到精确的解析解,看起来没必要使用EM
算法。但是EM
算法具有下列优势:
EM
算法而不是直接计算样本的协方差矩阵可能具有计算上的优势。EM
算法的求解步骤也可以推广到因子分析模型中,那里不存在解析解。EM
算法可以为缺失值处理提供理论支撑。观测变量为 ,隐变量为 ,则完全数据为 ,其中 、 。其中 对数据集 进行零均值化,即: 。
根据后验概率的定义以及高斯分布的性质,后验概率 。
完全数据的对数似然函数为:
其中: 、
E
步:计算期望:
其中: 表示计算期望的概率分布为后验概率分布 。 假设此时迭代的参数为 、 ,则有:
M
步:求最大化:
解得:
EM
算法的物理意义:
E
步涉及到数据点 在隐空间上的正交投影。M
步涉及到隐空间的重新估计,使得满足最大似然,其中投影固定。一个简单的类比:考虑二维空间中的一组小球,令一维隐空间用一个固定的杆表示。现在使用很多个遵守胡克定律(存储的能量正比于弹簧长度的平方)的弹簧将每个小球与杆相连。
E
步:保持杆固定,让附着的小球沿着杆上下滑动,使得能量最小。这使得每个小球独立地到达对应于它在杆上的正交投影位置。M
步:令附着点固定,然后松开杆,让杆到达能量最小的位置。重复E
步和M
步,直到满足一个收敛准则。
PPCA
的EM
算法的一个好处是大规模数据的计算效率。在高维空间中,EM
算法每次迭代所需的计算量都比传统的PCA
要小得多。
PPCA
解析解算法中,对协方差矩阵进行特征分解的计算复杂度为 。如果只需要计算前 个特征向量和它们的特征值,则可以使用 复杂度的算法。
然后计算协方差矩阵本身需要 的计算量,因此不适合大规模数据。
PPCA
的EM
算法没有显式建立协方差矩阵,其计算量最大的步骤是涉及到对数据集求和的操作,计算代价为 。
对于较大的 ,有 ,因此与 相比,EM
算法的计算量大大降低。这可以抵消EM
算法需要多次迭代的缺陷。
PPCA
的EM
算法可以用一种在线的形式执行,其中 被读入、处理。然后在处理下一个数据 时丢弃
E
步中需要计算的量(一个d
维向量和一个 的矩阵 ) 可以分别对每个数据点单独计算。M
步中需要在数据点上累积求和,这个可以增量完成。如果 和 都很大,则这种方式很有优势。
概率PCA
(probabilistic PCA:PPCA
) 与传统的PCA
相比,有如下优势:
PCA
能够描述数据集的主要特征,如期望、方差等。PCA
使用EM
算法求解。当只需要计算几个主要的特征向量的情况下,计算效率较高,它避免了计算协方差矩阵 。PCA
可以推广到混合概率分布,并且利用EM
算法训练。PCA
采用似然函数,这使得它可以与其它的概率密度模型进行比较。PCA
是一个生成式模型,可以用于生成新样本。PPCA
考虑的是低维空间到高维空间的映射,这与传统的PCA
观点不同。传统PCA
观点是高维空间到低维空间的映射。
在PPCA
中,如果希望对数据进行降维,即从个高维空间映射到低维空间,则需要通过贝叶斯定理进行逆映射。
根据后验概率分布 ,任意一点 在低维空间中的投影均值为 。
如果取极限 ,则 ,这就是标准的PCA
模型。但此时后验协方差为0,概率密度函数变得奇异。
但是如果使用EM
算法求解,仍然可以得到一个合法的结果。
对于 的情况,低维空间中的投影会向着原点方向偏移。
目前在PCA
讨论中,假定低维空间的维度 是给定的,实际上必须根据应用来选择一个合适的值。
如果用于数据可视化,则一般选择为 。
如果特征值很自然的分成了两组:一组由很小的值组成,另一组由较大的值组成,两组之间有明显的区分。则 选取为较大的特征值的数量。
实际上这种明显的区分通常无法看到。
按照传统PCA
的方式:
通过交叉验证法选取较好的 ,这种方式依赖于后续的模型。
从算法原理的角度设置一个阈值,比如 ,然后选取使得下式成立的最小的 的值:
这种方式需要指定阈值 ,从而将 的选择转移到 的选择上。
基于PPCA
中的最大似然函数,使用交叉验证的方法,求解在验证集上对数似然函数最大的模型来确定维度的值。
这种方法不依赖于后续的模型,但是缺点是计算量很大。
利用贝叶斯PCA
自动寻找合适的 。
贝叶斯PCA
:在 的每列上定义一个独立的高斯先验,每个这样的高斯分布都有一个独立的方差,由超参数 控制。因此:
其中 是 的第 列。
可以通过最大化 来迭代的求解。最终某个 可能趋向于无穷大,对应的参数向量 趋向于零,后验概率分布变成了原点处的 函数。这就得到一个稀疏解。
这样低维空间的有效维度由有限的 的值确定。通过这种方式,贝叶斯方法自动的在提升数据拟合程度(使用较多的向量 )和减小模型复杂度(压制某些向量 )之间折中。
因子分析:寻找变量之间的公共因子。
如:随着年龄的增长,儿童的身高、体重会发生变化,具有一定的相关性。假设存在一个生长因子同时支配这两个变量,那么因子分析就是从大量的身高、体重数据中寻找该生长因子。
因子分析 Factor Analysis:FA
是一个线性高斯隐变量模型,它与 PPCA
密切相关。
因子分析的定义与PPCA
唯一差别是:给定隐变量 的条件下,观测变量 的条件概率分布的协方差矩阵是一个对角矩阵,而不是一个各向同性的协方差矩阵。
即: ,其中 是一个 的对角矩阵。因此也可以认为PPCA
是一种特殊情形的因子分析。
如果对 进行了零均值化,则 。
与 PPCA
模型相同,因子分析模型假设在给定隐变量 的条件下,观测变量 的各分量 是独立的。
在因子分析的文献中, 的列描述了观测变量之间的相关性关系,被称作因子载入factor loading
。
的对角元素,表示每个变量的独立噪声方差,被称作唯一性uniqueness
。
观测变量的边缘概率分布为 ,其中 。
与PPCA
相同,FA
模型对于隐空间的选择具有旋转不变性。
可以使用最大似然法来确定因子分析模型中的参数 、 的值。此时 的最大似然解不再具有解析解,因此必须用梯度下降法或者EM
算法迭代求解。
EM
算法的迭代步骤为:
E
步:用旧的参数求期望:
其中 。
这里使用一个 的矩阵求逆表达式,而不是 的表达式。
M
步:求最大化来获取新的参数。
其中 将所有非对角线上的元素全部设置为零。
独立成分分析ICA
用于从混合信号中分离出原始信号。
本质上它并不是一个降维的算法,而是一个信号分离算法。
假设酒会上有 个人,他们可以同时说话。房间里散落了 个声音接收器用于记录声音。酒会过后,从 个声音接收器中采集到一组数据:
任务的目标是:从这 个时刻的采样数据中恢复出每个人说话的信号。这个过程也称作盲信号分离。
随机变量 表示观测随机变量, 是其第 个采样值,其物理意义为:在时刻 采集到的 个声音信号。
定义:
第 个人说话的信号为 。它是一个随机变量,其分布为 。 为 的 个时刻的采样,记作 。
个人说话的信号为 。它是一个 维随机变量,分布为 。 为 的 个时刻的采样。
第 个声音接收器收到的信号为 。它是一个随机变量,其分布为 。 为 的 个时刻的采样,记作 。
个声音接收器收到的信号为 。它是一个 维随机变量,分布为 。 为 的 个时刻的采样。
定义矩阵 和矩阵 为:
其意义为:
是一个未知的混合矩阵,它用于叠加 个人说话的信号。则有: 。即: 。
其物理意义为:每个声音接收器采集的信号是所有人说话信号的线性叠加。
现在 是已知的,即信号 是已知的。令 ,则有: 。 称作分离矩阵。
如果没有任何先验知识,则无法同时确定信号 和 。
当 的每个元素扩大 2 倍,同时信号 放大2倍时,等式仍然成立。因此结果不是唯一的。
当调整信号 中各子信号的顺序,同时调整 中各行的顺序,等式也仍然成立。因此结果不是唯一的。
信号 不能是多维高斯分布。
假设 是多维高斯分布 : 。则 也是一个多维高斯分布,均值为 ,方差为 。
假设 为任意一个正交矩阵,令 ,则有: 。
这表示在给定信号 的分布和 的分布的情况下,参数 的值并不是唯一的,因此无法分离出每个人说话的信号 。
假设每个人发出的声音信号 相互独立,则 的概率分布为: 。
根据 ,有: 。其中 为行列式。
记:
令 , 即它是由 的第 行组成。则有:
因此有: 。
前面提到如果没有任何先验知识,则无法求解。这里需要假设 。
首先,不能选取高斯分布。
其次,考虑到概率密度函数由累计分布函数求导得到,一个方便的选择是:选择累计分布函数为 sigmoid
函数 :
则概率密度函数为:
给定采样样本集 ,则对数似然函数为:
根据最大似然准则,可以采用梯度下降法求解 的最大值。
其中:根据矩阵微积分有: 。则有:
当迭代求解出 之后,通过 。 还原出原始信号。
最大似然估计时,假设 和 之间是相互独立的。事实上对于语音信号或者其他具有时间连续性依赖性的数据(如:温度),这个假设不能成立。
FastICA
的基本思想是:使得 最不可能是高斯信号。
度量随机变量 的分布为高斯分布的程度:
基于峰度kurtosis
的方法: 。
基于负熵的方法:。 其中 为随机变量的熵, 是一个高斯分布,其均值、方差与非高斯分布的 的均值、方差相同。
在信息论中可以证明:在相同方差的条件下,高斯分布的熵最大。因此可以认为 越大, 的分布偏离高斯分布越远。
由于计算 必须需要知道 的概率密度分布函数,实际任务中很难实现。因此通常采用近似公式 来实现。其中 为非线性函数,可以为:
、 、 。其中 。
其导数为 。
定义目标函数为 ,采用梯度下降法求解。其迭代公式为:
一次FastICA
算法能够估计出一个独立成分,为了估计出若干个独立成分,需要进行多次FastICA
算法来得到 。
为了防止这些向量收敛到同一个最大值(即:分解出同一个独立成分),当估计 时,需要减去 在之前得到的 上的投影。即:
其中下标 并不是迭代步数,而是第 个 。
ICA
中需要进行预处理,主要有数据中心化、白化两个步骤。
数据中心化:对数据集 执行:
称作数据集 的中心向量,它的各元素就是各个特征的均值。
该操作使得 ,这也意味着 也是零均值的。
白化:对 执行线性变化,使其协方差矩阵为单位矩阵 。即: 。
的协方差矩阵为 (经过数据中心化之后), 设其特征值为 ,对应的特征向量组成的矩阵为 ,则有: ,其中 。
令: ,则有: 。
若 的协方差矩阵为单位矩阵,则根据 有: 。
因此有: 。
,即 相互正交且长度为1 。这也是FastICA
算法中需要对 进行归一化和正交化的原因。
这使得矩阵 的参数从 个降低到 个,减小了算法的计算复杂度。
t-SNE:t-distributed stochastic neighbor embedding
是一种非线性降维算法,它是由SNE
发展而来。
SNE
的基本思想:如果两个样本在高维相似,则它们在低维也相似。
SNE
主要包含两步:
在数据集 中,给定一个样本 ,然后计算 是 的邻居的概率。
SNE
假设:如果 与 越相似,则 是 的邻居的概率越大。
相似度通常采用欧几里得距离来衡量,两个样本距离越近则它们越相似。
概率 通常采用指数的形式:
对 进行归一化有:
其中 是与 相关的、待求得参数,它用于对距离进行归一化。
定义 。由于挑选 时排除了 ,因此有 。
定义概率分布 ,它刻画了所有其它样本是 的邻居的概率分布。
假设经过降维,样本 在低维空间的表示为 ,其中 。
定义:
其中 表示给定一个样本 ,然后计算 是 的邻居的概率。
定义概率分布 ,它刻画了所有其它样本是 的邻居的概率分布。
对于样本 ,如果降维的效果比较好,则有 。即:降维前后不改变 周围的样本分布。
对于 ,定义其损失函数为分布 和 的距离,通过 KL
散度来度量。
对于全体数据集 ,整体损失函数为:
KL
散度具有不对称性,因此不同的错误对应的代价是不同的。给定样本 :
因此SNE
倾向于将高维空间较远的点映射成低位空间中距离较近的点。这意味着SNE
倾向于保留高维数据中的局部特征(因为远处的特征会被扭曲)。因此SNE
更关注局部结构而忽视了全局结构。
从 可以看到: 是与 相关的、用于对距离进行归一化的参数。
定义困惑度为:, 其中 表示概率分布 的熵。
5~50
之间。它表示:对于给定的 ,只考虑它周围最近的 5~50
个样本的分布。当 已经求得,可以根据数据集 以及公式 来求出 。
剔除 中的已知量(),则有: 。
可以通过梯度下降法求解损失函数的极小值。
记 ,则有 。
考虑到softmax
交叉熵的损失函数 的梯度为 。令分布 为样本的真实标记 ,则有:
考虑梯度 ,有两部分对它产生贡献:
因此有:
该梯度可以用分子之间的引力和斥力进行解释:低维空间中的点 的位置是由其它所有点对其作用力的合力决定。
为了避免陷入局部最优解,可以采用如下的方法:
采用基于动量的随机梯度下降法:
其中 为学习率, 为权重衰减系数。
每次迭代过程中引入一些高斯噪声,然后逐渐减小该噪声。
在SNE
中使用的是条件概率分布 和 ,它们分别表示在高维和低维下,给定第 个样本的情况下,第 个样本的分布。
而对称 SNE
中使用联合概率分布 和 ,它们分别表示在高维和低维下,第 个样本和第 个样本的联合分布。其中:
根据定义可知 和 都满足对称性: 、 。
上述定义的 存在异常值问题。
当 是异常值时,对所有的 , 有 都很大。这使得 都几乎为 0 。
这就使得 的代价: 。即:无论 周围的点的分布如何,它们对于代价函数的影响忽略不计。
而在原始 SNE
中,可以保证 , 周围的点的分布会影响代价函数。
为解决异常值问题,定义: 。这就使得 ,从而使得 周围的点的分布对代价函数有一定的贡献。
注意:这里并没有调整 的定义。
对称SNE
的目标函数为: 。
根据前面的推导有: 。其中: 。
实际上对称SNE
的效果只是略微优于原始SNE
的效果。
拥挤问题Crowding Problem
:指的是SNE
的可视化效果中,不同类别的簇挤在一起,无法区分开来。
拥挤问题本质上是由于高维空间距离分布和低维空间距离分布的差异造成的。
考虑 维空间中一个以原点为中心、半径为1
的超球体。在球体内部随机选取一个点,则该点距离原点的距离为 的概率密度分布为:
累计概率分布为: 。
可以看到:随着空间维度的增长,采样点在原点附近的概率越低、在球体表面附近的概率越大。
如果直接将这种距离分布关系保留到低维,则就会出现拥挤问题。
t-SNE
通过采用不同的分布来解决拥挤问题:
t
分布将距离转换为概率分布。这也是t-SNE
的名字的由来。t-SNE
使用自由度为1
的 t
分布。此时有:。
则梯度为:
也可以选择自由度超过 1
的 t
分布。自由度越高,越接近高斯分布。
t
分布相对于高斯分布更加偏重长尾。可以看到:
q1
),相比较于高斯分布, t
分布在低维空间中的距离要更近一点。q2
),相比较于高斯分布,t
分布在低维空间中的距离要更远一点。即:同一个簇内的点(距离较近)聚合的更紧密,不同簇之间的点(距离较远)更加疏远。
优化过程中的技巧:
early compression
:开始初始化的时候,各个点要离得近一点。这样小的距离,方便各个聚类中心的移动。可以通过引入L2正则项(距离的平方和)来实现。 early exaggeration
:在开始优化阶段, 乘以一个大于 1 的数进行扩大,来避免 太小导致优化太慢的问题。比如前 50 轮迭代, 放大四倍。t-SNE
的主要缺点:
t-SNE
主要用于可视化,很难用于降维。有两个原因:
t-SNE
没有显式的预测部分,所以它无法对测试样本进行直接降维。
一个解决方案是:构建一个回归模型来建立高维到低维的映射关系,然后通过该模型来对测试样本预测其低维坐标。
t-SNE
通常用于2维或者3维的可视化。如果数据集相互独立的特征数量如果较大,则映射到 2~3 维之后信息损失严重。
t-SNE
中的距离、概率本身没有意义,它们主要用于描述样本之间的概率分布。
t-SNE
代价函数是非凸的,可能得到局部最优解。
t-SNE
计算开销较大,训练速度慢。其计算复杂度为 。经过优化之后可以达到 。
2014
年Mattern
在论文Accelerating t-SNE using Tree-Based Algorithms
中对t-SNE
进行了改进,主要包括两部分:
kNN
图来表示高维空间中点的相似度。注意到 的表达式:
每个数据点 都需要计算 ,这一项需要计算所有其他样本点到 的距离。当数据集较大时,这一项的计算量非常庞大。
事实上,如果两个点相距较远,则它们互为邻居的概率非常小,因为 。
因此在构建高维空间的点的相似度关系时,只需要考虑 最近的若干个邻居点即可。
考虑与点 最近的 个点,其中 为点 的周围点的概率分布的困惑度。记这些邻居结点的集合为 ,则有:
这种方法会大大降低计算量。但是需要首先构建高维空间的kNN
图,从而快速的获取 最近的 个点。
Maaten
使用VP树:vantage-point tree
来构建kNN
图,可以在 的计算复杂度内得到一个精确的 kNN
图。
对 进行变换。定义 。则根据:
有: 。
则有:
定义引力为:,斥力为: 。则有:
。
引力部分的计算比较简单。
考虑到 ,则有:
根据 ,则只可以忽略较远的结点。 仅考虑与点 最近的 个点,则引力部分的计算复杂度为 。
斥力部分的计算比较复杂,但是仍然有办法进行简化。
事实上这种情况在低维空间中很常见,甚至某片区域中每个点对 的斥力都可以用同一个值来近似,如下图所示。
假设区域 中 4 个点对 产生的斥力都是近似相等的,则可以计算这 4 个点的中心(虚拟的点)产生的斥力 ,则区域 产生的总的斥力为 。
Matten
使用四叉树来完成区域搜索任务,并用该区域中心点产生的斥力作为整个区域的斥力代表值。
并非所有区域都满足该近似条件,这里使用Barnes-Hut
算法搜索并验证符合近似条件的点-区域
组合 。
事实上可以进一步优化,近似区域到区域之间的斥力。
Dual-tree
算法搜索并验证符合近似条件的区域-区域
组合 。
数据可视化的本质任务是:在低维空间中保存高维数据的内在结构。即:
t-SNE
及其变体的核心思想:
KL
散度来实现的。t-SNE
的重要缺陷:
kNN
图存在计算瓶颈。t-SNE
构建kNN
图时采用Vantage-Point
树,其性能在数据维度增加时明显恶化。t-SNE
的参数对于不同数据集非常敏感,需要花费较多的时间在调参上。LargeVis
是一种不同的可视化技术,可以支持百万级别的数据点可视化。
与t-SNE
相比,它主要在以下方面进行了改进:
kNN
图。kNN
图随机投影树和kd
树一样,都是一种分割 维数据空间的数据结构。
kd
树严格按照坐标轴来划分空间,树的深度正比于空间的维度 。
当 的数值很大(即数据空间维度很高)时,kd
树的深度会非常深。
随机投影树划分空间的方式比较灵活,其深度为 ,其中 为样本的数量。
随机投影树建立过程:
将数据集 中的所有点放入根节点。
随机选取一个从原点出发的向量 ,与这个向量垂直的空间 将根节点划分为两部分。
重复划分左子树和右子树,使得每个子树包含的点的数量符合要求。
kNN
图LargeVis
通过随机投影树来构建近似 kNN
图。
首先建立随机投影树。对于数据点 ,找到树中对应的叶节点 。然后将叶节点 对应的子空间中的所有数据点都作为数据点 的候选邻居。
单棵随机投影树构建的 kNN
图精度不高。为了提高kNN
图的精度,通常需要建立多个随机投影树 。
对于数据点 ,对每颗树 ,找到树 中对应的叶节点 。然后将叶节点 对应的子空间中的所有数据点都作为数据点 的候选邻居。
这种做法的缺点是:为了得到足够高的精度,需要大量的随机投影树,这导致计算量较大。
LargeVis
使用邻居探索技术来构建高精度的 kNN
图。
其基本思路是:邻居的邻居也可能是我的邻居。
这种方法只需要构建少量的随机投影树,就可以得到足够高精度的kNN
树。
LargeVis
根据kNN
图来定义图 :
顶点集 :它就是所有高维空间中的数据点的集合。
边集 :它就是kNN
中所有边的集合。
其中边的权重 。
将该图 的结构投影到低维空间保持不变。
定义低维数据点 和 存在边的概率为: 。
其中:
定义数据点 和 存在边、且其权重为 的概率为: 。
考虑数据集 ,则对数似然函数为:
其中:
正边
。负边
。事实上在kNN
图中,正边的数量较少,负边的数量非常庞大,因此计算 的代价较高。
LargeVis
利用负采样技术进行优化。
对图 中的每个顶点 ,LargeVis
仅仅从以 为一个端点的负边中随机采样 个顶点 来计算 。其中采样概率 , 为顶点 的度(与它相连的边的数量)。
则对数似然函数为:
其中: 表示随机采样的 个顶点。
由于 中 作为乘积项出现的,而网络中边的权重 变化范围很大,因此梯度变化会较大。这对训练不利,也就是所谓的梯度剧增和消失问题 gradient explosion and vanishing problem
。
为了解决这个问题,LargeVis
对正边也采用随机采样:若正边的权重为 ,则将其转换为 个权重为 1
的二元边,再随机从这些二元边中进行采样。
1
,这解决了梯度变化范围大的问题。Largevis
使用异步随机梯度下降来进行训练。
这在稀疏图上非常有效,因为不同线程采样的边所连接的两个节点很少有重复的,不同线程之间几乎不会产生冲突。
Largevis
每一轮随机梯度下降的时间复杂度为 ,其中 为负样本个数, 为低维空间的维度。
随机梯度下降的步数和样本数量 成正比,因此总的时间复杂度为 ,与样本数量呈线性关系。