假设我有一个 2D 点数据集,我想检测数据中所有局部最大值方差的方向,例如:
PCA 在这种情况下没有帮助,因为它是正交分解,因此无法检测到我用蓝色表示的两条线,而是它的输出可能看起来像绿线所示的那条。
请推荐任何可能适合此目的的技术。谢谢。
假设我有一个 2D 点数据集,我想检测数据中所有局部最大值方差的方向,例如:
PCA 在这种情况下没有帮助,因为它是正交分解,因此无法检测到我用蓝色表示的两条线,而是它的输出可能看起来像绿线所示的那条。
请推荐任何可能适合此目的的技术。谢谢。
独立成分分析应该能够为您提供很好的解决方案。通过假设您的测量结果来自统计独立变量的混合,它能够分解非正交分量(如您的情况)。
Internet 上有很多很好的教程,并且有一些免费的实现可供尝试(例如在scikit或MDP中)。
ICA 什么时候不工作?
与其他算法一样,ICA 在其推导出的假设适用时是最优的。具体来说,
ICA 返回混合矩阵和独立分量的估计。
当您的源是高斯时,ICA 无法找到组件。假设您有两个独立的组件和,它们是。那么,
在哪里. 是二维向量的范数。如果它们与正交变换(例如旋转)混合,我们有,这意味着概率分布在旋转下没有变化。因此,ICA 无法从数据中找到混合矩阵。
对于所谓的“倾斜”案例,有类似 PCA 的程序。在 SPSS 之类的统计软件中(也可能在其免费软件克隆中)PSPP 可以找到等效的“倾斜旋转”,它们的实例被命名为“oblimin”、“promax”等等。如果我理解正确,软件会尝试通过将正交欧几里得空间中的坐标重新计算为坐标轴非正交的空间坐标,从而将因子载荷“矩形化”从多元回归中知道的一些技术。此外,我认为这只能迭代地工作,并且在模型的统计测试中消耗一个或多个自由度。
比较 PCA 和倾斜旋转SPSS
的参考手册(在 IBM 网站上)用于倾斜旋转的甚至包含计算公式。
[更新](Upps,对不起,刚刚检查了PSPP不提供倾斜类型的“旋转”)
我对此没有太多经验,但 Vidal、Ma 和 Sastry 的广义 PCA是针对非常相似的问题而设计的。
其他答案已经就您可以考虑的技术提供了一些有用的提示,但似乎没有人指出您的假设是错误的:示意图上以蓝色显示的线不是方差的局部最大值。
要查看它,请注意方向的变化是(谁)给的, 在哪里表示数据的协方差矩阵。为了找到局部最大值,我们需要将该表达式的导数设为零。作为被限制为单位长度,我们需要添加一个术语在哪里是拉格朗日乘数。微分,我们得到以下等式:
这意味着应该是协方差矩阵的特征向量,即主向量之一。换句话说,PCA 为您提供所有局部最大值,没有其他最大值。