Compreendendo e implementando um modelo de processo Dirichlet

11

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;
user4581
fonte
Não entendo o que é enganoso no título de Chen. Ele usa um DP-GMM do scikit, sim.
Anne van Rossum
A página de Yee Whye Teh: stats.ox.ac.uk/~teh/npbayes.html possui vários bons tutoriais, além da implementação no matlab de um amostrador de Gibbs recolhido para o DPM (Dirichlet Process Mixture Model).
Vadim Smolyakov

Respostas:

5

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)

p(θ1,,θN)=dP(G)i=1NG(θi)

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 .GGG

E se

GDP(α,H)

então

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

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=iiniiDP

{G(A1),,G(Ak)}Dirichlet(αH(A1),,αH(Ak))

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.GtDP(α,H)HGtGt

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.

  • [1] : Um tutorial sobre modelos não paramétricos bayesianos (2011) Gershman e Blei
  • [2] : Processos de restaurantes chineses dependentes da distância (2011) Blei e Frazier
  • [3] : Processos beta hierárquicos e processo de buffet indiano (2007) Thibaux e Jordan
Anne van Rossum
fonte
Você pode elaborar mais sobre o que e como essa equação é derivado? α k Γ ( α )θ(z=i)niαkΓ(α)Γ(α+n)i=0kΓ(ni)
Daeyoung Lim 15/03
Esses são os parâmetros do cluster . A derivação que você pode encontrar em math.stackexchange.com/questions/709959/… e pode ser obtida através da integração da distribuição composta de N-categorical-dirichlet. Extensão para um processo que você pode ler no meu blog em annevanrossum.com/blog/2015/03/03/sampling-of-dirichlet-process . Ele usa o artigo técnico de Neal e acho que é a derivação mais detalhada que você poderá encontrar on-line. eunii
Anne van Rossum
2

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:

Alberto
fonte
1

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_componentsparâ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

Tom
fonte
obrigado fazer a resposta. Eu olhei para o seu segundo link e para mim ele não usou DP no exemplo dele. É algum tipo de meio k, de qualquer maneira. Vamos manter esta atualização postando pacotes / descrições úteis.
User4581
Eu estava pensando exatamente a mesma coisa. No código, porém, ele se refere dirichletClusters, então pensei que talvez estivesse errado. Mas eu não vejo a DP no que quer ...
Tom
Confira esta palestra em vídeo do próprio Teh: videolectures.net/mlss09uk_teh_nbm Por volta do minuto 43, existem algumas equações que eu acho realmente úteis!
Tom
para atualizar você, existe o pacote R, chamado DIRECT. tem uma implementação muito clara do DP! Comecei a ler o código e me educar! Eu recomendo que você dê uma olhada
user4581
1

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.

Maxim Do
fonte