独立成分分析のために成分の数を選択するにはどうすればよいですか?


11

独立コンポーネント分析で要求するコンポーネントの数について事前に推測が適切でない場合、私は選択プロセスを自動化しようと考えています。合理的な基準は、計算されたコンポーネント間の相関関係の全体的な証拠を最小化する数であると思います。このアプローチの疑似コードは次のとおりです。

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は単一の真のコンポーネントからの情報を複数の推定コンポーネントに分散させ、コンポーネントのペア間の相関関係の平均的な証拠を増やす必要があるため、これはコンポーネントの「真の」数より大きい候補を自動的にペナルティ化するはずです。

これは理にかなっていますか?もしそうなら、上記で提案された平均対数尤度アプローチよりも推定されたコンポーネント間の関連性の集約メトリックを達成するより速い方法はありますか(これは計算的にかなり遅くなる可能性があります)?このアプローチが意味をなさない場合、適切な代替手順はどのようになるでしょうか?

回答:


6

ICAへの変分アンサンブル学習アプローチは、この「自動関連性検出」を行うことができます。ベイジアンエビデンスの範囲を改善するために必要でないコンポーネントは自動的にオフになります。

テクニックを紹介している James Miskinの論文(こちら)をご覧ください

これは、ジョンウィン(メッセージパッシングアルゴリズムを介してベイジアンアンサンブル学習を実装する別のPhD)によってJavaで非常に巧妙に実装されています。

このテクニックを学ぶために、ここから入手できるWinnのアルゴリズムをc ++に実装することにしました(アクティブ開発)。


2

トムが言うように、自動関連性決定は、確率モデルでコンポーネントの小さなサブセットを選択するための良いアプローチです。

ICAのもう1つのアプローチは、事前にインディアンビュッフェプロセスを使用することです。KnowlesとGhahramaniは、「無限スパース因子分析と無限独立成分分析」でこれを行います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.