Gestion des données manquantes en analyse des données (méthodologie)

Dans cet exposé méthodologique, Yamossoun Ayemou Bernard présente les enjeux et les solutions pour traiter les données manquantes dans les analyses factorielles multivariées. Après une introduction aux problèmes classiques (suppression d’observations, imputation par la moyenne) et leurs limites, il décrit l’analyse factorielle multiple (AFM) comme cadre d’étude de tableaux de données structurés en blocs (exemple sensoriel de vins de la Loire avec jurys d’experts, de consommateurs et d’étudiants). Il montre comment estimer les axes d’une ACP (analyse en composantes principales) lorsqu’il manque des valeurs, en détaillant l’algorithme itératif d’imputation basé sur la reconstruction par les composantes principales, puis expose les risques de sur‑ajustement liés au choix du nombre de dimensions S. Pour pallier ces problèmes, il introduit la version régularisée de l’ACP itérative, qui applique un shrinkage des valeurs propres (interprétation bayésienne, estimation du bruit σ²) afin de réduire le bruit et d’améliorer la prédiction. Il compare cette méthode aux approches classiques (NIPALS, imputation par moyenne, forêts aléatoires) et discute de leurs performances selon le degré de linéarité des relations entre variables. L’exposé se conclut sur les bonnes pratiques pour choisir S, appliquer la régularisation et exploiter les tableaux imputés dans d’autres analyses.
Chapters
Bonjour, donc je vais vous faire un exposé plutôt méthodologique sur la gestion des données manquantes en analyse des données. Donc ça reprend des travaux que j'ai réalisés avec Julie Joss au laboratoire de mathématiques appliquées d'Agrocampus à Rennes et c'est un exposé que j'ai réalisé aux Rencontres des jeunes statisticiens à Auxois en août 2013. Donc le plan de l'exposé sera le suivant: je vais d'abord faire une rapide introduction sur les données manquantes, ensuite je vais présenter l'analyse factorielle multiple qui est une méthode d'analyse des données dans le cas complet et ensuite on va voir comment réaliser une ACP en présence de données manquantes, donc comment estimer les axes et composantes de l'ACP et comment étendre ça ensuite à l'analyse des correspondances multiples ou encore à l'analyse factorielle multiple. Donc le contexte: on a un tableau de données avec des individus en ligne, des variables en colonne et ce qu'on veut c'est réaliser une étude statistique sur ce tableau de données. Avant toute étude statistique, il est toujours intéressant d'explorer les données, donc d'utiliser une méthode exploratoire. Quand on a 2 variables, on va construire un nuage de points. Quand on a plusieurs variables, on va réaliser une analyse factorielle comme par exemple une ACP quand on a des variables quantitatives, une ACM quand on a des variables qualitatives ou encore une AFM, une analyse factorielle multiple, quand on a des variables qui sont structurées en groupes. L'inconvénient, c'est que bien souvent dans le tableau de données, il y a des données qui sont manquantes parce qu'on a perdu l'information, parce qu'un appareil est tombé en panne, parce qu'il y a de multiples raisons, parce qu'un individu n'a pas voulu répondre. Et donc on a un tableau avec des observations et des données manquantes. Et ce qu'on cherche avec les méthodes d'analyse factorielle, c'est de visualiser l'ensemble des données. Alors comment faire pour mettre en œuvre une analyse factorielle quand on a un tableau de données incomplet? Une première possibilité, pas très satisfaisante, c'est de supprimer les individus qui ont des données manquantes. Alors c'est rarement intéressant parce que récolter des données c'est souvent coûteux, ça prend du temps et supprimer les individus qui ont des données manquantes ça revient à supprimer malgré tout des données, de l'information qu'on avait récupérée. Donc c'est jamais très satisfaisant. Maintenant, si on a très peu de données manquantes et si par ailleurs on a beaucoup de données, on peut éventuellement supprimer les quelques individus qui ont des données manquantes. Une autre solution, c'est d'imputer par la moyenne. C'est ce qui est fait dans certains logiciels, notamment des logiciels qui font de l'analyse de données. Alors, est-ce que c'est satisfaisant? Un petit exemple avec 2 variables.
X et Y.
Donc j'ai des individus qui sont en noir, ce sont des individus pour lesquels j'ai l'information sur X et sur Y. Et puis des individus en vert et en rouge sont des individus pour lesquels j'ai une seule information et puis l'information que je n'ai pas, je l'ai imputée par la moyenne. Donc par exemple, les points en rouge, j'avais la donnée manquante sur X et donc j'ai imputé la valeur manquante par la moyenne de X. Et les points en vert, il y avait une donnée manquante sur Y et j'ai imputé la donnée manquante par la moyenne de Y. Et donc on voit tout de suite avec ce graphique que l'imputation par la moyenne va complètement perturber les liaisons qu'il peut y avoir entre les variables X et Y. Et donc c'est vraiment pas satisfaisant d'utiliser l'imputation par la moyenne si on est en train d'étudier les liaisons entre X et Y. Or c'est ce que font les méthodes d'analyse factorielle. Étudier les liaisons entre les variables pour mettre en évidence des ressemblances ou des différences entre individus. Donc on voit que l'imputation par la moyenne n'est pas satisfaisante du tout. Je vais m'intéresser maintenant à l'analyse factorielle multiple et décrire l'analyse factorielle multiple dans le cas complet avant de m'intéresser à l'analyse factorielle dans le cas incomplet. L'analyse factorielle gère les tableaux multiples. Ce sont des tableaux pour lesquels on a des individus en ligne et des variables qui sont structurées par blocs en colonnes. Alors pourquoi ces tableaux-là sont de plus en plus fréquents? Parce qu'on cherche de plus en plus souvent à décrire des problèmes de plus en plus complexes dans lesquels on a des informations qui proviennent de différentes sources. Et donc comment prendre en compte ces différentes sources? Un moyen, c'est de considérer une source comme un tableau de données. Donc on va juxtaposer les tableaux de données et essayer de faire une analyse avec l'ensemble des tableaux de données. Par exemple, en analyse sensorielle, les individus sont des produits alimentaires par exemple et on va les décrire par des variables sensorielles mais également des variables physico-chimiques. Des variables sensorielles où on va demander à des personnes de décrire les produits d'un point de vue sensoriel et des variables physico-chimiques où on va faire des mesures avec des instruments de mesure. Et ce qui va être intéressant, ça va être de prendre en compte simultanément les 2 informations et de voir les caractéristiques communes mises en évidence par les variables sensorielles et les variables physico-chimiques. Un autre type d'exemple où on s'intéresse à des enquêtes. On a des individus, des enquêtés en ligne et puis en colonne on a un questionnaire qui est structuré en thèmes avec différentes questions et ces questions peuvent être regroupées en différents thèmes. Donc par exemple, un questionnaire sur la santé des étudiants où on avait plusieurs questions sur la consommation de produits tels que des drogues, des cigarettes, de l'alcool. Un autre type de questions sur les conditions psychologiques de l'étudiant, des questions sur la qualité de son sommeil et puis des questions sur le signalétique avec des questions comme sur son âge, son sexe, etc. Donc ce qu'on va vouloir, c'est faire une analyse qui prenne en compte les différents types de questions, les différents thèmes, voir les liaisons, les ressemblances qu'il peut y avoir entre les différents thèmes et puis les spécificités liées à chaque thème. En biologie, on peut avoir des patients en ligne et puis de l'information provenant de données de génome et de l'information provenant de données de transcriptome. Quelle est l'information commune apportée par ces 2 types d'informations? Quelle est l'information spécifique? Pour en savoir plus sur l'AFM, vous pouvez voir l'ouvrage de Brigitte Escoffier et Jérôme Pagès. L'AFM va prendre en compte des groupes de variables quantitatives, des groupes de variables qualitatives ou encore des tableaux de fréquences et puis faire une analyse avec ces différents types de variables. Alors je vais m'intéresser pour illustrer l'AFM à une description sensorielle de vins de Loire. Donc on a 10 vins du Val de Loire, 5 Vouvray et 5 Sauvignon, et il y a une description sensorielle qui a été faite. Donc on demande aux gens d'évaluer l'acidité, l'amertume, l'odeur d'agrumes de chacun des vins. On voit ici une description sensorielle qui est réalisée et donc on aboutit à un tableau avec en ligne les vins, en colonne les descripteurs sensoriels et puis dans une case la note moyenne mise par le jury pour un vin et un descripteur sensoriel particulier.
Puis il y a une dernière colonne qui correspond au cépage: Sauvignon ou Vouvray.
Donc ça c'est quand on a un jury sensoriel et moi je vais m'intéresser à une description faite par plusieurs jurys sensoriels. Donc on a nos 10 vins de Loire et on a 3 jurys: un jury d'œnologues, un jury de consommateurs et un jury d'étudiants. Et ce qu'on va vouloir voir, c'est quelle est la description des vins faite par ces 3 jurys et puis quelle est la spécificité de chacun de ces jurys. Est-ce que ces différents jurys décrivent les vins de la même façon ou pas? Par ailleurs, on a aussi des notes d'appréciation de consommateurs. Donc on a demandé à 60 consommateurs d'évaluer chacun des vins et de mettre une note d'appréciation globale. Donc on a un tableau de données avec 60 variables correspondant aux 60 consommateurs et une dernière variable qui correspond aux cépages. Donc on a un tableau de données structuré en blocs avec un premier bloc de variables qui correspond à la description sensorielle faite par les experts. Donc ils avaient utilisé 27 descripteurs sensoriels. Un deuxième bloc fait des variables sensorielles des consommateurs. Il y avait 15 variables, un bloc d'étudiants avec 15 variables, des variables d'appréciation, on avait 60 consommateurs et une variable qualitative de cépage, donc un groupe fait d'une seule variable. Donc pour comparer les 3 jurys experts, consommateurs et étudiants, on va prendre en compte pour construire les dimensions factorielles ces 3 premiers groupes de variables. Et puis les autres variables seront mises comme groupes de variables supplémentaires Ils ne vont pas servir à construire les axes mais on verra s'ils sont liés à la description des vins. Donc la principale question est: comment peut-on décrire les vins? Les questions complémentaires sont: est-ce que les vins sont décrits de la même façon par les 3 jurys ou alors y a-t-il des spécificités? Est-ce que les œnologues caractérisent les vins de façon très différente par rapport aux consommateurs ou aux étudiants? Alors l'objectif général de l'AFM, ça va être d'étudier les ressemblances entre les individus, donc dans notre cas les ressemblances entre les vins, du point de vue de l'ensemble des variables, les variables de l'ensemble des groupes. Et puis c'est également de mettre en relation les différentes variables, de voir s'il y a des relations entre les différentes variables. Donc ça, ce sont les objectifs classiques en ACP. Mais dans l'AFM, on a évidemment une structure en groupes qu'on a envie de prendre en compte et donc on va vouloir trouver une représentation commune des vins, une représentation commune à tous les groupes et aussi voir les spécificités de chaque groupe. Alors ça va revenir finalement, l'AFM, à comparer les typologies obtenues par chaque groupe de variables. Donc ça revient à comparer les ACP de chaque jury. Donc on a une typologie, caractérisation des vins par un jury, par le 2ème jury, par le 3ème jury et l'AFM va permettre de comparer ces différentes typologies. Alors le principe de l'AFM, ça va être en fait d'équilibrer l'influence de chaque groupe de variables. Dans l'équilibre, l'AFM c'est finalement une ACP pondérée avec une pondération particulière. Donc on va pondérer par la 1ère valeur propre de chacun des groupes. Donc on va calculer la 1ère valeur propre de chaque groupe en faisant l'ACP d'un groupe et on calcule la première valeur propre. Et ensuite on va diviser les données d'un groupe par la racine carrée de cette valeur propre. Alors comme on divise toutes les données d'un groupe par une même valeur, on garde la structure du groupe mais par contre d'un groupe à l'autre ça va permettre d'équilibrer l'information apportée par chaque groupe. Donc s'il y a un groupe qui a une information très forte avec une valeur propre très forte, ça va éviter que ce groupe-là construise à lui seul la première dimension de l'AFM. On va ramener l'information principale de ce groupe à 1 en divisant par la racine carrée de la première valeur propre exactement comme l'information d'un autre groupe sera ramenée à 1 même si ce groupe est moins structuré. Donc l'objectif principal de l'AFM c'est d'équilibrer l'influence de chaque groupe de variables dans la construction des axes, notamment du premier axe. Donc le résultat de l'AFM, ça va être une représentation des individus. Ici, en haut à gauche, on a le graphe des vins avec les vins Sauvignon en rouge, les vins Vouvray en vert. Donc on voit que les vins Sauvignon sont très proches, ont une caractérisation qui est très proche d'un vin à l'autre. Alors que les vins Vouvray sont plus différents. Et puis sur le graphe de droite, on a le graphe des variables avec tous les descripteurs sensoriels. Donc ce graphe est très chargé parce qu'on a beaucoup de variables mais aussi parce que l'information est très riche ici. Et donc ces 2 représentations, on les décrit exactement comme en ACP. Donc on va dire que le vin Aubusière Silex en bas à gauche est un vin qui est très sucré puisqu'il a la variable variable sucré qui est en bas à gauche pour le cercle des corrélations. Alors si je simplifie un peu le graphe et que j'enlève certains libellés, on voit que pour la saveur sucrée par exemple, les 3 flèches correspondant à la saveur sucrée vues par chacun des jurys sont très proches et donc il y a une liaison forte: la saveur sucrée est perçue de la même façon par les 3 jurys. Par contre, pour l'acidité, on voit qu'il y a des différences: le jury expert n'évalue pas l'acidité comme les autres jurys. Les 2 autres jurys. Donc ça c'est l'interprétation qui est faite comme en ACP. On peut aussi avoir une comparaison synthétique de l'ensemble de l'information portée par chaque groupe de variables et donc voir un graphe des groupes. Donc on a un point qui correspond à un groupe de variables: le groupe expert, le groupe des étudiants et le groupe des consommateurs.
On voit que la coordonnée sur le premier axe très proche de 1.
Ça signifie que les différences qui sont observées sur le premier axe de l'AFM, les différences entre les vins, on les retrouve chez les experts, chez les étudiants et chez les consommateurs. Ces 3 groupes, ces 3 jurys différencient les vins par rapport à la première dimension de l'AFM. Par contre, pour la deuxième dimension, eh bien elle est surtout liée aux experts. Donc c'est surtout les experts qui différencient les vins par rapport à la deuxième dimension. Et on peut voir que les étudiants sont plus proches des experts que les consommateurs par exemple. Il y a une autre représentation en AFM qui est la représentation dite superposée où on va avoir sur un même graphe les points, les vins vus par l'ensemble des jurys, ce sont les points en noir ici, et puis ensuite les points, les individus vus par chacun des jurys. Donc c'est ce qu'on appelle un point partiel. Le point partiel ici en bleu, c'est le vin Aubussières Silex vu par uniquement le jury de consommateurs. Le point rouge, c'est le point vu par les experts, ce vin vu par les experts. Donc on peut voir que les consommateurs, les experts et les étudiants voient ce vin comme très différent des autres. Ils le voient tous en bas à gauche. Donc il y a un consensus, tout le monde caractérise ce vin à peu près de la même façon. La petite araignée ici avec les points partiels reliés au point moyen, toutes les araignées sont assez petites, ça signifie que chaque individu, chaque vin est perçu à peu près de la même façon par chacun des jurys. Ce ne serait pas le cas si on avait des araignées très grosses, si les points partiels étaient très éloignés Je peux représenter comme variable supplémentaire les préférences des consommateurs. On voit ici que les flèches sont assez longues sur le cercle des corrélations, ça signifie que la préférence est assez liée à la description sensorielle, donc aux axes de l'AFM. Et donc les préférences sont plutôt en bas à gauche, c'est-à-dire que les consommateurs apprécient surtout les vins sucrés. Il y a très peu de consommateurs qui apprécient les vins en haut à droite, les vins très peu sucrés. Et donc les vins en bas à gauche sont appréciés, c'est-à-dire le vin Aubuisières Silex est un vin qui est très apprécié. Ça, c'est une information intéressante de cet exposé, c'est que le Vouvray Aubuisières Silex est le vin le plus apprécié ici. C'est un vin qui était sucré. Alors pour les données manquantes, en AFM, on peut avoir des données manquantes très particulières avec un dispositif de données manquantes qui est très particulier. On peut avoir des données manquantes pour un individu et toutes les variables d'un groupe. Donc on a des données manquantes avec une case grisée ici qui signifie qu'on a la donnée manquante pour toutes les variables du groupe. On peut aussi avoir des données manquantes de-ci de-là, mais il y a ce dispositif de données manquantes particulier à l'AFM qui est assez fréquent. Alors faire une AFM avec des données manquantes, comme l'AFM c'est une ACP particulière, il faut qu'on sache faire une ACP sur un jeu de données incomplet. Donc on va commencer par voir comment estimer les axes et composantes d'une ACP sur un tableau de données incomplet. Alors l'ACP, on peut le voir de différentes façons. On le voit souvent comme la maximisation des points projetés d'un point de vue géométrique. On peut aussi le voir comme la minimisation de l'erreur de reconstitution. Donc on va chercher à approcher une matrice X de données par une matrice de rang inférieur X chapeau. Et donc on a que l'écart entre X et la matrice de rang inférieur X chapeau doit être minimum. Et il est minimum si X chapeau est construit avec F les composantes principales et U les axes principaux qu'on va obtenir par la décomposition en valeurs singulières de la matrice.
On peut aussi voir l'ACP avec un point de vue de modèle en considérant le modèle à effet fixe de cosinus. Alors le modèle de cosinus est le suivant: on dit que la matrice de données X s'écrit comme une matrice de signal X tilde plus un bruit epsilon. On décompose signal plus bruit. Donc le vrai signal X tilde ij, je peux le décomposer aussi avec une matrice F tilde et une matrice U tilde. Donc je vais écrire f tilde u tilde prime plus epsilon. Et je peux estimer les f et u par maximum de vraisemblance, ça revient à faire une estimation par moindres carrés. Donc l'ACP, c'est finalement une méthode de moindres carrés: on va chercher f et u qui minimisent ², la norme de ², et avec des données manquantes, on va considérer des moindres carrés pondérés. Donc ça va revenir à introduire une matrice W qui prend la valeur 0 si la donnée observée est manquante. Donc Wij= 0 si Xij est manquant et Wij= 1 si Xij est présent. Donc en fait on va minimiser les moindres carrés uniquement sur les données observées. Alors il y a plusieurs algorithmes de moindres carrés pondérés alternés. Ou l'algorithme d'ACP itérative qui permettent de trouver F et U avec une matrice W. Alors je vais présenter l'algorithme d'ACP itérative sur un exemple très simple en 2 dimensions. Donc j'ai 5 individus: 4 individus ont des données sur X1 et X2 et un individu a une donnée manquante sur X2. Donc j'ai juste l'information sur X1 ici. Alors dans un premier temps, je vais imputer la donnée manquante par la moyenne de la variable et donc je peux représenter les données avec les 4 points noirs plus le point rouge. Je peux maintenant faire une ACP sur ce tableau de données. Je vais conserver uniquement une dimension pour avoir un espace de dimension réduite. Je suis dans un espace à 2 dimensions au départ, je considère un espace à une seule dimension. L'ACP en conservant une dimension, c'est une droite et j'ai les 5 points rouges qui correspondent à la projection de mes individus sur la droite d'ACP. Donc le point qui avait une donnée manquante se projette sur ce point rouge ici de la droite. Et donc ce point a pour coordonnées 1 sur x1 et 0.57 sur x2. Alors ce 0.57, je vais le considérer comme nouvelle imputation du jeu de données. Donc au départ je suis parti de l'imputation par la moyenne et maintenant je vais construire un nouveau jeu de données X avec les données observées et là où j'avais une donnée manquante, je vais récupérer la donnée reconstituée par la droite d'ACP. Donc je me retrouve avec le point vert, donc j'ai les 4 points noirs plus le point vert. Je vais construire l'ACP. Donc j'ai construit la droite d'ACP. J'ai le point vert qui se projette sur le point vert ici de la droite. Donc j'ai une estimation de X2 chapeau qui vaut 0.90 maintenant pour le point qui a une donnée manquante et je vais récupérer ce 0.90 pour compléter mon jeu de données. Ça me donne le point bleu et je vais itérer jusqu'à convergence. Et à convergence, mon point qui a une donnée manquante, je l'impute par 1.46 et j'ai la droite d'ACP qui est obtenue finalement. Je pars d'un jeu de données qui a une donnée manquante, j'ai complété le tableau de données, imputé, complété, imputé, etc. jusqu'à convergence. À convergence, j'ai un tableau imputé et une droite d'ACP. Plus formellement, l'algorithme est le suivant: j'initialise les données manquantes par une valeur, par exemple l'imputation par la moyenne et ensuite je réalise l'ACP sur le tableau qui a été complété. J'ai donc des axes et composantes, je conserve S dimensions seulement, les S premières dimensions, et puis je vais imputer par la reconstitution de l'ACP, donc par la droite d'ACP ou par le plan d'ACP si je garde 2 dimensions. Je vais avoir un nouveau tableau de données avec là où j'ai les données observées, je garde les données données observées, donc les X quand j'ai les données observées, et les X chapeau, donc les données reconstituées par l'ACP quand j'avais des données manquantes. Ça me donne un nouveau tableau de données. Ce nouveau tableau de données, je dois réestimer la moyenne et l'écart-type de chaque variable, donc mettre à jour moyenne et écart-type de chaque variable. Et puis donc j'ai un nouveau tableau de données complété et je vais itérer jusqu'à Donc il me faut absolument trouver S, le nombre de dimensions qui seront utilisées pour reconstituer les données. Donc cet algorithme peut être vu comme un algorithme EM du modèle à effet fixe de cosinus et c'est un algorithme qui est à la base de nombreuses méthodes d'imputation qui ont été utilisées pour faire ce qu'on appelle la matrice compression en anglais. De nombreuses méthodes qui dérivent de cette méthodologie qui ont été utilisées pour le projet Netflix par exemple. Alors une remarque, c'est qu'il y a une réduction de la variabilité puisqu'on impute par f. Donc la variabilité des données imputées est plus faible que la variabilité des données observées puisqu'on projette sur le sous-espace de l'ACP. Alors il y a un problème pour ces méthodes, c'est un problème de surajustement que je peux illustrer de la façon suivante. Donc là j'ai simulé des données en simulant un signal f que je connaissais et puis j'ai rajouté du bruit gaussien avec un écart-type de 0,5. Et donc là j'ai fait l'ACP sur ces données, donc sur les données bruitées. Ensuite j'ai rajouté 50% de données manquantes et j'ai refait l'ACP. Itérative. Et donc ce qu'on voit c'est une représentation graphique qui n'est pas très jolie avec quelques points qui partent très loin. En regardant de plus près, on voit qu'on a une petite erreur d'ajustement, c'est-à-dire que sur les données pour lesquelles j'ai l'observation, l'erreur est petite, c'est l'erreur d'ajustement puisque j'ai les données. Et par contre les erreurs pour les données manquantes sont très grandes. Alors ici je peux les calculer ces erreurs parce que je savais la valeur du signal. Et l'erreur ici vaut 5,58. Donc 5,58, c'est très grand comparé aux 0,48 qui est l'erreur d'ajustement. Donc l'erreur d'ajustement est comparable à l'écart-type du bruit que j'avais mis au départ, à la variance du bruit pardon que j'avais mis au départ. Par contre, l'erreur de prédiction est beaucoup trop grande. Donc on a une erreur d'ajustement très petite et une erreur de prédiction qui est très grande. Donc ça, ça fait vraiment penser à un problème de surajustement. Et donc là, on est comme d'habitude en statistiques. C'est que quand on estime beaucoup de paramètres par rapport au nombre de données observées, eh bien on a un problème de surajustement. Et donc ça, ça arrive si on a un nombre de dimensions S qui est trop grand. Si on a trop de dimensions, on est amené à estimer beaucoup de paramètres et donc on risque d'avoir un problème de surajustement. Et puis un problème de surajustement aussi si on a beaucoup de données manquantes parce que dans ce cas-là on aura peu de données. Alors ça arrive aussi quand les données sont très bruitées. Quand les données ne sont pas très structurées, on va avoir des problèmes de surajustement parce que finalement on va croire à des liaisons entre variables et ces liaisons entre variables sont factices finalement. On a peu d'informations et avec ce peu d'informations on croit tout de suite en la liaison. Et donc si la liaison est très faible, on y croit quand même. On est dans le cas où les données manquantes, c'est finalement la même chose que quand on fait des statistiques classiques et où on a des petits jeux de données, des risques de surajustement, de surparamétrisation.
Parce que finalement la CP itérative c'est un peu comme une méthode de prédiction classique.
Et donc la solution en statistiques classiquement c'est d'aller vers des méthodes régularisées. Eh bien là ça va être la même chose, la solution sera d'utiliser une méthode régularisée de la CP itérative. Alors je vais vous présenter la CP itérative régularisée dans le cas complet avant de parler d'ACP itérative régularisée. Donc je reprends le modèle de cosinus où on a nos données qui peuvent s'écrire comme un signal plus du bruit. Donc je vais chercher un paramètre phi_s tel que le X chapeau se rapproche le plus possible non plus de X mais du signal puisque c'est ce que je veux, c'est trouver des axes et composantes qui vont permettre de décrire non pas directement mes données mais ce qu'il y a derrière mes données: le signal. On peut montrer que le paramètre phi dépend de chaque dimension de l'ACP et il peut s'écrire comme le rapport entre la variance du signal sur la dimension s divisée par la variance totale de cette dimension. Donc lambda tilde s, c'est la valeur propre du signal, la sième valeur propre du signal, et lambda tilde S plus sigma carré, c'est la variance du signal plus la variance du bruit, donc c'est la variance totale. Donc ça, on peut le réécrire finalement lambda S, la valeur propre, la sième valeur propre du jeu de données, moins la variance du bruit. Donc j'ai variance totale moins variance du bruit, c'est-à-dire la variance du signal, divisé par lambda S, la variance totale. Donc ça, c'est sur les s premières dimensions. Et puis sur les dimensions suivantes, je sais que j'ai pas de signal. Le signal vaut 0 sur les dimensions suivantes. Donc ce que je veux, c'est un phi_s qui sera égal à 0. C'est ça qui va minimiser l'erreur quadratique moyenne. Donc pour s plus grand que S, eh bien je prends phi^s= 0. Ça signifie que je vais vouloir ne conserver que les s premières dimensions. Donc finalement, si je regarde le X chapeau de l'ACP, je peux l'écrire comme F U' et donc avec des indices ça va être Fis Ujs, la somme sur s des Fis Ujs, et je peux faire apparaître la valeur propre, la valeur singulière plutôt, qui est la racine carrée de la valeur propre. De la dimension s, donc c'est racine de lambda_s phi_s divisé par la norme de f_s u_j,s.
Donc là j'ai juste fait apparaître la valeur propre.
Et donc en faisant apparaître cette valeur propre, on voit que pour l'ACP régularisée, au lieu de prendre la valeur propre, on va prendre une valeur propre shrinkée. On enlève une quantité, donc au lieu d'avoir racine de lambda_s, on va avoir racine de lambda_s moins sigma chapeau carré sur racine de lambda_s. Donc on va enlever une certaine quantité à chaque valeur propre et cette quantité sera proportionnelle à la valeur propre. Et cette quantité dépend de la valeur propre. Alors on a un compromis finalement entre un seuillage doux et un seuillage dur. Seuillage doux parce qu'on enlève une quantité à chaque valeur propre et seuillage dur, on s'arrête uniquement aux s premières dimensions. Et alors qu'est-ce qui se passe? Finalement, si on regarde les coefficients en bleu ici, c'est que racine de lambda_s moins sigma chapeau carré sur racine de lambda_s de lambda_s. Eh bien, si sigma carré est petit, c'est proche de racine de lambda_s, donc l'ACP régularisée est proche de l'ACP. Au contraire, si sigma carré est grand, cette quantité en bleu est proche de 0 et donc l'ACP régularisée va avoir tendance à être proche de 0, c'est-à-dire du centre de gravité. Alors il reste à estimer le sigma chapeau carré. Le sigma chapeau carré, on va l'estimer comme somme des carrés des résidus divisée par les degrés de liberté qui constituent Donc on va prendre, pour calculer la somme des carrés des résidus, on va prendre les dernières dimensions et diviser par le nombre de données moins le nombre de paramètres estimés. Alors on peut aussi avoir une interprétation bayésienne du modèle à effets fixes. Donc on reprend le modèle de cosinus et puis on met des a priori sur les f. En mettant des a priori sur les f, on va construire une ACP bayésienne qui va redonner ce paramètre de shrinkage sigma chapeau carré sur racine de lambda_s. On va voir le lien qu'il peut y avoir entre ACP bayésienne et ACP régularisée. Je ne rentre pas dans le détail ici, je vais plutôt m'intéresser à l'ACP itérative régularisée. L'ACP itérative régularisée, ça va être Exactement le même algorithme que l'ACP itérative: j'ai une étape d'initialisation, ensuite une étape d'estimation par ACP, puis une étape d'imputation. Et l'étape d'imputation, au lieu d'utiliser la formule que j'avais tout à l'heure, je vais remplacer racine de lambda_s par racine de lambda_s moins sigma chapeau carré sur racine de lambda_s. Donc je vais avoir une étape d'imputation régularisée. L'intérêt, ça va être finalement de supprimer le bruit, L'idée derrière c'est ça, c'est supprimer le bruit pour éviter une instabilité dans les prédictions. Et ça donne de meilleurs résultats qu'uniquement un seuillage doux, ce qui est proposé par Matsumura, Asti et Tipshirani. Ils font un seuillage doux, c'est-à-dire qu'ils gardent toutes les dimensions et puis ils enlèvent une même quantité aux valeurs singulières. Nous, on n'enlève pas une même quantité aux valeurs singulières et puis on arrête après S dimensions. Et donc les résultats sur le petit exemple que j'avais tout à l'heure: avec l'ACP itérative régularisée, l'erreur d'ajustement vaut 0,52 donc c'est légèrement plus grande que pour l'ACP itérative mais par contre l'erreur de prédiction est beaucoup plus faible, c'est-à-dire qu'on va beaucoup mieux prédire par rapport à l'algorithme d'ACP itérative. Où on avait une erreur de prédiction qui valait 5,58. Alors les résultats de l'ACP itérative régularisée, les propriétés: il y a de meilleures performances quand on a une structure forte sur les données, donc quand il y a de fortes liaisons sur les variables, on peut apprendre grâce aux autres variables et donc on a de bons résultats pour l'ACP itérative régularisée. La régularisation est indispensable quand il y a des données très bruitées, quand il y a des données manquantes. Maintenant, quand on a des données vraiment très bruitées avec beaucoup de données manquantes, on n'a pas beaucoup d'informations et donc on va finir par imputer par des choses qui sont proches de la moyenne. Si on n'a pas d'informations, on impute par la moyenne. De plus, si on choisit mal le nombre de dimensions pour reconstituer les données, le nombre S, la régularisation va limiter un mauvais choix de S. Si on a pris S un peu trop grand, ce sera pas trop grave alors qu'avec l'ACP itérative on va avoir un problème de surajustement. Et puis enfin il y a de bien meilleures performances que l'algorithme Nipals qui est pourtant un algorithme qui est très utilisé et qui est vendu par de nombreux logiciels. Alors dans l'ACP itérative régularisée, il y a une imputation qui est réalisée en cours d'algorithme et cette imputation est de bonne qualité. Elle prend en compte les ressemblances entre les individus et les liaisons entre les variables donc elle apprend grâce aux ressemblances entre individus et grâce aux liaisons entre les variables. Et donc ce tableau imputé peut être utilisé pour d'autres analyses statistiques. Ce que je disais, l'imputation est de bonne qualité, elle est supérieure aux méthodes d'imputation comme le seuillage doux proposé par Hastie-Dipshirani. C'est à peu près de même qualité que les forêts aléatoires, voire de meilleure qualité quand les liaisons sont linéaires. Quand on a des liaisons linéaires entre variables.
Par contre, ça marche moins bien quand on a des liaisons fortement non linéaires.
Alors comment choisir maintenant le nombre de dimensions? Eh bien, une idée c'est de se dire qu'on a à notre disposition un algorithme qui permet d'imputer les données. Eh bien, on va mettre une donnée manquante supplémentaire par rapport à notre jeu de données qui a des données manquantes. Donc la case en rouge ici, c'est une donnée manquante que je rajoute. Et ce que je vais faire, c'est que je vais imputer par ACP itérative cette donnée manquante et toutes les autres données manquantes. Mais cette donnée manquante, je vais la regarder et je vais voir l'écart par rapport à la valeur observée. Et je vais imputer avec 1 dimension, je vais imputer avec 2 dimensions, 3, 4, 5, etc. Et je vais voir quel est le nombre de dimensions qui minimise l'écart entre les observations et la prévision. Alors évidemment, je vais le faire pour toutes les données. Observées du tableau en les prenant une par une. Alors évidemment c'est très long et finalement, comme en régression, on peut réécrire l'erreur de prédiction que je note Y^i- Y. Donc ça veut dire que je prédis la donnée i en construisant un modèle sans la donnée i. Je peux l'écrire grâce à l'ajustement Y^i. Donc en fait je vais avoir à estimer une seule fois tous les Y chapeaux et à partir de cette matrice P je vais pouvoir déterminer l'erreur de prédiction. Donc à partir de l'erreur d'ajustement, je peux écrire l'erreur de prédiction, déterminer l'erreur de prédiction. Eh bien en ACP, c'est la même chose: on peut écrire X chapeau à partir d'une matrice P et de notre matrice X et donc on va pouvoir écrire l'erreur de prédiction à partir de l'erreur d'ajustement. On ne peut pas écrire une égalité ici, c'est juste une approximation qui va nous permettre de construire un critère qui approche le critère de validation croisée pour sélectionner le nombre de dimensions S. Et donc on a un critère de validation croisée généralisée qui dépend de l'erreur d'ajustement, donc c'est le numérateur ici, et divisé par une approximation de la trace de la matrice de projection P. Il y a un package R qui permet de mettre en œuvre cette méthode d'ACP itérative régularisée. Dans ce package, c'est le package missMDA, on va faire appel au package. Ici, il y a un jeu de données orange qui est dans le package et donc on peut estimer dans un premier temps le nombre de composantes nécessaires pour reconstituer les données. Qui va nous permettre de déterminer S et ensuite on va imputer le tableau de données, compléter le tableau puis réaliser l'ACP. Donc on a d'abord l'étape de complétion, on complète le tableau de données puis là-dessus je peux faire une ACP. Alors on va pouvoir étendre cet algorithme au cas des données qualitatives. Donc la gestion des données manquantes en ACM. L'ACM est une analyse exploratoire d'un tableau où les variables sont qualitatives. Typiquement dans l'analyse de questionnaires, l'ACM peut être vue comme une ACP d'une matrice particulière, d'une matrice X. Alors dans l'ACM, on commence par construire un tableau disjonctif. Chaque variable du tableau X correspond à une modalité des variables du jeu de données initial et c'est l'ACP de cette matrice indicatrice avec des poids spécifiques. On utilise les marges de cette matrice. Et donc ça permet de donner la citation de Benzécri qui est que faire une analyse factorielle en bonne mathématiques c'est simplement faire une recherche des vecteurs propres. Mais par contre la science et tout l'art de l'analyse factorielle c'est de trouver la bonne matrice à diagonaliser. Voilà donc on va voir un algorithme d'ACM itérative régularisée très proche de l'algorithme d'ACP itérative régularisée où on a une étape d'initialisation On impute la matrice d'indicatrices en prenant la moyenne de la colonne, c'est-à-dire la proportion finalement, proportion d'individus qui ont pris cette modalité. Et puis on va itérer les étapes d'estimation en faisant l'ACM du tableau complété, d'imputation des données manquantes par les données reconstituées en utilisant les axes et composantes de l'ACM, et puis une fois qu'on a imputé les données, de mettre à jour les marges et itérer, donc refaire l'ACM du tableau complété, avoir f et u, imputer les données, etc. À partir du tableau de données initial, on a un tableau disjonctif complété et ici pour chaque variable on a autant de colonnes qu'il y a de modalités. Pour l'individu 2 par exemple, dans la première variable il y avait une donnée manquante, Cette première variable a 3 modalités et on a des nombres réels ici sur le tableau disjonctif. Et ces nombres somment à 1 et peuvent être vus comme des degrés d'appartenance. Donc si j'avais à imputer le tableau par une modalité, j'imputerais par la modalité C qui est la modalité la plus probable ici. Et donc à partir de ce tableau disjonctif complet, on peut faire une ACM. MISA-MDA, ça va être un peu la même chose que pour l'ACP. On va estimer d'abord le nombre de composantes, imputer le tableau de données et donc obtenir un tableau disjonctif complété. Et ensuite on va pouvoir réaliser une ACM. Alors pour l'ACM ici c'est un petit peu particulier puisque vous voyez que je ne suis pas remonté complètement aux modalités, j'ai pas complété le tableau initial mais je prends le tableau disjonctif complété. Et donc j'utilise l'ACM de FactoMineR qui permet de faire ça, de prendre les données observées et le tableau disjonctif complété quand on a des données manquantes. Alors un petit exemple sur un questionnaire où on avait 1232 répondants, 14 questions pour un total de 35 modalités. Donc il y avait 9% de données manquantes seulement mais ça correspondait à 42% des répondants. On n'avait pas envie d'enlever toutes les tous les répondants qui avaient des données manquantes. Et alors si je fais l'ACM classique, dans l'ACM classique, on a une nouvelle modalité qui est créée pour chaque variable qui a une donnée manquante. On voit que les résultats sont structurés uniquement par rapport aux données manquantes. Les individus qui ont des données manquantes sont les individus en bleu et les modalités avec DNA sont toutes les modalités qui ressortent sur la 1ère dimension et la 2ème dimension. Ça veut dire que ce sont les données manquantes qui structurent complètement mon graphe d'ACM. Donc c'est une information qui est intéressante, ça veut dire que les individus qui n'ont pas répondu à certaines questions n'ont pas répondu à d'autres questions. Ça permet de voir le dispositif de données manquantes mais ça ne permet pas de voir l'information qu'il y a dans les données observées. Donc si je fais l'ACP itérative régularisée, je vais pouvoir voir les liaisons qu'il y a entre les modalités des différentes variables qualitatives. Et puis on voit que les individus qui ont des données manquantes et les individus qui n'ont pas de données manquantes sont complètement mélangés, ils ne structurent pas mes graphes. Alors pour l'analyse factorielle multiple, ça va être la même chose. L'AFM, si j'ai des données quantitatives, je les code comme pour l'ACP, si j'ai des données qualitatives, comme pour l'ACM, donc avec un tableau disjonctif complétés et puis je fais une ACP pondérée en pondérant par groupe. Et donc avec des données manquantes, je construis un algorithme du même style que celui de l'ACP mais dans lequel après chaque étape estimation/imputation, je vais mettre à jour les marges, les moyennes et les écarts-types des variables mais également les valeurs propres des chaque groupe. Et donc dans mon imputation, je prends en compte les axes de l'AFM et donc je prends en compte la structure en groupes de mes données. Alors si je prends un exemple sur les tumeurs du cerveau, j'avais des données de transcriptomes et des données de génomes. J'avais 43 individus qui ont des tumeurs du cerveau avec 4 types de tumeurs et il y a 10 individus pour lesquels j'ai pas du tout les données de transcriptomes, de données d'expression. Donc j'ai un tableau de données dans lequel j'ai des données manquantes que pour un tableau. Donc je vais faire l'AFM en imputant le jeu de données puis après en faisant l'AFM. Je vais avoir mes individus qui sont des points ici. Alors j'ai colorié les individus en fonction du type de tumeur qu'ils avaient. Donc on voit que les individus qui sont en vert sont des individus qui ont type de tumeur, des glioblastomes, qui sont des types de tumeurs de grade élevé alors que les autres sont des tumeurs de grade un peu moins élevé, un peu moins graves. Et puis on voit les gènes qui sont liés aux dimensions et donc qui permettent de séparer les individus et notamment les individus qui ont une tumeur de type glioblastome par rapport aux autres. Si je regarde les groupes de variables, je vois que les 2 groupes de variables ont une coordonnée assez élevée sur la première dimension. Ça signifie que la séparation des glioblastomes avec les autres types de tumeurs, on la voit avec les données de transcriptome et les données de génome. Mais par contre, la deuxième dimension est principalement liée aux données CGH et pas du tout aux données d'expression. Alors ça, je peux le revoir aussi avec les points partiels. Je ne vais pas décrire le graphe des individus avec les points partiels, mais je vais prendre le graphe avec les modalités et les points partiels. On voit que les points partiels correspondant aux données d'expression, les points en vert, ont une coordonnée très faible sur l'axe 2. Ils ne séparent pas du tout les modalités O, OA et A par rapport à l'axe 2. Tandis que pour les points partiels en rouge, il y a une forte séparation: les points OA et A en rouge ont une coordonnée élevée sur la 2ème dimension et par contre O a une coordonnée faible sur la 2ème dimension. Donc les données de CGH par rapport aux données d'expression permettent de différencier les types de tumeurs hauts. Par contre, par rapport à la première dimension, les coordonnées de chaque type de tumeur sont à peu près les mêmes pour les données d'expression et les données de CGH. Alors en conclusion, on a vu comment mettre en œuvre des analyses factorielles sur des tableaux simples pour l'ACP et l'ACM. On a l'équivalent aussi pour des tableaux de données mixtes avec l'AFDM. On l'a vu aussi pour les tableaux multiples avec l'analyse factorielle multiple. Alors ces méthodes-là sont intéressantes comme prétraitement avant une classification, notamment si on a des données manquantes sur le tableau de données. Avant de faire une classification d'individus, assez souvent on va mettre en œuvre une méthode d'analyse factorielle parce qu'on on va conserver uniquement les premières dimensions de l'analyse factorielle et ainsi ça permet d'éliminer les dernières dimensions. Les dernières dimensions étant les dimensions pour lesquelles on considère qu'on a du bruit, donc qui ne sont pas intéressantes pour la classification. Et donc là, on a à la fois la gestion des données manquantes et le fait qu'on conserve les données en ayant éliminé un peu de bruit. Donc il y a un package R qui est le package missMDA qui est complémentaire du package FactoMineR. Ces méthodes d'ACP, d'ACM, d'AFM itératives permettent d'imputer des données quantitatives, qualitatives ou mixtes. Alors ces imputations sont de bonne qualité parce qu'elles sont basées sur la reconstitution de l'ACP. On utilise les axes et composantes de l'ACP et donc ça prend en compte les liaisons entre les variables quantitatives et les variables qualitatives et les imputations qui sont obtenues sont une bonne alternative aux méthodes d'imputation telles que les fourrages aléatoires par exemple. Les simulations qu'on a pu faire pour l'instant montrent des résultats meilleurs quand on avait des liaisons linéaires fortes et ça donne de très bons résultats aussi pour l'imputation des variables qualitatives et notamment quand il y a des modalités rares. Alors en perspective, l'ACP itérative telle qu'on l'a faite, on a une estimation ponctuelle des axes et des composantes. Donc si je considère mon tableau de données ici et que les cases en noir sont les données manquantes, je fais mon ACP itérative régularisée, je vais imputer mon jeu de données et je vais avoir des axes et composantes. Mais maintenant si j'ai vraiment beaucoup de données manquantes, je vais avoir une imputation et je vais avoir des axes et composantes mais quelle confiance est-ce que je peux accorder à ces représentations? J'aimerais là avoir une notion de variance autour des points parce que sinon je sais pas si je peux avoir confiance dans l'imputation que j'ai faite. Et ce qu'on peut dire, c'est qu'une valeur unique quand j'impute ne peut pas refléter la variabilité autour de la prédiction. Donc ce qu'on peut faire, c'est ce qu'on appelle des méthodes d'imputation multiples où on va générer plusieurs tableaux de données complétés. Donc là, je montre qu'on peut générer plein de tableaux de données complétés. Alors je ne dis pas ici comment générer ces tableaux, mais on peut le faire, générer plein de tableaux et donc réaliser ensuite l'analyse sur chacun des tableaux et ensuite visualiser l'incertitude. Et donc ça sera intéressant dans notre cas pour visualiser l'incertitude liée aux données manquantes. Donc on voit ici par exemple, si on a des ellipses de confiance autour des points qui sont très grandes parce qu'on a des données peu structurées, parce qu'on a beaucoup de données manquantes, on va se dire que c'est peut-être pas nécessaire d'interpréter trop les résultats de l'ACP parce qu'on n'est vraiment pas sûr de nos résultats. Et au contraire, si on a des ellipses de confiance qui sont petites, eh bien on peut interpréter sans trop de problèmes nos résultats d'ACP, aussi bien au niveau du graphe des individus que du graphe des variables. Alors juste pour terminer, il y a des vidéos que j'ai réalisées sur YouTube, que j'ai mises en ligne sur une chaîne YouTube. Vous pouvez cliquer sur le lien. Donc il y a une playlist qui regroupe des vidéos en français sur FactoMineR, sur la gestion des données manquantes, sur la mise en œuvre aussi du logiciel, et puis il y a quelques vidéos aussi en anglais, une dizaine de vidéos en anglais. Je vous remercie de votre attention.
More from Yamossoun

Algorithme de calcule de la racine carrée par dichotomie #dichotomy #squareroot #algorithm









