La maximisation des attentes (EM) est une sorte de méthode probabiliste pour classer les données. Veuillez me corriger si je me trompe si ce n'est pas un classificateur.
Qu'est-ce qu'une explication intuitive de cette technique EM? Qu'y a-t-il expectation
ici et qu'est-ce que l'être maximized
?
machine-learning
cluster-analysis
data-mining
mathematical-optimization
expectation-maximization
Mec de Londres
la source
la source
Réponses:
Remarque: le code derrière cette réponse se trouve ici .
Supposons que nous ayons des données échantillonnées dans deux groupes différents, rouge et bleu:
Ici, nous pouvons voir quel point de données appartient au groupe rouge ou bleu. Cela facilite la recherche des paramètres qui caractérisent chaque groupe. Par exemple, la moyenne du groupe rouge est d'environ 3, la moyenne du groupe bleu est d'environ 7 (et nous pourrions trouver les moyennes exactes si nous le voulions).
C'est ce qu'on appelle généralement l' estimation du maximum de vraisemblance . Compte tenu de certaines données, nous calculons la valeur d'un paramètre (ou de paramètres) qui explique le mieux ces données.
Imaginez maintenant que nous ne pouvons pas voir quelle valeur a été échantillonnée dans quel groupe. Tout nous semble violet:
Ici, nous savons qu'il existe deux groupes de valeurs, mais nous ne savons pas à quel groupe appartient une valeur particulière.
Pouvons-nous encore estimer les moyennes du groupe rouge et du groupe bleu qui correspondent le mieux à ces données?
Oui, souvent nous le pouvons! La maximisation des attentes nous donne un moyen de le faire. L'idée très générale derrière l'algorithme est la suivante:
Ces étapes nécessitent des explications supplémentaires, je vais donc parcourir le problème décrit ci-dessus.
Exemple: estimation de la moyenne et de l'écart type
J'utiliserai Python dans cet exemple, mais le code devrait être assez facile à comprendre si vous n'êtes pas familier avec ce langage.
Supposons que nous ayons deux groupes, rouge et bleu, avec les valeurs distribuées comme dans l'image ci-dessus. Plus précisément, chaque groupe contient une valeur tirée d'une distribution normale avec les paramètres suivants:
Voici à nouveau une image de ces groupes rouges et bleus (pour vous éviter d'avoir à faire défiler vers le haut):
Lorsque nous pouvons voir la couleur de chaque point (c'est-à-dire à quel groupe il appartient), il est très facile d'estimer la moyenne et l'écart type de chaque groupe. Nous transmettons simplement les valeurs rouge et bleu aux fonctions intégrées de NumPy. Par exemple:
Mais que faire si nous ne pouvons pas voir les couleurs des points? Autrement dit, au lieu de rouge ou de bleu, chaque point a été coloré en violet.
Pour essayer de récupérer les paramètres d'écart moyen et standard pour les groupes rouge et bleu, nous pouvons utiliser la maximisation des attentes.
Notre première étape ( étape 1 ci-dessus) consiste à deviner les valeurs des paramètres pour la moyenne et l'écart type de chaque groupe. Nous n'avons pas à deviner intelligemment; nous pouvons choisir tous les nombres que nous aimons:
Ces estimations de paramètres produisent des courbes en cloche qui ressemblent à ceci:
Ce sont de mauvaises estimations. Les deux moyens (les lignes pointillées verticales) semblent loin de tout type de «milieu» pour des groupes de points sensibles, par exemple. Nous voulons améliorer ces estimations.
L'étape suivante ( étape 2 ) consiste à calculer la probabilité que chaque point de données apparaisse sous le paramètre actuel suppose:
Ici, nous avons simplement mis chaque point de données dans la fonction de densité de probabilité pour une distribution normale en utilisant nos estimations actuelles à la moyenne et à l'écart type pour le rouge et le bleu. Cela nous indique, par exemple, qu'avec nos estimations actuelles, le point de données à 1,761 est beaucoup plus susceptible d'être rouge (0,189) que bleu (0,00003).
Pour chaque point de données, nous pouvons transformer ces deux valeurs de vraisemblance en poids ( étape 3 ) afin qu'elles totalisent 1 comme suit:
Avec nos estimations actuelles et nos poids nouvellement calculés, nous pouvons maintenant calculer de nouvelles estimations pour la moyenne et l'écart type des groupes rouge et bleu ( étape 4 ).
Nous calculons deux fois la moyenne et l'écart type en utilisant tous les points de données, mais avec des pondérations différentes: une fois pour les poids rouges et une fois pour les poids bleus.
L'intuition clé est que plus le poids d'une couleur sur un point de données est élevé, plus le point de données influence les estimations suivantes pour les paramètres de cette couleur. Cela a pour effet de "tirer" les paramètres dans la bonne direction.
Nous avons de nouvelles estimations pour les paramètres. Pour les améliorer à nouveau, nous pouvons revenir à l'étape 2 et répéter le processus. Nous faisons cela jusqu'à ce que les estimations convergent, ou après qu'un certain nombre d'itérations aient été effectuées ( étape 5 ).
Pour nos données, les cinq premières itérations de ce processus ressemblent à ceci (les itérations récentes ont une apparence plus forte):
On voit que les moyennes convergent déjà sur certaines valeurs, et les formes des courbes (régies par l'écart type) deviennent également plus stables.
Si nous continuons pendant 20 itérations, nous nous retrouvons avec ce qui suit:
Le processus EM a convergé vers les valeurs suivantes, qui s'avèrent très proches des valeurs réelles (où nous pouvons voir les couleurs - pas de variables cachées):
Dans le code ci-dessus, vous avez peut-être remarqué que la nouvelle estimation de l'écart type a été calculée en utilisant l'estimation de l'itération précédente pour la moyenne. En fin de compte, peu importe si nous calculons d'abord une nouvelle valeur pour la moyenne, car nous cherchons simplement la variance (pondérée) des valeurs autour d'un point central. Nous verrons toujours les estimations des paramètres converger.
la source
EM est un algorithme pour maximiser une fonction de vraisemblance lorsque certaines des variables de votre modèle ne sont pas observées (c'est-à-dire lorsque vous avez des variables latentes).
Vous pourriez vous demander, si nous essayons simplement de maximiser une fonction, pourquoi n'utilisons-nous pas simplement la machinerie existante pour maximiser une fonction. Eh bien, si vous essayez de maximiser cela en prenant des dérivées et en les mettant à zéro, vous constatez que dans de nombreux cas, les conditions du premier ordre n'ont pas de solution. Il y a un problème de poule et d'œuf en ce sens que pour résoudre les paramètres de votre modèle, vous devez connaître la distribution de vos données non observées; mais la distribution de vos données non observées est fonction des paramètres de votre modèle.
EM essaie de contourner ce problème en devinant itérativement une distribution pour les données non observées, puis en estimant les paramètres du modèle en maximisant quelque chose qui est une limite inférieure de la fonction de vraisemblance réelle, et en répétant jusqu'à la convergence:
L'algorithme EM
Commencez par deviner les valeurs de vos paramètres de modèle
Étape E: Pour chaque point de données qui a des valeurs manquantes, utilisez votre équation de modèle pour résoudre la distribution des données manquantes compte tenu de votre estimation actuelle des paramètres du modèle et compte tenu des données observées (notez que vous résolvez une distribution pour chaque valeur, pas pour la valeur attendue). Maintenant que nous avons une distribution pour chaque valeur manquante, nous pouvons calculer l' espérance de la fonction de vraisemblance par rapport aux variables non observées. Si notre estimation du paramètre du modèle était correcte, cette probabilité attendue sera la vraisemblance de nos données observées; si les paramètres n'étaient pas corrects, ce ne sera qu'une borne inférieure.
Étape M: Maintenant que nous avons une fonction de vraisemblance attendue sans variables non observées, maximisez la fonction comme vous le feriez dans le cas pleinement observé, pour obtenir une nouvelle estimation des paramètres de votre modèle.
Répétez jusqu'à convergence.
la source
Voici une recette simple pour comprendre l'algorithme de maximisation des attentes:
1- Lisez ce tutoriel EM par Do et Batzoglou.
2- Vous pouvez avoir des points d'interrogation dans votre tête, jetez un œil aux explications sur cette page d' échange de pile de maths .
3- Regardez ce code que j'ai écrit en Python qui explique l'exemple du tutoriel EM de l'élément 1:
Attention: le code peut être désordonné / sous-optimal, car je ne suis pas un développeur Python. Mais ça fait le travail.
la source
Techniquement, le terme «EM» est un peu sous-spécifié, mais je suppose que vous faites référence à la technique d'analyse en grappes de modélisation de mélange gaussien, qui est un exemple du principe général EM.
En fait, l' analyse de cluster EM n'est pas un classificateur . Je sais que certaines personnes considèrent le regroupement comme une «classification non supervisée», mais en fait, l'analyse de cluster est quelque chose de tout à fait différent.
La principale différence, et le grand malentendu que les gens de classification ont toujours avec l'analyse par grappes, est que: dans l' analyse par grappes, il n'y a pas de «solution correcte» . C'est une méthode de découverte de connaissances , elle vise en fait à trouver quelque chose de nouveau ! Cela rend l'évaluation très délicate. Il est souvent évalué en utilisant une classification connue comme référence, mais ce n'est pas toujours approprié: la classification que vous avez peut refléter ou non ce que contiennent les données.
Permettez-moi de vous donner un exemple: vous avez un grand ensemble de données de clients, y compris des données de genre. Une méthode qui divise cet ensemble de données en «homme» et «femme» est optimale lorsque vous la comparez avec les classes existantes. Dans une façon de penser «prédictive», c'est bien, car pour les nouveaux utilisateurs, vous pouvez désormais prédire leur sexe. Dans une manière de penser «découverte de connaissances», c'est en fait mauvais, car vous vouliez découvrir une nouvelle structure dans les données. Une méthode qui, par exemple, diviserait les données en personnes âgées et en enfants, obtiendrait cependant un score aussi pire que possible par rapport à la classe homme / femme. Cependant, ce serait un excellent résultat de regroupement (si l'âge n'était pas indiqué).
Revenons maintenant à EM. Essentiellement, cela suppose que vos données sont composées de plusieurs distributions normales multivariées (notez qu'il s'agit d'une hypothèse très forte, en particulier lorsque vous fixez le nombre de clusters!). Il essaie ensuite de trouver un modèle local optimal pour cela en améliorant alternativement le modèle et l'affectation des objets au modèle .
Pour de meilleurs résultats dans un contexte de classification, choisissez le nombre de clusters supérieur au nombre de classes, ou même appliquez le clustering à des classes uniques uniquement (pour savoir s'il existe une structure au sein de la classe!).
Supposons que vous souhaitiez former un classificateur à distinguer les «voitures», les «vélos» et les «camions». Il est peu utile de supposer que les données consistent exactement en 3 distributions normales. Cependant, vous pouvez supposer qu'il existe plus d'un type de voitures (et camions et vélos). Donc, au lieu de former un classificateur pour ces trois classes, vous regroupez les voitures, les camions et les vélos en 10 groupes chacun (ou peut-être 10 voitures, 3 camions et 3 vélos, peu importe), puis formez un classificateur pour distinguer ces 30 classes, puis fusionne le résultat de la classe avec les classes d'origine. Vous pouvez également découvrir qu'il existe un cluster qui est particulièrement difficile à classer, par exemple Trikes. Ce sont un peu des voitures et un peu des vélos. Ou des camions de livraison, qui ressemblent plus à des voitures surdimensionnées qu'à des camions.
la source
Les autres réponses étant bonnes, je vais essayer de fournir une autre perspective et d'aborder la partie intuitive de la question.
L'algorithme EM (Expectation-Maximization) est une variante d'une classe d'algorithmes itératifs utilisant la dualité
Extrait (c'est moi qui souligne):
Habituellement, un double B d'un objet A est lié à A d'une manière qui préserve une certaine symétrie ou compatibilité . Par exemple AB = const
Des exemples d'algorithmes itératifs, employant la dualité (au sens précédent) sont:
De la même manière, l'algorithme EM peut également être vu comme deux étapes de maximisation doubles :
Dans un algorithme itératif utilisant la dualité, il y a l'hypothèse explicite (ou implicite) d'un point de convergence d'équilibre (ou fixe) (pour EM, cela est prouvé en utilisant l'inégalité de Jensen)
Ainsi, le contour de ces algorithmes est:
Notez que lorsqu'un tel algorithme converge à un (global) optimal, il a trouvé une configuration qui est mieux dans les deux sens (dans les deux x domaine / paramètres et les y domaine / paramètres). Cependant, l'algorithme peut simplement trouver un optimum local et non l' optimum global .
je dirais que c'est la description intuitive du contour de l'algorithme
Pour les arguments statistiques et les applications, d'autres réponses ont donné de bonnes explications (vérifiez également les références dans cette réponse)
la source
La réponse acceptée fait référence au Chuong EM Paper , qui fait un travail décent pour expliquer la SE. Il existe également une vidéo sur youtube qui explique l'article plus en détail.
Pour récapituler, voici le scénario:
Dans le cas de la question du premier essai, intuitivement, nous pensons que B l'a générée car la proportion de têtes correspond très bien au biais de B ... mais cette valeur n'était qu'une supposition, nous ne pouvons donc pas en être sûrs.
Dans cet esprit, j'aime penser à la solution EM comme ceci:
Cela peut être une simplification excessive (ou même fondamentalement faux à certains niveaux), mais j'espère que cela aidera à un niveau intuitif!
la source
EM est utilisé pour maximiser la probabilité d'un modèle Q avec des variables latentes Z.
C'est une optimisation itérative.
e-step: étant donné l'estimation actuelle de Z, calculer la fonction log-vraisemblance attendue
m-step: trouver thêta qui maximise ce Q
Exemple GMM:
e-step: estimer les attributions d'étiquettes pour chaque point de données en fonction de l'estimation actuelle du paramètre gmm
m-step: maximiser un nouveau thêta compte tenu des nouvelles attributions d'étiquettes
K-means est également un algorithme EM et il y a beaucoup d'animations explicatives sur K-means.
la source
En utilisant le même article de Do et Batzoglou cité dans la réponse de Zhubarb, j'ai implémenté EM pour ce problème en Java . Les commentaires à sa réponse montrent que l'algorithme se bloque à un optimum local, ce qui se produit également avec mon implémentation si les paramètres thetaA et thetaB sont les mêmes.
Voici la sortie standard de mon code, montrant la convergence des paramètres.
Voici mon implémentation Java de EM pour résoudre le problème dans (Do et Batzoglou, 2008). La partie centrale de l'implémentation est la boucle pour exécuter EM jusqu'à ce que les paramètres convergent.
Voici le code complet.
la source