如何选择独立成分分析的成分数量?

机器算法验证 独立成分分析
2022-03-09 00:02:24

在没有关于独立组件分析中请求的组件数量的良好先验猜测的情况下,我正在寻求自动化选择过程。我认为一个合理的标准可能是最小化计算组件之间相关性的全局证据的数字。这是这种方法的伪代码:

for each candidate number of components, n:
    run ICA specifying n as requested number of components
    for each pair (c1,c2) of resulting components:
        compute a model, m1: lm(c1 ~ 1)
        compute a model, m2: lm(c1 ~ c2)
        compute log likelihood ratio ( AIC(m2)-AIC(m1) ) representing the relative likelihood of a correlation between c1 & c2
    compute mean log likelihood ratio across pairs
Choose the final number of components as that which minimizes the mean log likelihood of component relatedness

我认为这应该会自动惩罚大于组件“真实”数量的候选者,因为由此类候选者产生的 ICA 应该被迫将来自单个真实组件的信息分布到多个估计组件中,从而增加组件对之间相关性的平均证据。

这有意义吗?如果是这样,是否有比上面建议的平均对数似然方法更快的方法来实现估计组件之间的相关性聚合度量(这在计算上可能相当慢)?如果这种方法没有意义,那么一个好的替代程序可能是什么样的?

2个回答

ICA 的变分集成学习方法可以做到这一点“自动相关性检测”。它会自动关闭不需要改进贝叶斯证据界限的组件。

看看 James Miskin 的论文,这里介绍了该技术。

这是由John Winn(另一位通过消息传递算法实现贝叶斯集成学习的博士 )在 Java 中非常巧妙地实现的。

为了学习这项技术,我决定在 c++ 中实现 Winn 算法,可以从这里获得(积极开发)。

正如 Tom 所说,自动相关性确定是在概率模型中选择一小部分组件的好方法。

ICA 的另一种方法是先使用印度自助餐过程 - Knowles 和 Ghahramani 在“无限稀疏因子分析和无限独立分量分析”中这样做。