Wie wähle ich die Anzahl der Komponenten für die Analyse unabhängiger Komponenten aus?

11

Da keine guten A-priori-Vermutungen über die Anzahl der in der Analyse unabhängiger Komponenten anzufordernden Komponenten vorliegen, möchte ich einen Auswahlprozess automatisieren. Ich denke, dass ein vernünftiges Kriterium die Zahl sein könnte, die den globalen Beweis für die Korrelation zwischen den berechneten Komponenten minimiert. Hier ist der Pseudocode dieses Ansatzes:

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

Ich denke, dies sollte automatisch Kandidaten bestrafen, die größer als die "wahre" Anzahl von Komponenten sind, da ICAs, die sich aus solchen Kandidaten ergeben, gezwungen sein sollten, Informationen von einzelnen wahren Komponenten über mehrere geschätzte Komponenten zu verteilen, was den durchschnittlichen Nachweis der Korrelation zwischen Komponentenpaaren erhöht.

Macht das Sinn? Wenn ja, gibt es einen schnelleren Weg, um eine aggregierte Metrik der Verwandtschaft über geschätzte Komponenten hinweg zu erreichen, als den oben vorgeschlagenen Ansatz der mittleren Log-Wahrscheinlichkeit (der rechnerisch ziemlich langsam sein kann)? Wenn dieser Ansatz keinen Sinn ergibt, wie könnte ein gutes alternatives Verfahren aussehen?

Mike Lawrence
quelle

Antworten:

6

Der Variational Ensemble Learning-Ansatz für ICA kann diese "automatische Relevanzerkennung" durchführen. Es werden automatisch Komponenten deaktiviert, die nicht erforderlich sind, um die Grenze für den Bayes'schen Beweis zu verbessern.

Schauen Sie sich die hier verfügbare These von James Miskin an , in der die Technik vorgestellt wird.

Dies wird von John Winn (einer weiteren Doktorarbeit, die das Bayesian Ensemble Learning über einen Message-Passing-Algorithmus implementiert) sehr kompetent in Java implementiert.

Um die Technik zu erlernen, habe ich mich entschlossen, den Winn-Algorithmus in c ++ zu implementieren, der hier erhältlich ist (aktive Entwicklung).

Tom
quelle
2

Wie Tom sagt, ist die automatische Relevanzbestimmung ein guter Ansatz, um eine kleine Teilmenge von Komponenten in einem Wahrscheinlichkeitsmodell auszuwählen.

Ein anderer Ansatz für ICA besteht darin, zuvor einen indischen Buffet-Prozess zu verwenden - Knowles und Ghahramani tun dies in "Infinite Sparse Factor Analysis und Infinite Independent Components Analysis".

user1149913
quelle