Jak wybrać liczbę komponentów do analizy niezależnych komponentów?

11

Wobec braku dobrych wstępnych domysłów na temat liczby komponentów, które należy zamówić w niezależnej analizie komponentów, chcę zautomatyzować proces selekcji. Myślę, że rozsądnym kryterium może być liczba, która minimalizuje globalne dowody korelacji między obliczonymi składnikami. Oto pseudokod tego podejścia:

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

Uważam, że powinno to automatycznie karać kandydatów większych niż „prawdziwa” liczba składników, ponieważ ICA wynikające z takich kandydatów powinny być zmuszone do rozpowszechniania informacji z pojedynczych prawdziwych składników wśród wielu szacowanych składników, zwiększając średni dowód korelacji między parami składników.

Czy to ma sens? Jeśli tak, to czy istnieje szybszy sposób na uzyskanie zagregowanej miary pokrewieństwa między szacowanymi składnikami niż sugerowane powyżej podejście do średniej logarytmicznej (które może być dość powolne obliczeniowo)? Jeśli to podejście nie ma sensu, jak mogłaby wyglądać dobra alternatywna procedura?

Mike Lawrence
źródło

Odpowiedzi:

6

Podejście do uczenia się przez zespół wariacyjny w ICA może wykonać to „automatyczne wykrywanie trafności”. Automatycznie wyłącza komponenty, które nie są wymagane do poprawienia powiązania z dowodem bayesowskim.

Zapoznaj się z dostępną tutaj tezą Jamesa Miskina , która wprowadza tę technikę.

Jest to bardzo starannie implementowane w Javie przez Johna Winna (kolejny doktor, który wdraża Bayesian Ensemble Learning za pomocą algorytmu przekazującego wiadomość).

Aby nauczyć się techniki, zdecydowałem się zaimplementować algorytm Winna w c ++, który można uzyskać stąd (aktywny rozwój).

Tomek
źródło
2

Jak mówi Tom, automatyczne określanie trafności jest dobrym podejściem do wyboru małego podzbioru elementów w modelu probabilistycznym.

Innym podejściem do ICA jest wcześniejsze zastosowanie indyjskiego procesu buforowania - Knowles i Ghahramani robią to w „Infinite Sparse Factor Analysis and Infinite Independent Components Analysis”.

użytkownik1149913
źródło