高维数据的降维可视化是其探索性分析的起点,无法直观显示的模式或规律很难令人信服,当然能直观显示并不代表对应模式或规律的真实存在。这里我们关注的是高维度样本间的模式或规律而不是维度间的关系,因此可视化也是基于样本间关系的,特别是其异质性或相似性。虽然是三维空间生物,我们的视觉捕捉的是二维图像然后大脑利用透视阴影等信息处理为立体信息,但在可视化问题上搞透视跟阴影经常会产生误导,所以这里只讨论降维到2D平面的方法。样本间的关系在二维平面上无所谓就是用距离来描述,离得近表示样本相似,离得远表示样本差异大,这是降维可视化理论上的出发点,但一定注意很多常用降维方法并不保证这个出发点,需要理解算法搞清楚适用环境与目的,不要为了使用降维而降维。这里讨论下降维可视化常见方法及其在科研中的应用。
主成分分析(PCA)
主成分分析是科研中最常用的降维可视化手段,其基本原理是方差最大化来选择新的投影方向,新的投影是原有多维数据维度的线性组合。主成分分析的具体实现可以是特征值分解,也可以是奇异值分解(SVD),其中特征值分解是早期主成分分析的主要实现手段而奇异值分解则可以有更广的应用范围,例如不用去算协方差矩阵就可以给出奇异值及容易并行化等。
主成分分析的降维可视化就是利用方差累积解释度较高(例如超过80%)的维度来展示样品,因为主成分分析可以降序给出各主成分的方差解释度,当降序后前几维方差累积解释度较高时就可以用较少的前几个维度或主成分来可视化较高维度的数据了。至于说各主成分上原始维度的投影及其物理意义就需要数据背后的知识来支持了,新的维度可被看成潜在变量,因此主成分分析可被认为因子分析的一种,用来揭示高维数据背后潜在正交变量。同时主成分分析对数据的要求是存在线性共相关,要是这条不满足,主成分分析无法实现降维。而正交变量有没有物理或生物意义主成分分析是不管的,解释不通可能说明数据不适合主成分分析的线性假设。
另外需要注意为了各维度线性组合权重类似,各维度要标准化到同一尺度。不满足正态分布的可能还要进行对数处理,不过是否进行对数处理需要考虑维度间是加性还是乘性,因为你对数转化后主成分分析重组的维度描述的是维度间累乘的结果,你的每一步数据处理都影响对可视化的解释。举个例子,如果你给了数据点的长宽高三个维度,那么对数转化后映射出的主成分就是样品的体积差异,说到底还是要理解你数据的物理意义来降维。为了追求统计方法的使用范围而进行的对数化处理是削足适履,统计方法应针对复杂实际问题提出解决方案而不是反过来荒唐地要求事实符合统计假设。
在分析化学中,测定的物质信号一般与其浓度或含量成正比,此时要不要取对数要明白物质浓度的生物学意义。生物学效应一般符合剂量效应曲线(更本质驱动的是化学反应动力学过程在酶促反应中的表现),很多时候是S型或线性的,此时剂量是要取对数。如果想看到表型上的多维度效应的线性组合,在分子层面需要对浓度信号做对数转换的,这就给了降维时对数处理合理的物理意义。同样的,如果两个分子存在于同一个路径或代谢通路上,其效应是累乘的,此时想在降维中保存样品中这类信息的作用就要做两次对数转化。但如果你不是考察生命过程或考察过程的剂量效应曲线是其他形态的,那就要仔细思考取对数的合理性,你思考越多后面的问题越少。
独立成分分析(ICA)
矩阵分解并不只是有主成分分析这一种,如果我们放开对成分间正交的限制,也可以用来提取独立成分。独立成分分析里独立的定义就比较艺术了,不同算法可能使用了不同统计量,但不论哪一种都是用来保证从高维数据中提取相似度高的维度然后压缩为一个新维度。事实上独立成分分析更符合实验科学中对样品描述的假设,但无奈主成分分析还是当前主流。
非负矩阵分解
独立成分分析与主成分分析都会引入负数,负数在数学上无可厚非但科学上经常讲不通,因此也有专门针对非负矩阵的分解方式,此时拆出来的新维度之可能是原有维度的加性组合。如果你确定只想可视化数据中的加性组合,可以考虑这种降维方法。
多维标度分析(MDS)
多维标度分析的降维思路是定义一个stress函数,最小化低维度坐标距离与高维度样本距离,然后这组坐标就可以捕捉到高维度样本间的关系了。当高维度样本距离是欧式距离时,最小化这个函数等同于求解主成分分析,所以你可以把主成分分析看成多维标度分析的一个特例。但如果距离不是欧式距离或者你对数据进行了非参转化,那么多维标度分析就可以看成一种低维展示样品的技术了。这里可以定义做几维的映射,而且需要的是距离矩阵而非原始数据就可以进行降维,这都是多维标度分析的应用场景更广。当然,跟主成分分析类似,降维都是要丢信息的,可以通过一些统计量来评价降维后是否反映了原始数据的信息。
t-SNE
数据样本间的关系可以是线性的,也可以是非线性的,在非线性条件下用主成分分析降维效果不会太好,此时可以尝试 t-SNE。t-SNE 是一种基于流形分析的最优化方法,不过这里最优化的是目标是尽可能保持数据间原有的局部关系,MDS或PCA则侧重了全局映射。在 t-SNE中,样本点间的欧式距离用来计算样本间相似度并认为其符合正态分布,优化目标是让新的低维坐标点间距离分布概率与样本相似度距离分布概率接近,而t-SNE的最终输出其实依赖了图论里输出的算法。t-SNE是有些参数要调的同时也依赖随机点,所以每次生成的低维映射会有不同。如果你选这种方法,那就默认你更关注样本间的局部非线性关系。
UMAP
UMAP主要是为了克服t-SNE算起来比较慢的问题,其核心算法对不同样本点临近考虑一个距离半径,如果半径跟其他样本点重合就合并为一组,在UMAP中这个半径并非固定的,而是根据样本本身周围样本点的稀疏情况来决定。这样当高维度样本点间关系确定后通过低维输出就可以了,这部分跟 t-SNE 是差不多。t-SNE 与 UMAP 都是依赖流形分析来解决非线性问题,都用到了拓扑结构的思想。不过还是那句话,不能为了用这种方法而用,你写论文方法部分总不能写这玩意高大上我才用吧,虽然不否认有些编辑确实好这口。
自组织映射网络(SOM)
自组织映射网络也出现在一些科研实验数据中,这个降维方法的源头在人工神经网络。传统人工神经网络是反馈学习的,自组织映射网络则是依赖竞争学习的。SOM的输出是自定义的,一般都定义成一个二维平面网格,样本来了通过神经元函数去计算其跟哪个网格输出最接近,相似的样品自然会输出到相似的网格上,可视化出来后就可以在自定义的布局上看到自组织出的样品分布。如果你抽取出神经元来看不同维度的加权情况也可以探索下原始维度在布局上的影响。到SOM降维可视化就已经从捕捉相似性到映射相似性了,相应的对读者的数据分析能力要求也越来越高或越来越黑箱,进入魔术状态就不好了。
其实除了上面说到的,还有很多非线性降维可视化手段,例如Locally Linear Embedding、Neighbourhood Component Analysis、Autoencoders、Kernel principal component analysis等,但如果你搞明白前面这些,后面这些一来不难理解,二来也会发现可能根本就用不上。科研用降维手段不是炫技,就是解决最开始那个探索样品间关系的问题,而探索也只是形成假设的第一步。诚然如果选错了方法可能错过一些信息,但如果样本间异质性如果足够,上述方法都或多或少能展示出来。如果异质性需要很精细调参数才能展示,更大的可能有两个:样本量不够或现象本身可重复性差,不应在这种数据上浪费资源,重新采样可能是更好的选择。