Comment sélectionner le nombre de composants pour une analyse indépendante des composants?

11

En l'absence de bonnes suppositions a priori sur le nombre de composants à demander dans Independent Components Analysis, je cherche à automatiser un processus de sélection. Je pense qu'un critère raisonnable pourrait être le nombre qui minimise les preuves globales de corrélation entre les composantes calculées. Voici le pseudocode de cette approche:

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

Je pense que cela devrait automatiquement pénaliser les candidats plus grands que le "vrai" nombre de composants, car les ICA résultant de ces candidats devraient être obligés de distribuer les informations provenant de vrais composants uniques sur plusieurs composants estimés, augmentant la preuve moyenne de corrélation entre les paires de composants.

Est-ce que ça a du sens? Dans l'affirmative, existe-t-il un moyen plus rapide d'obtenir une métrique agrégée de parenté entre les composantes estimées que l'approche logarithmique de la probabilité moyenne suggérée ci-dessus (qui peut être assez lente sur le plan des calculs)? Si cette approche n'a pas de sens, à quoi pourrait ressembler une bonne procédure alternative?

Mike Lawrence
la source

Réponses:

6

L'approche Variational Ensemble Learning de l'ICA peut faire cette «détection automatique de pertinence». Il désactive automatiquement les composants qui ne sont pas nécessaires pour améliorer la limite des preuves bayésiennes.

Jetez un œil à la thèse de James Miskin disponible ici , qui présente la technique.

Ceci est implémenté très clairement en Java par John Winn (un autre doctorat qui implémente l'apprentissage d'ensemble bayésien via un algorithme de transmission de messages).

Pour apprendre la technique, j'ai décidé d'implémenter l'algorithme de Winn en c ++ qui peut être obtenu à partir d' ici (développement actif).

À M
la source
2

Comme le dit Tom, la détermination automatique de la pertinence est une bonne approche pour sélectionner un petit sous-ensemble de composants dans un modèle probabiliste.

Une autre approche pour ICA consiste à utiliser un processus de buffet indien préalable - Knowles et Ghahramani le font dans «Infinite Sparse Factor Analysis et Infinite Independent Components Analysis».

user1149913
la source