“有趣”的投影:当PCA失效时怎么办?

简介: ——试试PPA,一个关于探索性数据分析的替代方案!

0f4a76249a1b853ce2d4692f9e0f3919c444a53e

目前,大多数的数据科学家都比较熟悉主成分分析 (Principal Components Analysis,PCA),它是一个探索性的数据分析工具。可以这样简要的描述:研究人员经常使用PCA来降低维度,希望在他们的数据中找出有用的信息(例如疾病与非疾病的分类)。PCA是通过寻找正交投影(Orthogonal Projection)向量来实现这一点的,正交投影向量说明了数据中的最大方差量。在实践中,这通常是用奇异值分解(Singular Value Decomposition,SVD)的方法来找到主成分(特征向量),并通过其对数据总方差的贡献(特征值)加权。毫无疑问,在我的专业领域以及许多其它的领域中,PCA是最常用的数据分析工具,但是当它不起作用的时候会发生什么呢?这是否意味着抽样试验的效果不好呢?这是否意味着数据中没有有用的信息呢?我们的小组致力于为化学专业开发新的数据分析工具。在这里,我要给为大家介绍一个PCA的替代方案,叫做投影追踪分析(Projection Pursuit Analysis ,PPA)。

0d27f8011c86a5c00ab744206cd7967ef5d024cc

一般因素分析模型

基于方差运算的PCA

PCA失败在哪了呢?像上面描述的那样,PCA通过在数据中找到最大方差的方向来进行操作。那么如果投射到那个方向上没有效果呢?下图是由200个样本的模拟数据组成的,这些数据形成了两个分离的集群,它们沿着Y轴的方差大于沿着X轴的方差。如果我们对这个二维数据进行PCA操作,那么会得到投影向量v,它将是2×1的列向量([0;1])。投射到这个向量上的原始数据X(200x2)给出了我们的得分T=Xv。在把这些得分可视化之后表明了两个集群之间没有明显的分离。相反,如果我们投射到x轴上(v=[1;0]),那么很容易地就会看到这两个集群中的分离状态。那么我们如何在高维的数据中找到这个向量呢?

0d2d30a29a81c6c5c0e381b16a1c18b659d06f2d

“有趣的”投影显示了分类信息

投影追踪

投影追踪方法最初是由Friedman和Tukey在1974年的时候提出来的,他们试图根据投影指数的最大化或最小化来在数据中找到“有趣的”投影。通过扩展,在PCA框架中,投影指数(方差)被最大化了。现在的问题是,什么样的是好的预测指数呢?数据科学家们在定义新的投影指数方面已经做了大量的研究,但是今天我要关注的一个已经被证明对探索化学领域数据有用的指标是峰态系数(kurtosis)。

基于峰态系数的投影追踪(Kurtosis-based projection pursuit)

第四个统计矩,峰态系数,已被证明了是一个很有用的投影指数 (https://www.sciencedirect.com/science/article/pii/S0003267011010804)。

af8496b7da40e26266e1514ce296581270b938ba

单变量的峰态系数

当峰态系数最大化时,它往往会显示数据中的异常值。这会有些用处,但是实际上它并不是我们想要寻找并显示类或集群信息的东西。然而,当峰态系数最小化时,它将1个维度中的数据分为2组(2个维度中分为4组,3个维度中分为8组)。

6f10005e52a53a377e4b7fdfcf2e45f95a6789a9

峰态系数最小化

现在最大的问题是如何使用峰态系数查找这些投影向量?Quasai-power学习算法. 请见https://www.sciencedirect.com/science/article/pii/S0003267011010804。本文中,Hou和Wentzell证明了利用下面的学习算法可以找到最小化峰态系数的投影向量:

40fd7bb3b217860a1d98e47548f304f42bfebc38

寻找最小化峰态系数的投影向量

实例模拟

让我们同时利用PCA和PPA两种技术来模拟一些数据。与打开的图形类似,我们的数据将会分为两个类,每个类有100个样本,并且只需要1个维度来显示类分离。第一个类在x轴上以-4为中心,标准偏差为5,而第二类则以+4为中心,标准偏差也是5。

f13e877dfb480d6fa0df464cec0eb494742098e6

原始数据

为了使这个模拟更真实,让我们通过乘以一个2 x 600的随机旋转矩阵,将这个200 x 2的矩阵旋转为600个维度。这就是我们现在需要利用探索工具来找到数据中一些有趣的投影的地方。首先,让列的平均值集中我们的数据,同时应用PCA,并将第一个成分可视化为一个样本数量的函数。

1f2a4ff89d065e6d642343bcef1c28dc0737244e

来自PCA的第一个成分

我们会看到,向下投射到第一个PC上的数据不会显示类信息。那我们现在就来应用PPA。

70ff0239021f479621f00158d81812ba2f4adc59

来自PPA的第一个得分

PPA能够找到对我们有用的投影(即提供类分离的投影)。

PPA的问题

尽管在大多数的情况下,我们发现PPA的性能都优于PCA,但是当PPA没有效果的时候,有一些重要的注意事项需要在这里说明一下。当类的大小不相等的时候,PPA就不会正常地工作了,例如,如果我在上面的实例中使用5:1的类比率并应用PPA,我们会得到以下结果:

f812156ef0974e5c14abec317b4bc02eee5b5df3

由于分离的几何学方面的原因,当类的数量不是2的n次方时,PPA也会有问题。PPA也会遇到过度拟合问题,并且通常需要执行数据压缩,大约需要10:1的样本与变量比率。否则,该算法就将人工地把样本忽略掉。我们小组目前的工作是开发一些能缓解这些问题的方法,好消息是我们应该在未来的几个月之内就会发表一些关于这方面的论文!我一定会及时通知大家的。

本文由北邮@爱可可-爱生活 老师推荐,阿里云云栖社区组织翻译。

文章原标题《“Interesting” Projections — Where PCA Fails

译者:Mags,审校:袁虎。

文章为简译,更为详细的内容,请查看原文

相关文章
|
1天前
|
数据采集
PCA与主成分回归(PCR)有何区别?
PCA是降维工具,转化相关变量为线性无关的主成分,保留数据变异。PCR是回归分析方法,利用PCA的主成分预测因变量,应对自变量间的多重共线性,提升模型稳定性。两者协同工作,优化高维数据的建模。
65 0
|
7月前
|
存储 人工智能 算法
聚类的k值确定之轮廓系数
聚类的k值确定之轮廓系数
|
6月前
|
数据可视化 Python
使用递归图 recurrence plot 表征时间序列
在本文中,我将展示如何使用递归图 Recurrence Plots 来描述不同类型的时间序列。我们将查看具有500个数据点的各种模拟时间序列。我们可以通过可视化时间序列的递归图并将其与其他已知的不同时间序列的递归图进行比较,从而直观地表征时间序列。
211 0
|
1天前
|
机器学习/深度学习 算法 数据可视化
基于3DSOM的侧影轮廓方法空间三维模型重建
基于3DSOM的侧影轮廓方法空间三维模型重建
|
10月前
|
数据挖掘 计算机视觉 索引
使用K均值聚类自动分割颜色
说明如何使用 K 均值聚类自动分割颜色。聚类是一种分离对象组的方法。K 均值聚类将每个对象视为在空间中有一个位置。它将对象划分为若干分区,使每个簇中的对象尽可能彼此靠近,并尽可能远离其他簇中的对象。您可以使用 函数将图像像素按值分成一个颜色空间内的若干个簇。此示例在 RGB 和 L*a*b* 颜色空间中执行图像的 k 均值聚类,以显示使用不同颜色空间如何改进分割结果。
105 0
|
12月前
|
算法 数据可视化 数据挖掘
基于GMM的一维时序数据平滑算法
本文将介绍我们使用高斯混合模型(GMM)算法作为一维数据的平滑和去噪算法。
150 0
|
12月前
|
SQL Oracle 关系型数据库
Oracle优化07-分析及动态采样-直方图
Oracle优化07-分析及动态采样-直方图
68 0
|
机器学习/深度学习 传感器 算法
基于点特征直方图(PFH)算法实现点云拼接附matlab代码
基于点特征直方图(PFH)算法实现点云拼接附matlab代码
|
人工智能 数据格式
跟着Nature学作图 | 配对哑铃图+分组拟合曲线+分类变量热图
跟着Nature学作图 | 配对哑铃图+分组拟合曲线+分类变量热图
205 0
跟着Nature学作图 | 配对哑铃图+分组拟合曲线+分类变量热图
|
算法 Serverless 计算机视觉
surf特征+FLANN特征匹配+knn筛选匹配点+单应性矩阵映射
surf特征+FLANN特征匹配+knn筛选匹配点+单应性矩阵映射
280 0