Comprendre et implémenter un modèle de processus Dirichlet


11

J'essaie de mettre en œuvre et d'apprendre un processus Dirichlet pour regrouper mes données (ou pendant que les gens apprennent automatiquement, estimer la densité).

J'ai lu beaucoup d'articles sur le sujet et j'ai en quelque sorte eu l'idée. Mais je suis toujours confus; voici une série de questions,

1) Quelle est la différence entre le modèle de restaurant chinois et le DP? 2) Quelle est la différence entre les modèles de mélange infini et DP?

Pour bien comprendre tout, j'ai implémenté le modèle de restaurant chinois, le modèle Polya Urn et le bâton-rupture; Mais il semble que l'implémentation de DP à partir de zéro soit une chose difficile à faire! Je peux lire et écrire python, R, Matlab.

1) Y a-t-il un code que vous recommandez de lire et d'améliorer pour bien comprendre / travailler / développer DP? 2) D'après mes recherches, les codes de Dirichlet Process n'étaient pas faciles à lire! vraiment long, long (probablement car l'efficacité était plus importante que la clarté). 3) Cependant, il y a plus de code sur Infinite Mixture Model que sur Dirichlet Process. Si ces deux méthodes ne sont pas éloignées l'une de l'autre, puis-je utiliser IMM?! Fondamentalement, je veux construire mon nouveau modèle et je ne veux pas réinventer une roue.

J'apprécie vos commentaires

  • MISE À JOUR puisque beaucoup de gens ont recommandé le didacticiel d'Edwin Chen sur «le modèle de mélange infini avec des baies non paramétriques et le DP» ; Ce didacticiel a un titre trompeur; Il ne couvre que diverses représentations du DP, de la spécificité, de la RCR, du bris de bâton, du modèle Polya-Urn; et à la fin, il utilise un modèle de mélange de scikit et fait un couple d'histogramme sur chaque groupe;

Je ne comprends pas ce qui est trompeur par rapport au titre de Chen. Il utilise un DP-GMM de scikit, oui.
Anne van Rossum

La page de Yee Whye Teh: stats.ox.ac.uk/~teh/npbayes.html a plusieurs bons tutoriels en plus d'une implémentation matlab d'un échantillonneur Gibbs réduit pour le Dirichlet Process Mixture Model (DPMM).
Vadim Smolyakov

Réponses:


5

Quelle est la différence entre DP et CRP?

Le processus de restaurant chinois (CRP) est une distribution sur des partitions d'entiers . La connexion au processus de Dirichlet (DP) existe grâce au théorème de De Finetti.

Théorème de De Finetti: Supposons que nous ayons un processus aléatoire(θ1,,θN)qui est infiniment échangeable , alors la probabilité conjointep(θ1,,θN) a une représentation sous forme de mélange:

p(θ1,,θN)=P(g)je=1Ng(θje)

pour une variable aléatoire g.

La propriété d' échangeabilité signifie que nous ne nous soucions pas non plus des indices des tables (nous ne nommons pas les tables) et nous ne nous soucions pas de l'ordre des clients à une table particulière. La partition des clients en différents ensembles est la seule structure qui nous intéresse. Cela signifie que, étant donné une partition, nous n'avons pas besoin de connaître les affectations particulières des clients aux tables, nous avons seulement besoin de connaître le nombre de clients à chaque table.

Le théorème de De Finetti n'aide pas à trouver la distribution g. Il indique seulement qu'il devrait exister.

Le processus de Dirichlet est un précédent sur les distributions . De manière informelle, vous avez introduit une distribution de probabilité et lorsque vous en échantillonnez, vous obtenez une distribution de probabilité après la distribution de probabilité.

Le lien entre les deux peut être établi en prouvant que si g est échantillonné à partir d'un processus de Dirichlet, l'équation dans le théorème de De Finetti tient pour ce particulier g.

Si

gP(α,H)

puis

p({θ(z=0)0,,θ(z=0)n0},,{θ(z=k)0,,θ(z=k)nk})=αkΓ(α)Γ(α+n)je=0kΓ(nje)

Notez que p(θ1,,θN)est décrit par un CRP à travers des probabilités pour des partitions particulières. Iciz=je désigne un index de table je. Etnje est le nombre de clients à table je. Par souci d'exhaustivité, rappelez-vous que leP est:

{g(UNE1),,g(UNEk)}jerjechlet(αH(UNE1),,αH(UNEk))

Je pense qu'il ressort clairement de cette exposition que la connexion est là, mais ne doit pas être considérée comme triviale. Notez également que je n'ai pas décrit le CRP dans le sens d'une distribution conditionnelle sur les clients individuels entrants. Cela ajouterait encore une autre étape conceptuelle entre le CRP et le DP. Mon conseil: n'hésitez pas à être mal à l'aise pour comprendre directement leur relation et commencez à jouer avec la description des distributions conjointes et marginales jusqu'à ce que vous reproduisiez la connexion. Le CRP est obtenu en marginalisantg du DP.

Pour le lien entre la probabilité conjointe et la description séquentielle du CRP, voir [1].

Et si l'échange n'est pas valable? Si l'échangeabilité ne tient pas, nous ne parlons plus du DP ou du CRP, mais du processus de Dirichlet dépendant et du processus de restaurant chinois dépendant. Et naturellement, la connexion entre eux se perd!

Voir [2] pour plus de détails. Le CRP dépendant décrit quel client veut s'asseoir avec quel (seul) autre client. En regroupant toutes les relations client-client, nous pouvons une affectation sur des tables. Le CRP dépendant n'est pas marginalement invariant: la probabilité d'une partition lors de la suppression d'un client dépend également de ce même client. Au contraire, le DP Dépendant est souvent défini par ce très marginal:gtP(α,H). IciH est par exemple une distribution Dirichlet elle-même ou toute distribution qui provoque gt et gt être lié.

Il existe de nombreuses autres généralisations possibles, certaines admettront une représentation sur les partitions ainsi que sur les distributions, comme le processus de restaurant chinois avec deux paramètres avec le processus Pitman-Yor, ou le processus de buffet indien avec le processus bêta [3] . Certains ne le feront pas.

  • [1] : Tutoriel sur les modèles bayésiens non paramétriques (2011) Gershman et Blei
  • [2] : Processus de restaurants chinois dépendants de la distance (2011) Blei et Frazier
  • [3] : Processus hiérarchiques bêta et processus de buffet indien (2007) Thibaux et Jordanie

Coud vous en dire plus sur ce θ(z=je)nje sont et comment cette équation αkΓ(α)Γ(α+n)je=0kΓ(nje)est dérivé?
Daeyoung Lim

Ce sont les nje paramètres de cluster je. La dérivation que vous pouvez trouver sur math.stackexchange.com/questions/709959/… et peut être obtenue en intégrant la distribution composée N-catégorique-dirichlet. Extension à un processus que vous pouvez lire sur mon blog à annevanrossum.com/blog/2015/03/03/sampling-of-dirichlet-process . Il utilise le papier technique de Neal et je pense que c'est la dérivation la plus détaillée que vous pourrez trouver en ligne.
Anne van Rossum

2

1) Quelle est la différence entre le modèle de restaurant chinois et le DP?

Aucun. CRP est une représentation particulière de DP. En fonction de votre problème, vous souhaiterez peut-être utiliser une représentation sur une autre (CRP, Stick-breaking, etc.).

2) Quelle est la différence entre les modèles de mélange infini et DP?

DP est juste utilisé comme un a priori pour le modèle de mélange infini. C'est pourquoi les modèles de mélange gaussiens infinis sont également appelés DP-GMM. En fait, le premier article sur le sujet est "The Infinite Gaussian Mixture Model" (Rasmussen, 1999)

3) Implémentations

J'essaie en fait d'implémenter l'article de Rasmussen pour un cas multivarié en Python. (il utilise l'échantillonnage de Gibbs, qui est plus simple que les approximations d'inférence variationnelle). En attendant, j'ai trouvé:


1

Je me bats avec la même chose. Grâce à ce forum, j'ai trouvé quelques conseils:

http://scikit-learn.org/stable/modules/generated/sklearn.mixture.DPGMM.html

http://statistical-research.com/dirichlet-process-infinite-mixture-models-and-clustering/

Le premier est l'implémentation par scikit-learn d'un mélange infini de Gaussiens multivariés (ne soyez pas rebuté par le n_componentsparamètre, bien que je ne sais pas pourquoi il est là en fait ...).

Ce dernier contient du code en R et modélise les choses de façon K-means (j'ai l'impression), mais sans spécifier K (bien sûr ;-)).

Si vous trouvez d'autres packages / descriptions utiles, veuillez les poster!

À M


merci de faire la réponse. J'ai examiné votre deuxième lien et pour moi, il n'a pas utilisé DP dans son exemple. C'est une sorte de k-means, de toute façon. Gardons cette mise à jour en mettant des packages / descriptions utiles.
user4581

Je pensais exactement la même chose. Dans le code cependant, il y fait référence dirichletClusters, alors j'ai pensé que j'avais peut-être tort. Mais je n'y vois pas non plus de DP ...
Tom

Découvrez cette conférence vidéo de Teh lui-même: videolectures.net/mlss09uk_teh_nbm À environ la minute 43, il y a quelques équations qui, je pense, sont vraiment utiles!
Tom

pour vous mettre à jour, il existe un package R, appelé DIRECT. a une mise en œuvre très claire de DP! J'ai commencé à lire le code et à m'instruire! Je vous recommande d'y jeter un œil
user4581

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.