想象你站在老周乐队排练室门外。鼓、键盘、吉他的声音混在一起,像一锅沸腾的粥。你手里有三支不同位置的录音笔,录到的都是三个乐手的混合声,却想单独听清吉他手刚才那段即兴Solo。这其实就是一个经典的AI问题:盲源分离。更妙的是,如果乐手们各自的即兴火花(非高斯扰动)彼此独立,你不仅能从混合录音里拆出每一条音轨,还能进一步推断出“谁先起头、谁在跟谁”——这就是LiNGAM因果发现模型的精髓,而它的引擎,正是ICA独立成分分析。 ICA的目标,是先从混合信号中分离出统计上尽量独立的“源信号”。这些源信号往往是非高斯的:像乐手们偶尔爆发的高音和停顿,而不是千篇一律的标准大合唱。正因为非高斯,我们才能找到唯一有效的分离方向。掌握了ICA,你就有了一把从数据中揭开独立成因的手术刀。

岗位关联

对AI从业者来说,ICA是因果发现与可解释AI的核心工具之一:它能从观测数据中分离出独立扰动,并帮你识别变量之间的因果方向和影响强度。

目录
  1. 可视化演示
  2. 盲源分离基础
  3. 非高斯性度量
  4. 数据预处理
  5. FastICA算法
  6. LiNGAM模型
  7. 因果发现流程
  8. 应用与实战
  9. 工程优化策略
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

展示LiNGAM利用非高斯性判定因果方向、tsPC时序条件独立检验及DBN动态贝叶斯网络双层因果结构,支持模式切换。

本节配有交互动效(进入视口后自动加载,约 3KB)。

LiNGAM非高斯因果方向判定 非高斯分布打破因果方向对称性 Uniform/Laplace分布 enables方向识别 X=f(Y)+e vs Y=g(X)+e 非高斯残差独立性检验确定因果方向

盲源分离基础

老周乐队的排练室门上贴着“闲人免进”,你却透过门缝听到一团乱麻。鼓点的重拍、键盘的琶音、吉他的滑音全部叠在一起,谁也没法单凭耳朵分清楚。这个“从混合物里找回独立音轨”的问题,就是盲源分离。ICA要做的事,正是把多个麦克风录到的混合信号,还原成原本彼此独立的源信号。

从数学上看,假设麦克风录到的信号是线性混合成的:每个麦克风会把所有乐手的独奏按不同灵敏度相加。我们可以用一张矩阵 \(A\) 记录“每个麦克风对各乐手的敏感程度”,用向量 \(\mathbf{s}\) 表示乐手们的源信号,用 \(\mathbf{x}\) 表示麦克风观测。这就是ICA的基本模型。

ICA的分离目标就是:在只知道 \(\mathbf{x}\)、不知道 \(\mathbf{s}\) 和 \(A\) 的前提下,估计出一个解混矩阵 \(W\),使得 \(W\mathbf{x}\) 尽量还原 \(\mathbf{s}\)。这好比有人把三杯果汁倒在一起搅匀,你要凭味道反推每杯果汁的原始配方。

x=As\mathbf{x}=A\mathbf{s}
一句话说就是:观测到的混合信号,等于混合矩阵乘以独立源信号。
  1. \(\mathbf{x}\)麦克风在同一时刻录到的音量组成的列向量,是直接可观测的数据。
    x=(x1,x2,…,xm)T\mathbf{x}=(x_1,x_2,\dots,x_m)^T
  2. \(\mathbf{s}\)三个乐手各自的独奏信号,统计上互相独立,是我们要找回的“源”。
    s=(s1,s2,…,sn)T\mathbf{s}=(s_1,s_2,\dots,s_n)^T
  3. \(A\)混合矩阵,记录每个麦克风与每个乐手之间的加权关系。
    A=[aij]m×nA=[a_{ij}]_{m\times n}
  4. 矩阵乘法展开第 \(i\) 个麦克风的观测等于所有源按系数加权求和。
    xi=∑j=1naijsjx_i=\sum_{j=1}^{n}a_{ij}s_j

非高斯性度量

为什么ICA一定要强调“非高斯”?想象一群乐手都按照标准节拍器齐步走,几乎每个人都没有个性,那么无论你怎么拆分,混合出来的声音都长得差不多。而老周乐队的乐手们恰恰相反:他们大多数时候平稳,偶尔来一个爆发的尖锐高音或突兀停顿。这种“有尖峰、有稀疏、不平淡”的分布,就是典型的非高斯信号。

中心极限定理告诉我们:很多独立随机变量相加后,整体分布会趋向高斯分布。换句话说,混合信号越是“混合”,就越像高斯信号;而当我们从一个混合信号中分离出某个成分时,如果这个成分看起来最不像高斯、最尖锐独特,那它很可能就是真正的源信号。因此,ICA可以看成“寻找最大非高斯方向”的过程。

峭度是衡量非高斯性的经典指标之一。设 \(y\) 是某个候选独立成分,并且我们先把它标准化为单位方差,那么峭度定义为:

在实际中,我们还会用负熵等更稳健的指标替代峭度,因为它们对异常值不那么敏感。但核心思路不变:哪个方向分离出的成分最“尖锐”,哪个方向就最接近真正的源信号。

kurt(y)=E[y4]−3(E[y2])2\mathrm{kurt}(y)=E[y^4]-3\left(E[y^2]\right)^2
峭度像“尖锐程度计”:正值表示分布比高斯更尖、尾巴更厚,负值表示分布更平坦。
  1. \(y\)一次尝试分离出来的候选信号,我们希望它足够“有个性”。
    y=wTzy=\mathbf{w}^T\mathbf{z}
  2. \(E[y^4]\)对 \(y\) 的四次方取平均,突出极端大值和极端小值的影响。
  3. \(E[y^2]\)对 \(y\) 的平方取平均,也就是二阶矩;当信号标准化时它等于方差。
  4. 减去 \(3\)高斯分布的四阶矩恰好等于 \(3\) 个单位,所以减去 \(3\) 后,高斯信号的峭度为 \(0\),偏离高斯时峭度不为 \(0\)。
    kurt(y)=0⇒y 是高斯信号\mathrm{kurt}(y)=0\Rightarrow y\text{ 是高斯信号}

数据预处理

上台之前,乐队要先调音、摆好麦克风位置,否则再好的分离算法也会被音量失衡和直流偏置干扰。在ICA中,这对应两步预处理:中心化和白化。

中心化很简单:先把每个观测信号减去自己的均值,让所有信号都围绕零上下波动。白化则是把数据“整形”成协方差为单位矩阵的形态,也就是让信号的各个方向方差一致,像把压扁的圆球重新吹圆。白化之后,ICA要估计的混合矩阵就变成了一个正交矩阵,搜索难度大大降低。

设观测信号 \(\mathbf{x}\) 的均值为 \(\boldsymbol{\mu}\),协方差矩阵为 \(C\)。对 \(C\) 做特征值分解 \(C=E\Lambda E^T\),白化后的信号为:

白化不仅能加速ICA收敛,还能让后续迭代更稳定。就像给三个乐手的麦都统一音量,谁也不会因为坐得远而被忽略。

z=Λ−1/2ET(x−μ)\mathbf{z}=\Lambda^{-1/2}E^T(\mathbf{x}-\boldsymbol{\mu})
白化先把数据“拉回原点”,再按方差大小把每一维度“抻平”,让数据在各个方向上都均匀展开。
  1. \(\mathbf{x}-\boldsymbol{\mu}\)把每个观测减去均值,完成中心化,消除直流偏移。
  2. \(C=E\Lambda E^T\)协方差矩阵被分解为特征向量矩阵和特征值矩阵,描述数据的主要伸展方向。
  3. \(\Lambda^{-1/2}\)对每个特征值开方后取倒数,起到“压缩长轴、拉长短轴”的作用。
  4. \(E^T\)把数据旋转到特征向量方向,让协方差矩阵变成对角阵。
  5. 结果 \(\mathbf{z}\)白化后的数据协方差满足 \(E[\mathbf{z}\mathbf{z}^T]=I\),也就是每个方向方差相同。

FastICA算法

现在到了“调音台前找方向”的环节。FastICA是最常用的ICA算法。它的思路很直接:不断旋转一个方向向量 \(\mathbf{w}\),使得投影 \(y=\mathbf{w}^T\mathbf{z}\) 的非高斯性最大。你可以想象自己在混音台上拧旋钮,听到某个方向上突然出现一个清晰的吉他Solo,而不是模糊的“嗡嗡”声,就说明你找到了好方向。

FastICA使用定点迭代,每次根据当前方向计算一个新方向,再归一化。设 \(g\) 是一个非线性函数(通常取 \(\tanh\)),迭代公式为:

提取出一个成分后,需要把该方向从数据中剔除,再寻找下一个成分。FastICA的最终效果,是一组互相独立的输出分量。分量顺序并不是算法关心的,就像你先找到吉他还是先找到鼓,并不影响最终分离质量。

w+=E[z g(wTz)]−E[g′(wTz)]w,w=w+∥w+∥\mathbf{w}^{+}=E[\mathbf{z}\,g(\mathbf{w}^T\mathbf{z})]-E[g'(\mathbf{w}^T\mathbf{z})]\mathbf{w},\qquad\mathbf{w}=\frac{\mathbf{w}^{+}}{\|\mathbf{w}^{+}\|}
可以把这理解为“顺着非高斯性最强的斜坡往上爬,每爬一步就重新确认方向”。
  1. \(\mathbf{w}\)当前要寻找的分离方向,就像调音台上的一根旋钮轴线。
  2. \(g(\mathbf{w}^T\mathbf{z})\)对投影结果施加非线性变换,相当于用“个性放大镜”突出信号的非高斯特征。
  3. 第一项 \(E[\mathbf{z}g(\cdot)]\)数据与非线性变换后的信号求相关,指引方向往“更有个性”的方向移动。
  4. 第二项 \(E[g'(\cdot)]\mathbf{w}\)减去一个修正项,防止方向无限增长,保持迭代稳定。
  5. 归一化把新方向缩放为单位长度,保证每次只改变角度、不改变幅度。
    w←w+∥w+∥\mathbf{w}\leftarrow\frac{\mathbf{w}^{+}}{\|\mathbf{w}^{+}\|}

LiNGAM模型

ICA解决了“把混合声分开”的问题,但老周乐队还有另一个谜题:到底是吉他手先起了一个动机,键盘手跟上去,鼓手再进?换句话说,谁影响了谁?LiNGAM(线性非高斯无环模型)做的事,就是在观测数据中推断这种因果关系。

LiNGAM假设每个观测变量 \(x_i\) 由它的直接原因 \(x_j\) 和一个独立非高斯扰动 \(e_i\) 决定。写成结构方程就是:

把整个系统写成向量形式就是 \(\mathbf{x}=B\mathbf{x}+\mathbf{e}\),其中 \(B\) 是一个严格下三角矩阵。下三角的含义是:变量之间存在一个因果顺序,原因永远排在结果前面。LiNGAM通过ICA估计出混合矩阵 \(A\),从而恢复 \(B\) 和因果顺序。

xi=∑j∈PA(i)bijxj+eix_i=\sum_{j\in PA(i)} b_{ij}x_j+e_i
这里 \(PA(i)\) 表示 \(x_i\) 的直接原因集合,\(b_{ij}\) 是原因 \(x_j\) 对结果 \(x_i\) 的影响强度,\(e_i\) 是独立噪声。
  1. \(x_i\)结果变量的取值,比如键盘手演奏的旋律。
  2. \(PA(i)\)所有直接原因变量,比如键盘手的“老师”吉他手。
  3. \(b_{ij}\)从原因 \(j\) 到结果 \(i\) 的因果强度,类似“模仿程度”。
  4. \(e_i\)独立于其他变量的非高斯噪声,代表键盘手自己的即兴发挥。
  5. 求和式结果等于原因贡献之和再加自己的独立噪声。

因果发现流程

知道了模型,怎么从数据里“反推”因果顺序?关键线索在于:因果图是有向无环的,因此变量经过合适排列后,\(B\) 是严格的三角矩阵。而ICA告诉我们 \(\mathbf{x}=A\mathbf{e}\),其中 \(\mathbf{e}\) 是独立非高斯扰动。可以推出:

因此,ICA估计出的混合矩阵 \(A\) 就是 \((I-B)^{-1}\)。当我们找到一个变量排列,使 \(A\) 的下三角逆矩阵 \(W=A^{-1}\) 也是三角结构时,就同时恢复了因果顺序和因果强度 \(B\)。

在实际操作中,也可以用 DirectLiNGAM 代替“ICA + 排列”。它每次找出最外生的变量,回归出它对其他变量的影响,再递归处理残差。无论哪种实现,非高斯扰动都是那个让方向“可识别”的关键——如果扰动是高斯分布,混合后仍有许多对称方向,因果顺序就无法唯一确定。

x=(I−B)−1e\mathbf{x}=(I-B)^{-1}\mathbf{e}
因果发现的核心,是把ICA的“任意顺序、任意缩放”结果,通过三角化约束变成一个唯一答案。
  1. \(\mathbf{x}=B\mathbf{x}+\mathbf{e}\)线性结构方程模型,变量包含彼此间的影响。
  2. \((I-B)\mathbf{x}=\mathbf{e}\)把因果影响移到左边,得到独立扰动与观测变量的关系。
  3. \(\mathbf{x}=(I-B)^{-1}\mathbf{e}\)把观测写成独立扰动的线性组合,这就是ICA的标准形式。
  4. 三角化排列由于 \(B\) 是严格下三角阵,\((I-B)^{-1}\) 也下三角,所以找到这样的排列就找回了因果顺序。

应用与实战

分离出因果结构之后,它的价值远超“听清乐手独奏”。想象你是一名义诊医生,记录了一位患者头上的多个脑电通道。每个通道都像一支麦克风,混着神经源信号、眨眼和心跳伪迹。ICA可以把脑电信号中的眼动噪声分离出去,让医生看清真实脑电波形;LiNGAM则进一步推断不同脑区之间谁先激活、谁后响应。

在更广义的场景里,LiNGAM给出的因果强度 \(b_{ij}\) 可以直接回答“原因变量变化一个单位,结果变量变化多少”。对应公式:

在工业界,ICA和LiNGAM同样可以用于设备故障归因:多台传感器观测到系统异常,先分离出独立故障源,再推断故障传播方向,帮助工程师定位根因。这正是可解释AI所追求的:不仅知道“发生了什么”,还知道“是谁导致它发生”。

∂xi∂xj=bij\frac{\partial x_i}{\partial x_j}=b_{ij}
在固定其他条件不变时,\(b_{ij}\) 就是从 \(x_j\) 到 \(x_i\) 的直接因果效应。
  1. \(\partial x_i/\partial x_j\)结果 \(x_i\) 对原因 \(x_j\) 的偏导数,表示“你变多少,我跟着变多少”。
  2. \(b_{ij}\)从结构方程中估计出的直接因果强度。
  3. 固定其他变量偏导数的含义是控制其他因素不变,符合因果效应解释。
  4. 可解释性这个值可以直接写进归因报告,例如“xx指标每上升1%,故障概率贡献约 \(b\)”。

工程优化策略

ICA在理论上是优雅的,但在工程里就像调音师调试现场设备,总有一些细节决定成败。首先是选择非线性函数:如果数据偏向高峰度,也就是“尖锐且尾巴厚”,用 \(\tanh\) 往往稳定;如果数据分布比较平坦,则可以用三次函数:

工程中还应适当降维:先用PCA把主成分控制在合理范围,再做ICA,可以避免噪声分量干扰。分量数目的确定则依赖业务经验或启发式规则,比如保留累计解释方差达到某个比例。最后,ICA迭代结果受随机初始化影响,务必做多次运行和一致性校验。就像正式演出前的彩排,多试几遍才知道乐队的配合是否稳定。

gtanh⁡(u)=tanh⁡(u),gcube(u)=u3g_{\tanh}(u)=\tanh(u),\qquad g_{\mathrm{cube}}(u)=u^3
非线性函数就是度量非高斯性的“尺子”,不同尺子适合不同形状的数据。
  1. \(\tanh(u)\)平滑且有界,适合超高斯分布,对异常值没那么敏感。
  2. \(u^3\)三次方函数强调极端幅度,适合亚高斯或对峭度要求高的场景。
  3. 选择原则先看数据分布是“尖峰”还是“扁平”,再决定使用哪把尺子。
  4. 稳定性验证多次随机初始化后比较结果,若各次恢复成分一致,算法才可信。

AI 应用场景

脑电信号中的眼动伪迹去除

阶段:数据清洗与特征提取

解决的问题:脑电设备记录到的信号中混有眨眼、心跳等非脑电干扰,传统滤波很难去掉与脑电频率重叠的伪迹。ICA将多通道信号分解为独立源成分,自动识别并剔除眼动成分,保留干净的神经信号。

具体案例:某医院脑机接口研究组采集受试者视觉实验的EEG数据,利用ICA分离出典型眨眼波形并置零,随后重建脑电信号,使分类准确率提升了约15%。

金融市场的因果关系识别

阶段:因果推断与归因解释

解决的问题:经济学家想知道股票收益率之间的传导方向,但传统相关性只能给出“同涨同跌”的粗糙结论,无法说明谁领先谁。LiNGAM利用非高斯扰动和ICA分解,从高维时间序列中恢复因果顺序和影响强度。

具体案例:某量化团队对多个行业指数日收益率做LiNGAM因果发现,发现信息板块收益率往往是后续科技板块变动的原因,进而把该因果信息加入风险归因报告。

工业设备故障根因定位

阶段:异常检测与根因分析

解决的问题:工业现场多个传感器同时报警,故障信号互相耦合,难以区分“源头故障”和“连锁故障”。ICA先分离出独立故障源,LiNGAM再推断故障传播方向,工程师可以优先检修源头。

具体案例:某工厂压缩机系统出现振动异常,多路振动与温度信号经ICA分解后,识别出一个独立的轴承磨损源;LiNGAM显示该源先影响相邻轴振动,再影响电机电流。维修团队更换轴承后,连锁报警全部消失。

Python 演示

python65 行
import numpy as np  def whiten(X):    Xc = X - X.mean(axis=1, keepdims=True)    cov = Xc @ Xc.T / X.shape[1]    vals, vecs = np.linalg.eigh(cov)    vals = np.clip(vals, 1e-12, None)    Z = np.diag(1.0 / np.sqrt(vals)) @ vecs.T @ Xc    return Z  def _tanh(u):    return np.tanh(u)  def _tanh_deriv(u):    return 1.0 - np.tanh(u) ** 2  def fast_ica_unit(Z, w_start):    w = w_start / np.linalg.norm(w_start)    for _ in range(200):        u = w @ Z        g_u = _tanh(u)        gp_u = _tanh_deriv(u)        w_new = (Z * g_u).mean(axis=1) - gp_u.mean() * w        w_new -= (w_new @ w) * w        w_new /= np.linalg.norm(w_new)        if abs(abs(w_new @ w) - 1.0) < 1e-7:            break        w = w_new    return w  def fast_ica(Z, n_components):    W = np.zeros((n_components, Z.shape[0]))    for i in range(n_components):        rng = np.random.default_rng(20240601 + i)        w = rng.normal(size=Z.shape[0])        if i > 0:            w -= W[:i].T @ (W[:i] @ w)        W[i] = fast_ica_unit(Z, w)    return W  def main():    rng = np.random.default_rng(42)    n = 3    E = rng.laplace(size=(n, 20000))    B_true = np.array([[0.0, 0.0, 0.0],                       [0.7, 0.0, 0.0],                       [0.0, 0.6, 0.0]])    X = np.linalg.solve(np.eye(n) - B_true, E)    Z = whiten(X)    W = fast_ica(Z, n)    S_est = W @ Z    corr = np.abs(np.corrcoef(S_est, E)[:n, n:])    print("FastICA 恢复成分与真实扰动的绝对相关系数:")    print(np.round(corr, 3))    print("最佳匹配平均相关:", np.round(np.max(corr, axis=1).mean(), 3))  if __name__ == "__main__":    main()
目的:用从零实现的FastICA分离LiNGAM生成的非高斯混合信号,验证ICA能恢复独立扰动。
  1. whiten(X)对观测中心化并白化,让数据协方差变成单位阵。
  2. fast_ica_unit(Z, w_start)对单个方向做定点迭代,寻找最大非高斯投影。
  3. w_new -= (w_new @ w) * w当前方向与已有方向正交化,防止重复提取同一成分。
  4. B_true构造一个严格下三角的因果矩阵,模拟“第1个变量影响第2个,第2个影响第3个”。
  5. np.linalg.solve(np.eye(n) - B_true, E)由结构方程生成观测数据 \(\mathbf{x}=(I-B)^{-1}\mathbf{e}\)。
  6. np.corrcoef(S_est, E)把ICA恢复成分与真实独立扰动求相关,验证分离效果。

常见误区

误区我一直以为ICA就是PCA的升级版,只要把数据降维,提取出的几个主成分就是独立成分。

正解PCA追求的是最大方差和不相关,ICA追求的是统计独立性。PCA像把音量最大的声音排在前面,ICA则要真正把每个乐手拆开。不相关只是独立的一个必要条件,远不是充分条件。

为何常见:两者都做线性变换,也都常用于预处理和降维,初学者容易只看到表面的“分解”形式。

误区只要信号数量等于混合数量,ICA就能完美分离任意分布的源,高斯信号也没问题。

正解如果多个源都是高斯分布且混合矩阵正交不变式足够强,联合分布呈旋转对称,任何方向都没有“更非高斯”的线索,导致无法唯一分离。非高斯性既是ICA的动力来源,也是识别方向的关键。

为何常见:很多教程先讲混合矩阵和线性代数,容易让人忽略ICA的统计前提。

误区算法输出了3个成分,第一个一定是吉他,数值大小一定代表真实音量,可以直接拿去比较。

正解ICA存在固有的排列不确定性和缩放不确定性。算法可能先找到鼓,再找到吉他,且每个成分的幅度可以任意缩放。工程上需要通过业务知识或额外的约束,如LiNGAM的三角化约束,来消除这些歧义。

为何常见:结果输出成整齐的表格,看起来像有顺序和度量,容易让人忘记ICA本身并不保证这些属性。

误区ICA恢复出的成分一定对应现实中的一个声源或一个物理信号源,可以直接拿去当“真值”。

正解ICA基于线性瞬时混合假设。真实数据常包含噪声、延迟和非线性,恢复的成分只是统计意义上的独立投影,可能对应多个真实源的组合。把ICA成分直接等同于物理源,会导致错误结论。

为何常见:鸡尾酒会问题给人印象太深,让人以为ICA总是能完美还原“真实录音”。

误区既然LiNGAM能做因果发现,那么它一定也能处理隐藏的共同原因、反馈回路和离散数据。

正解经典LiNGAM假设因果图是有向无环的,不存在隐藏的共同原因,扰动是独立且非高斯的连续变量。如果数据中存在循环关系或未观测混淆因子,直接使用会得到错误因果结构。

为何常见:广告和论文摘要常常强调“非高斯让因果可识别”,却不强调这些严格的假设边界。

面试题

Q1. ICA的核心目标是什么?

单选题 · easy

  • A.最大化方差
  • B.最小化相关
  • C.最大化独立性← 正确答案
  • D.最大化相似度

答案:C。ICA通过线性变换让输出分量尽可能统计独立。最大化方差是PCA的目标,最小化相关只对应去相关,并不等于独立。

Q2. 在盲源分离场景中,“源信号”对应乐队比喻里的什么?

单选题 · easy

  • A.麦克风
  • B.乐手独奏← 正确答案
  • C.混音台
  • D.房间回声

答案:B。麦克风录到的是混合信号,乐手独奏才是需要恢复的独立源信号。混音台和回声都是混合过程中的干扰元素。

Q3. 为什么多路高斯混合信号无法被ICA唯一分离?

单选题 · mid

  • A.因为高斯分布无法求导
  • B.因为混合后不再是高斯
  • C.因为缺少非高斯方向线索← 正确答案
  • D.因为高斯源数量一定为1

答案:C。多个高斯源混合后仍是高斯的,且联合分布具有旋转对称性,没有方向能比另一个方向更非高斯,因此分离方向无法唯一确定。C直接说明了问题本质,B只是现象而非原因。

Q4. PCA与ICA最关键的区别是什么?

单选题 · mid

  • A.计算速度更快
  • B.PCA只去相关不求独立← 正确答案
  • C.ICA不需白化预处理
  • D.ICA能处理非线性混合

答案:B。PCA寻找方差最大的正交方向,只保证不相关;ICA寻找统计独立的非高斯方向。ICA通常也需要白化,并且标准ICA处理的是线性混合。

Q5. LiNGAM中的“非高斯”主要作用是什么?

单选题 · mid

  • A.让扰动具有零均值
  • B.使混合矩阵对称
  • C.提供因果方向识别依据← 正确答案
  • D.降低计算复杂度

答案:C。非高斯扰动使得通过ICA估计混合矩阵时方向可唯一识别,进而恢复因果顺序。零均值是常见假设但不是非高斯的作用。

Q6. ICA-LiNGAM如何消除ICA的成分顺序不确定?

单选题 · hard

  • A.对W做三角化排列← 正确答案
  • B.按峭度降序排序
  • C.按方差降序排序
  • D.按均值大小排序

答案:A。LiNGAM要求因果图有向无环,因此变换矩阵 \(I-B\) 是三角阵。通过对ICA结果进行三角化排列,可以同时确定变量顺序和因果结构。

Q7. DirectLiNGAM的核心思想是什么?

单选题 · hard

  • A.先做白化再做ICA
  • B.从残差中找外生变量← 正确答案
  • C.用深度网络做非线性ICA
  • D.用梯度下降优化B

答案:B。DirectLiNGAM每次找出最外生变量,回归后将它从其他变量中剔除,再对残差重复这一过程,避免了显式ICA的排列问题。

Q8. 使用FastICA前通常需要做哪些预处理?

多选题 · mid

  • A.中心化← 正确答案
  • B.白化← 正确答案
  • C.降序排列
  • D.信号高斯化

答案:AB。中心化让数据具有零均值,白化让协方差成为单位阵,两者都能加速和稳定ICA。降序排列是排序操作,高斯化会破坏非高斯信息。

Q9. 关于ICA的固有不确定性,正确说法是哪些?

多选题 · hard

  • A.成分顺序可以交换← 正确答案
  • B.成分幅度可以缩放← 正确答案
  • C.混合矩阵必然是正交阵
  • D.必须知道麦克风坐标

答案:AB。ICA不保证输出成分的排列和幅度,这是它的固有不确定性。混合矩阵不一定是正交阵,通常白化后才变为正交;麦克风坐标在标准ICA中并不需要。

Q10. 关于LiNGAM的模型假设,正确叙述有哪些?

多选题 · hard

  • A.因果图必须是有向无环图← 正确答案
  • B.变量可以是离散二进制
  • C.扰动相互独立← 正确答案
  • D.不存在隐藏共同原因← 正确答案

答案:ACD。LiNGAM要求线性有向无环结构、独立非高斯扰动,并且不允许未观测的混淆变量。模型面向连续变量,因此离散二进制变量通常不适用。