Estou tentando implementar e aprender um processo de Dirichlet para agrupar meus dados (ou, conforme as pessoas do aprendizado de máquina falam, estimam a densidade).
Eu li muito papel no tópico e meio que entendi a idéia. Mas ainda estou confuso; aqui está uma série de perguntas,
1) Qual é a diferença entre o Chinese Restaurant Model e o DP? 2) Qual a diferença entre os Modelos de Mistura Infinita e o DP?
Para entender tudo, implementei o modelo de restaurante chinês, o modelo Polya Urn e o quebra-pau; Mas parece que implementar o DP do zero é algo difícil de fazer! Eu posso ler e escrever python, R, Matlab.
1) Existe algum código que você recomenda ler e melhorar para entender / trabalhar / desenvolver totalmente a DP? 2) Com base em minha pesquisa, os códigos para o Processo Dirichlet não foram fáceis de ler! muito longo, demorado (provavelmente porque a eficiência era mais importante que a clareza). 3) No entanto, há mais código no Modelo de Mistura Infinita que no Processo Dirichlet. Se esses dois métodos não estiverem longe um do outro, posso usar o IMM ?! Basicamente, quero construir meu novo modelo e não quero reinventar uma roda.
Agradeço seus comentários
- ATUALIZAÇÃO, já que muitas pessoas recomendaram o tutorial de Edwin Chen sobre "Modelo de Mistura Infinita com Bayes Não Paramétricos e o DP" ; Este tutorial tem um título enganoso; Abrange apenas várias representações de DP, especificidade, RCP, quebra de vara, modelo Polya-Urn; e no final, ele está usando um modelo de mistura do scikit e faz um par de histograma em cada cluster;
fonte
Respostas:
Qual é a diferença entre DP e CRP?
O processo de restaurante chinês (CRP) é uma distribuição sobre partições de números inteiros . A conexão com o Processo Dirichlet (DP) existe graças ao teorema de De Finetti.
Teorema de de finetti: Suponhamos que temos um processo aleatório que é infinitamente permutável , então a probabilidade conjunta tem uma representação de como uma mistura de:p ( θ 1 , … , θ N )( θ1, … , ΘN) p ( θ1, … , ΘN)
para alguns variável aleatória .G
A propriedade permutabilidade significa que não nos importamos com os índices das tabelas (não nomeamos as tabelas) e não nos importamos com a ordem dos clientes em uma tabela específica. A partição de clientes em conjuntos diferentes é a única estrutura em que estamos interessados. Isso significa que, dada uma partição , não precisamos conhecer as atribuições específicas de clientes para as tabelas, precisamos apenas conhecer o número de clientes em cada tabela.
Teorema de de finetti não ajuda em encontrar a distribuição . Ele afirma apenas que deveria existir.G
O processo Dirichlet é uma prévia das distribuições . Informalmente, você lança uma distribuição de probabilidade e, quando faz uma amostragem, obtém uma distribuição de probabilidade após a distribuição de probabilidade.
A conexão entre ambos pode ser estabelecida provando que, se é amostrado a partir de um processo de Dirichlet, a equação no teorema de De Finetti vale para esse particular .GG G
E se
então
Observe que é descrito por um CRP através de probabilidades para partições específicas. Aqui indica um índice de tabela . E é o número de clientes na tabela . Para completar, lembre-se de que o é:p ( θ1, … , ΘN) z= i Eu nEu Eu D P
Eu acho que é claro nesta exposição que a conexão está lá, mas não deve ser considerada trivial. Observe também que não descrevi o CRP no sentido de uma distribuição condicional entre os clientes individuais entrantes. Isso adicionaria mais um passo conceitual entre o CRP e o DP. Meu conselho: sinta-se à vontade para não se sentir à vontade em entender diretamente o relacionamento deles e comece a brincar com a descrição das distribuições conjuntas e marginais até reproduzir a conexão. A PCR é obtida marginalizando do DP.G
Para a conexão entre a probabilidade conjunta e a descrição seqüencial do CRP, consulte [1].
E se a permutabilidade não for válida? Se a permutabilidade não se mantiver, não falamos mais sobre o PD ou o CRP, mas sobre o Processo de Dirichlet Dependente e o Processo de Restaurante Chinês Dependente. E, naturalmente, a conexão entre eles se perde!
Veja [2] para detalhes. O CRP dependente descreve qual cliente deseja se sentar com qual (único) outro cliente. Ao agrupar todas as relações cliente-cliente, podemos fazer uma atribuição sobre tabelas. O CRP dependente não é marginalmente invariável: a probabilidade de uma partição ao remover um cliente também depende desse mesmo cliente. Pelo contrário, o DP dependente é frequentemente definido por este mesmo marginal: . Aqui é, por exemplo, uma distribuição de Dirichlet em si ou qualquer distribuição que faça com que e sejam relacionados.Gt~ D P( α , H) H Gt Gt′
Existem muitas outras generalizações possíveis, algumas delas admitem uma representação tanto de partições quanto de distribuições, como o processo de restaurante chinês com dois parâmetros no processo de Pitman-Yor ou o processo de buffet indiano no processo beta [3] . Alguns deles não.
fonte
1) Qual é a diferença entre o Chinese Restaurant Model e o DP?
Nenhum. O CRP é uma representação particular do DP. Dependendo do seu problema, convém usar uma representação sobre outra (CRP, quebra de bastão, etc.).
2) Qual a diferença entre os Modelos de Mistura Infinita e o DP?
O DP é usado apenas como prévia para o Modelo de Mistura Infinita. É por isso que os Modelos de Mistura Gaussiana Infinita também são chamados de DP-GMM. Na verdade, o primeiro artigo sobre o assunto é "O Modelo da Mistura Gaussiana Infinita" (Rasmussen, 1999)
3) Implementações
Na verdade, estou tentando implementar o artigo de Rasmussen para um caso multivariado em Python. (ele usa a amostragem de Gibbs, que é mais simples que as aproximações de Inferência Variacional). Enquanto isso, descobri:
Um post muito agradável de Edwin Chen: Modelos de Misturas Infinitas com Bayes Não Paramétricos e o Processo Dirichlet
Uma introdução ao IGMM por Frank Wood / Gentle Introdução à modelagem infinita de misturas gaussianas
Uma tentativa de implementar o IGMM por Michael Mander: Implementing the Infinite GMM . Ele relata alguns problemas no caso multivariado. Mas isso foi em 2005. Não tenho certeza se ele já está desatualizado e seus problemas foram resolvidos no post de Chen ou em um artigo mais recente de Rasmussen: Dirichlet Process Modelos Gaussianos de Mistura: Escolha da Distribuição Base (atualmente estou analisando isso).
fonte
Eu estou lutando com a mesma coisa. Através deste fórum, encontrei alguns indicadores:
http://scikit-learn.org/stable/modules/generated/sklearn.mixture.DPGMM.html
http://statistical-research.com/dirichlet-process-infinite-mixture-models-and-clustering/
A primeira é a implementação do scikit-learn de uma mistura infinita de gaussianos multivariados (não se deixe levar pelo
n_components
parâmetro, embora eu não tenha certeza do porquê de ele estar lá ...).O último contém algum código em R e modela as coisas de uma maneira K-significa (fico com a impressão), mas sem especificar K (claro ;-)).
Se você encontrar outros pacotes / descrições úteis, poste-os!
Tom
fonte
dirichletClusters
, então pensei que talvez estivesse errado. Mas eu não vejo a DP no que quer ...Um código muito compreensível de Jacob Eisenstein está disponível para o Matlab em https://github.com/jacobeisenstein/DPMM . É baseado na dissertação "Modelos Gráficos para Reconhecimento e Rastreamento de Objetos Visuais", de EB Sudderth.
fonte