ICA 是否需要先运行 PCA?
fastICA 方法确实需要一个预白化步骤:首先使用 PCA 对数据进行转换,从而得到一个对角协方差矩阵,然后对每个维度进行归一化,使得协方差矩阵等于单位矩阵(白化)。
数据的无限变换会导致恒等协方差矩阵,如果您的源是高斯的,您将停在那里(对于高斯多元分布,均值和协方差是足够的统计数据),在存在非高斯源的情况下,您可以最小化一些测量对白化数据的依赖性,因此您寻找最大化独立性的白化数据的旋转。FastICA 使用信息论测量和定点迭代方案来实现这一点。
我会推荐 Hyvärinen 的工作来更深入地了解这个问题:
- A. Hyvärinen。用于独立分量分析的快速且稳健的定点算法。IEEE 神经网络汇刊 10(3):626-634, 1999。
- A. Hyvärinen、J. Karhunen、E. Oja,独立成分分析,Wiley & Sons。2001年
请注意,进行 PCA 和进行降维并不完全相同:当您的观测值(每个信号)多于信号时,您可以执行保留 100% 解释方差的 PCA,然后继续进行白化和定点迭代以获得独立分量的估计。是否应该执行降维高度依赖于上下文,它基于您的建模假设和数据分布。
将 PCA 应用于您的数据具有旋转原始坐标轴的唯一效果。它是一个线性变换,就像傅里叶变换一样。因此,它真的不能对您的数据做任何事情。
但是,新 PCA 空间中表示的数据具有一些有趣的特性。在使用 PCA 进行坐标旋转之后,您可以根据已建立的标准(例如新轴解释的总方差百分比)丢弃一些维度。根据您的信号,您可以通过这种方法实现大量的降维,这肯定会提高以下 ICA 的性能。在不丢弃任何 PCA 组件的情况下进行 ICA 不会对后续 ICA 的结果产生影响。
此外,由于坐标轴的正交性,还可以轻松地对 PCA 空间中的数据进行白化。白化具有均衡所有维度的方差的效果。我认为这是 ICA 正常工作所必需的。否则,只有少数具有最大方差的 PCA 组件会主导 ICA 结果。
在 ICA 之前,我真的没有看到基于 PCA 的预处理有任何缺点。
Giancarlo 已经引用了 ICA 的最佳参考...
fastICA算法的推导只需要一步白化。首先,您选择步骤的方向(如梯度下降),这不需要白化数据。然后,我们必须选择步长,这取决于 Hessian 的倒数。如果数据被白化,则此 Hessian 矩阵是对角线且可逆的。
那么它是必需的吗?如果您只是将步长固定为常数(因此不需要白化),您将拥有标准的梯度下降。具有固定小步长的梯度下降通常会收敛,但可能比原始方法慢得多。另一方面,如果您有一个大数据矩阵,那么白化可能会非常昂贵。即使在没有美白的情况下收敛速度较慢,您的情况也可能会更好。
我很惊讶在任何文献中都没有提到这一点。一篇论文讨论了这个问题: Jimin Ye 和 Ting Huang 的New Fast-ICA Algorithms for Blind Source Separation without Prewhitening 。
他们提出了一种更便宜的美白选择。我希望他们已经将只运行 ICA 而没有美白作为基线的明显比较,但他们没有。作为另一个数据点,我尝试运行 fastICA 而不对玩具问题进行美白,并且效果很好。
更新:另一个很好的解决白化问题的参考在这里:鲁棒的独立成分分析,Zaroso 和 Comon。他们提供不需要美白的算法。