如果我有两个离散的信号源群混合在一起,我可以使用独立分量分析吗?

信息处理 伊卡
2021-12-26 13:57:56

我(主要)了解独立成分分析(ICA)如何处理来自一个群体的一组信号,但如果我的观察(X 矩阵)包括来自两个不同群体(具有不同方法)的信号并且我无法使其工作我想知道这是否是 ICA 的固有限制,或者我是否可以解决这个问题。我的信号与正在分析的常见类型不同,因为我的源向量非常短(例如 3 个值长),但我有很多(例如 1000 个)观察结果。具体来说,我正在测量 3 种颜色的荧光,其中广泛的荧光信号可以“溢出”到其他检测器中。我有 3 个检测器并在粒子上使用 3 种不同的荧光团。人们可以认为这是一种分辨率非常差的光谱。任何荧光粒子都可以具有任意数量的 3 种不同荧光团中的任何一种。然而,我有一组混合的粒子,它们往往具有非常不同的荧光团浓度。例如,一组通常可能有很多荧光团 #1 和少量荧光团 #2,而另一组可能有少量 #1 和很多 #2。

基本上,我想对溢出效应进行反卷积以估计每个粒子上每个荧光团的实际数量,而不是将来自一个荧光团的一小部分信号添加到另一个荧光团的信号中。似乎这对 ICA 来说是可能的,但是在一些重大失败之后(矩阵变换似乎优先考虑分离种群而不是旋转以优化信号独立性),我想知道 ICA 是否不是正确的解决方案,或者我是否需要以其他方式预处理我的数据以解决此问题。

1 个数据集中 2 个种群的 FastICA 算法结果

这些图表显示了我用来证明问题的合成数据。从由 2 个总体组成的“真实”来源(面板 A)开始,我创建了一个“真实”混合 (A) 矩阵并计算了观察 (X) 矩阵(面板 B)。FastICA 估计 S 矩阵(显示在面板 C 中),而不是找到我的真实来源,在我看来,它旋转数据以最小化 2 个总体之间的协方差。

寻找任何建议或见解。

2个回答

从概念上讲,要使 ICA 工作,它需要对相同现象的 N 次观察,并且它将尝试将这些信号(混合物)分解为 < N 个分量。

根据您的描述,每个探测器都在计算不同的能量粒子。也就是说,“混合物”实际上已经是三种不同的信号。考虑使用 4 个不同麦克风的录音来尝试区分 2 个不同(相互独立)的声源的示例。在这种情况下,每个麦克风都记录了两个声源的(不同)总和。在您的情况下,由于您正在观察的现象,每个“麦克风”(检测器)不会记录两个源的(不同)总和,而是单独记录每个源(大多数情况下)。

正如您所描述的,有时,SAME 事件可能会被多个检测器记录(溢出)。在这种情况下,如果您坚持使用 ICA,那么它将尝试分解该总和。

因此,也许您应该考虑一些更简单的事情,例如获得三个不同检测器中的每一个记录的事件之间的互相关性,作为溢出量的指标。

但在这种情况下,您无需检查 1000 个“三元组”观测值,而是创建三个不同的时间序列。每个检测器一个时间序列,描述每个检测器的事件(及时)。

如果您的探测器和设备足够快,该信号将看起来像一系列指数衰减的脉冲。如果不是,您的信号将看起来像一串与系统的脉冲响应卷积的脉冲(平滑版本)。在任一情况下,如果多个检测器检测到相同事件,则这些检测器的输出将同时升高电平(并增加互相关或某种其他形式的相关度量)。在第一种情况下(快速系统)更容易检测到这种上升。

因此,现在的问题变成了您必须决定将该事件分配给哪个检测器才能正确计数的问题。有多种方法可以做到这一点(不使用 ICA),但您必须知道检测器的光谱响应(脉冲幅度 VS 能量或电压输出 VS 能量)。然后,您可以通过查找探测器响应中每个脉冲的“权重”来创建计数粒子的加权总和。或者你可以对脉冲应用一个“窗口”。也就是说,考虑检测器峰值响应周围的尖锐阈值,并且只计算产生这种(通常是高)脉冲的事件。考虑到探测器峰值性能附近的短区域将拒绝由溢出产生的(较低的)脉冲。

我希望这有帮助。我希望正确理解您的配置。

听起来您的“信号”确实不是适合 ICA 的类型。但是,您似乎可以从聚类算法中受益,特别是如果您知道每种荧光团类型预期的不同信号(能级或波长)。您可以创建理想的合成聚类并将观测数据与它共同聚类。通过改变簇的数量和其他参数,您应该能够将每个荧光团的溢出作为额外的簇弹出。光谱或层次聚类方法可能是最好的(与 k 均值相反)。