parallel split-merge mcmc for the hdpforma/didattica/progettipacs/parisi...parallel split-merge mcmc...

54

Upload: others

Post on 05-Jun-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Parallel Split-Merge MCMC for the HDP

Debora Parisi Stefania Perego

Marzo 2016

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 1 / 54

Page 2: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Topic Modeling

Topic Modeling

Nel machine learning, il topic modeling è un modello statistico usatoper scoprire una struttura latente di topics in una collezione didocumenti, detta corpus

Un topic è modellizzato come una distribuzione di probabilità sulleparole di un vocabolario noto

Bag of words assumption: si ignora l'ordine delle parole

Il numero di topics non è noto a priori; inoltre, si vuole che i topicsvengano �condivisi �tra i documenti del corpus

Il topic modeling è un problema di clustering; può essere a�rontatoseguendo un approccio bayesiano gerarchico non parametrico.

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 2 / 54

Page 3: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Il modello HDPM

Il modello HDPM

Le osservazioni xji sono organizzate in gruppi. In ogni gruppo si vuolerisolvere un problema di clustering; inoltre si vuole che i gruppi condividanoi cluster. Adottiamo dunque il seguente modello:

G0|γ,H∼DP(γ,H) (1)

Gj |α,G0

iid∼ DP(α,G0) j = 1, . . . ,D (2)

φji |Gjindip∼ Gj j = 1, . . . ,D, i = 1, . . . ,Nj (3)

xji |φjiindip∼ f (xji ;φji ) j = 1, . . . ,D, i = 1, . . . ,Nj (4)

D = ] documentiNj = ] parole nel documento jxji = i-esima parola nel j-esimo documento

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 3 / 54

Page 4: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Il modello HDPM Rappresentazione stick-breaking

Rappresentazione stick-breaking

Si rappresentano G0 e Gj , j = 1, . . . ,D come:

G0 =+∞∑k=1

βkδθk θkiid∼ H (5)

Gj =+∞∑l=1

πjlδτl , j = 1, . . . ,D τliid∼ G0 (6)

βk pesi globali dei topic nel corpus

θk valori distinti assunti dai fattori φji in (3)

πjl pesi dei topic speci�ci del documento j

Il fatto che ∀j i τl siano estratti dalla stessa G0 garantisce la condivisionedei topic tra i documenti.

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 4 / 54

Page 5: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Il modello HDPM Schemi di campionamento

Chinese restaurant franchise

Si ha un franchising di ristoranti con un menù condiviso

Ad ogni tavolo, in ogni ristorante, viene ordinato un piatto del menùdal primo cliente che si siede al tavolo e tale piatto è condiviso daiclienti successivi che si siedono a quel tavolo

Un cliente che entra in un ristorante j può sedersi ad un tavolooccupato t, con probabilità ∝ njt. (] clienti seduti al tavolo t), oppuread un nuovo tavolo, con probabilità ∝ αAd un nuovo tavolo si assegna un piatto k tra quelli esistenti, conprobabilità ∝ m.k (] tavoli che hanno scelto il piatto k), oppure unnuovo piatto, con probabilità ∝ γ

Sia zji l'etichetta della parola xji : zji = k se la parola xji è assegnata altopic k .

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 5 / 54

Page 6: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Algoritmo

Algoritmo

Per implementare il modello abbiamo usato l'algoritmo proposto daJ.Chang, J.W.Fisher III [1], in cui si alternano passi di:

Gibbs Sampler, in cui consideriamo cluster non vuoti, aggiorniamoβ, π, θ, z ,m usando le full-conditional e il numero di cluster rimaneinvariato

Metropolis-Hastings, in cui si propone il merge di due cluster e ladivisione di un cluster.

Introduciamo i sub-topics sinistro e destro:per ogni topic k → {kl , kr}βk = {βkl , βkr} πjk = {πjkl , πjkr} θk = {θkl , θkr} mjk = {mjkl , mjkr}∀ parola xji assegniamo anche il sub-topic → zji ∈ {l , r}.

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 6 / 54

Page 7: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Algoritmo Gibbs Sampler

Gibbs Sampler

Campionare da distribuzioni a posteriori multidimensionali.Supponiamo X1,X2,X3 variabili aleatorie e di voler campionare dalladistribuzioni a posteriori f (X1,X2,X3|dati)L'algoritmo di Gibbs Sampler prevede continue iterazioni, campionandodalle full-conditional.All'iterazione k + 1 si campiona da

X k+1

1∼ f (x1|X k

2 ,Xk3 , dati)

X k+1

2∼ f (x2|X k+1

1,X k

3 , dati)

X k+1

3∼ f (x3|X k+1

1,X k+1

2, dati)

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 7 / 54

Page 8: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Algoritmo Gibbs Sampler

Gibbs Sampler

Sub-Cluster HDP Sampler

1 Inizializzare β e z in modo casuale

2 Campionare π, π, θ e θ

3 Campionare z e z

4 Proporre bK2c merge locali, seguiti da K split locali

5 Proporre un global merge e un global split

6 Campionare m e m

7 Campionare β e β

8 Ripetere dal punto 2 �no a convergenza

OsservazioneIl modello non fa assunzioni sul numero di cluster, potrebbero essere in�niti. Per potercampionare β e π, dobbiamo �ssare un numero �nito di cluster, K . A questi se neaggiunge uno vuoto, K + 1, che aggrega i pesi dei cluster (al momento vuoti), chepotrebbero manifestarsi nelle iterazioni successive.

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 8 / 54

Page 9: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Algoritmo Metropolis-Hastings

Metropolis-Hastings

Passi 4-5 dell'algoritmo Sub-Cluster HDP Sampler

Ci sono tre versioni di M-H, si di�erenziano in base a come vienecampionato z : merge locale, split locale e merge\split globale.

In generale nelle quattro mosse di Metropolis-Hastings calcoliamo:

H =p(v , ˆv |x)

p(v , v |x)· q(v , v |x , v , ˆv)

q(v , ˆv |x , v , v)

dove H è l'Hastings ratio. Quindi se u ∼ U([0, 1]):{u < min{1,H} accetto la proposta

u ≥ min{1,H} ri�uto la proposta

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 9 / 54

Page 10: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Algoritmo Metropolis-Hastings

Metropolis-Hastings: Passi dell'algoritmo

MH Split-Merge Framework1 Proporre un cluster per lo split o una coppia di clusters per il merge

2 Proporre le nuove etichette per i cluster z ∼ q(z|v, v)

3 Proporre i nuovi pesi globali dei cluster β ∼ q(β|z)

4 Proporre i nuovi pesi dei cluster in ogni documento π ∼ q(π|β, z)

5 Proporre i nuovi parametri latenti dei cluster θk ∼ q(θk |x, z)

6 Proporre i nuovi sub-topic per i nuovi cluster

7 Calcolare H e veri�care se accettare o ri�utare

Osservazioni:Nei passi 3,4,5 si utilizzano le posterior

per proporre le nuove etichette z si utilizzano dei parametri temporanei,{π1b, . . . , πDb, π1c , . . . , πDc , θb, θc}per proporre β non abbiamo m, l'approssimiamo:

mjk := argmaxm

p(m|β =α

K, z) = argmax

m

Γ(αK

)

Γ(αK

+ nj.k)s(nj.k ,m)(

α

K)m

j = 1, . . . ,D k = 1, . . . ,K (7)

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 10 / 54

Page 11: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Algoritmo Metropolis-Hastings

Metropolis-Hastings: mosse locali

Local Merge

b c d

Clusters prima della proposta di merge locale

a

Si propone l'unione di b e c

i nuovi clusters dopo aver accettato il merge locale

c d

Etichette, z , assegnate in modo deterministi-co e il peso globale β:

q(zji |v) = 1[zji = a], ∀i , j ∈ Ib ∪ Ic (8)

βa = βb + βc (9)

Local Split

a d e

Clusters prima della proposta di split locale

b c

Si propone lo split del cluster a

i nuovi cluster dopo aver accettato lo split locale

b c d e

(πb, πc) = πa · (πal , πar ) (10)

(θb, θc) = (θal , θar ) (11)

Non sono necessari conti aggiuntivi per leproposte di z , da q(zji |v , v) si è già campio-nato nel passo 3 dell'algoritmo Sub-ClusterHDP Sampler.

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 11 / 54

Page 12: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Algoritmo Metropolis-Hastings

Metropolis-Hastings: mosse globali

Le nuove etichette z sono campionate in tutti i cluster, utilizzando levariabili temporanee.

Global Merge

b c d

Clusters prima della proposta di merge globale

a

Si propone l'unione di b e c

i nuovi clusters dopo aver accettato il merge globale

c f

{πa = πb + πc

πk = πk ∀k 6= b, c(12){

θa ∼ q(θa|z , x) ∝ fx(xIb∪Ic |θa)fθ(θa|λ)

θk = θk ∀k 6= b, c

(13)

Global Split

a d e

Clusters prima della proposta di split globale

b c

Si propone lo split del cluster a

i nuovi clusters dopo aver accettato lo split globale

b c f g

{(πjb, πjc) = πja(πjal , πjar )

πk = πk ∀k 6= a(14){

(θb, θc) = (θal , θal)

θk = θk ∀k 6= a(15)

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 12 / 54

Page 13: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Algoritmo Metropolis-Hastings

Metropolis-Hastings: Sub-topic

Il passo 6 dell'algoritmo è un Gibbs-sampler.

Per campionare utilizziamo leposterior dei sub-topic

Monitoriamo:Lk = fx(x{k,l}|θkl)fx(x{k,r}|θkr ),verosimiglianza del clusterproposto

Iteriamo questo Gibbs interno�nchè tale quantità si stabilizzaentro una fascia, bastano poche

iterazioni, un centinaio.

●●●●●●●●●●●●●●

●●●●●●●

●●●

●●●●●

●●●

●●

●●●

●●

●●

●●●●

●●

●●

●●

●●

●●●

●●●

●●

●●

●●●

●●

●●

●●

●●●

●●●●

●●

●●

●●●

●●●

●●●

●●

●●●●

●●

●●●●●●

●●●

●●

●●●●

●●

●●●●●●

●●

●●

●●

●●

●●●

●●●

●●●

●●

●●

●●

●●●●●

●●●

●●

●●●

●●●

●●●

●●●●

●●

●●●

●●●●●●●

●●

●●●

●●

●●●●

●●

●●●

●●

●●●●

●●

●●●

●●●

●●

●●

●●

●●

●●●

●●●●●●

●●●

●●

●●

●●●●●●

●●

●●

●●●●●

●●

●●

●●

●●

●●

●●●

●●

●●●

●●●●●

●●

●●●

●●●

●●

●●●●

●●

●●●●

●●

●●●●●

●●●●●●●●

●●●●●●●●●●

●●

●●●

●●

●●

●●●

●●●

●●

●●●●

●●

●●

●●●

●●●●●●●

●●

●●●

●●

●●●●

●●

●●●●

●●

●●

●●

●●●●●●●●●

●●

●●●

●●●

0 100 200 300 400 500

−37

000

−36

500

−36

000

−35

500

−35

000

Loglikelihood

Iter

Logl

ikel

ihoo

d

Figura: Loglikelihood proposed SubCluster

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 13 / 54

Page 14: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Il codice

Scelte implementative

Abbiamo reso il codice il più generale possibile, separandol'implementazione dell'algoritmo da tutto ciò che è modello dipendente.In questo modo l'algoritmo può essere utilizzato con modelli di�erenti. Leclassi principali sono:

HDP_MCMC: si occupa della gestione dell'algoritmo e di salvare irisultati

Model: si occupa delle quantità modello-dipendenti

Document: gestisce i dati

PosteriorAnalysis: gestisce le analisi a posteriori.

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 14 / 54

Page 15: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Il codice

Type.hpp

In Type.hpp si devono elencare i tipi utilizzati nel modello scelto. Per ognimodello si deve aggiungere una classe speci�ca con i tipi che locaratterizzano.Modello con verosimiglianza Categorica:

template < unsigned int DIM=1>class TypeCa t ego r i c a l {public :

//parametri latenti cluster/subcluster

using THETA = vec to r<double> ;//dato singolo

using Po in t = unsigned int ;//iperparametri dei parametri latenti cluster/subcluster

using HYP = vec to r<double>;//aggiornamenti iperparametri dei parametri latenti

cluster/subcluster

using STAT = vec to r<unsigned int>;} ;

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 15 / 54

Page 16: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Il codice

Cluster.hpp

Nelle classi Cluster sono state implementate le strutture e i metodi cheservono per la gestione del cluster: estrarre, memorizzare, impostare i datiassociati ai cluster e ai sub-cluster.

Il cluster è caratterizzato da peso, numero totale dei tavoli, parametrilatenti e statistica per aggiornarli; ognuna di queste quantità è presenteanche per i subclusters.

Una parametrizzazione di questo tipo consente di creare un'interfaccia perla gestione dei cluster, comune a tutti i tipi di verosimiglianze:

template <template <unsigned int>class ClassType , unsigned int DIM> class Gen e r i c C l u s t e r {public :

//Metodi per impostare , per visualizzare e altri metodi

} ;

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 16 / 54

Page 17: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Il codice

Cluster.hpp

Specializzazione nel caso di verosimiglianza Categorica:

class C a t e g o r i c a l C l u s t e r f i n a l : G e n e r i cC l u s t e r <TypeCatego r i c a l ,1>{

public ://Tipi ereditati da TypeCategorical

private ://Peso globale cluster e subclusters

//Parametro latente cluster e subclusters

//Statistiche per aggiornare parametro latente cluster e

subcluster

//Numero di tavoli cluster e subcluster

public ://Costruttore , distruttore

//Metodi per impostare , visualizzare e altri metodi

} ;

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 17 / 54

Page 18: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Il codice

Document.hpp

Classi per la gestione dei gruppi.La classe base o�re l'interfaccia comune a tutti i modelli; è una classevirtuale, ogni classe derivata deve de�nire tutti i metodi:

template<typename Type , unsigned int DIM> class

Gener icDocument {

// metodi per campionare i pesi dei cluster e dei

subcluster specifici del gruppo

// metodi per campionare i tavoli dei cluster e dei

subcluster

// metodi per aggiornare le etichette dei dati

// metodi per impostare/visualizzare gli attributi della

classe

// metodi di gestione dei dati

} ;

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 18 / 54

Page 19: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Il codice

Document.hpp

E' disponibile la classe derivata e specializzata per il modelloDirichlet-Categorica; contiene la de�nizione dei metodi e gli attributi perla gestione del documento:

template <unsigned int DIM=1>class Categor i ca lDocument f i n a l : public Gener icDocument <

TypeCatego r i c a l <DIM>,DIM>{private :

//contenitore dei dati

//vocabolario

//alpha , Nj

//pesi dei topic

//tavoli

//conteggi delle parole nei topic

public ://uso dei tipi ereditati da TypeCategorical

//definizione dei metodi nella classe base , costruttore ,

distruttore

} ;

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 19 / 54

Page 20: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Il codice

Document.hpp

I dati sono suddivisi per cluster, nei subcluster:

unordered_map < C l u s t e r ID ,p a i r < unordered_map < POINT , unsigned int>,

unordered_map < POINT , unsigned int> > > Zeta ;

Questo tipo di struttura è pensata per dati discreti, ma è adatta anche perdati continui. Esempio

L'uso delle mappe permette la ricerca del dato per chiave.

Nelle mosse di M-H globali si modi�cano tutti i documenti nel corpus; se laproposta viene ri�utata, si devono riportare le strutture allo stato originale.Per questo motivo la classe possiede il move constructor e il moveassignment operator.

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 20 / 54

Page 21: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Il codice

Model.hpp

Model rappresenta la scelta della prior sui parametri latenti e gestisce tutti iclusters. Si occupa dei campionamenti che dipendono dal modello. Laclasse generica rappresenta l'interfaccia comune a tutti i modelli; è unaclasse virtuale, tutti i metodi sono NULL.

template<typename Type , unsigned int DIM=1>class Mode lGener i c {

public ://Metodi per aggiornare i parametri latenti di clusters/

subclusters

//Metodi per gestire i clusters

//Metodi per il calcolo di verosimiglianza , densita ,

marginale dei dati

} ;

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 21 / 54

Page 22: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Il codice

Model.hpp

Specializzazione nel caso di modello Dirichlet-Categorical:

template <unsigned int DIM=1>class Ca t ego r i c a lMode l f i n a l :public ModelGener ic<TypeCatego r i c a l <DIM>,DIM>{

public ://Tipi ereditati da TypeCategorical

private ://Iperparametri , threads , numero di cluster

//Contenitore per i clusters

unordered_map<unsigned int , C a t e g o r i c a l C l u s t e r > C l u s t e r s ;public :

//Costruttori e distruttore

Ca t ego r i c a lMode l ( const Ca t ego r i c a lMode l&& mod) ;//Operatori

C a t e g o r i c a l C l u s t e r& operator [ ] ( unsigned int _K) ;Ca t ego r i c a lMode l& operator=(Ca t ego r i c a lMode l &&mod) ;

} ;

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 22 / 54

Page 23: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Il codice

Model.hpp

Il contenitore che gestisce i cluster è:

unordered_map<unsigned int , C a t e g o r i c a l C l u s t e r > C l u s t e r s ;

Abbiamo scelto un unordered_map perchè:

Key corrisponde all'ID del cluster

Struttura dinamica, facile inserimento ed eliminazione dei clusters perchiave, in qualsiasi posizione.

Per poter accedere ai metodi della classe che gestisce il cluster abbiamofatto l'overloading dell'operatore di accesso.

template<unsigned int DIM> Ca t e g o r i c a l C l u s t e r&Catego r i c a lMode l <DIM>: : operator [ ] ( unsigned int _K){return C l u s t e r s [_K] ;

}

Il motivo dell'utilizzo della move semantic è lo stesso della classeDocument.Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 23 / 54

Page 24: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Il codice

HDP_MCMC.hpp

La classe per la gestione dell'algoritmo si adatta a qualsiasi modello; lascelta del modello è tramite parametri template:

template<template <unsigned int> class MODEL, template <unsigned int> class DOCUMENT, unsigned int DIM=1>

class HDP_MCMC f i n a l {

private :v e c to r<DOCUMENT<DIM>> corpus ;MODEL<DIM> Model ;//flags per impostare l'esecuzione dell'algoritmo

//informazioni sul dataset

//iperparametri

//contenitori per le catene MCMC

//generatore di numeri aleatori

//numero di threads

//numeri di Stirling

. . .

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 24 / 54

Page 25: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Il codice

HDP_MCMC.hpp

. . .public :

//costruttore , distruttore

//acquisizione dataset e impostazioni per l'esecuzione

dell'algoritmo

//metodo per l'esecuzione dell'algoritmo

private ://metodo di swap

//metodi per il Gibbs sampler dei topic

//metodi per le mosse di Split e Merge

//metodo per il Gibbs sampler dei subtopic

//campionamento degli iperparametri

//salvataggio dei risultati

//altre funzioni

} ;

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 25 / 54

Page 26: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Il codice

HDP_MCMC.hppImpostazione del numero di threads

Il costruttore della classe acquisisce la variabile d'ambienteOMP_NUM_THREADS e la memorizza nell'attributo omonimo:

// Valore di default numero di thread (seriale)

OMP_NUM_THREADS=1;// Lettura numero massimo di thread

char∗ Env i r onmen tVa r i ab l e ;Env i r onmen tVa r i ab l e = getenv ("OMP_NUM_THREADS" ) ;

if ( Env i r onmen tVa r i ab l e !=NULL) {s td : : s t r i n g s t r e am s s ;s s << Env i r onmen tVa r i ab l e ;s s >> OMP_NUM_THREADS;

}

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 26 / 54

Page 27: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Il codice

HDP_MCMC.hppMove semantic

Gli attributi corpus e Model subiscono modi�che durante le mosse diMetropolis-Hastings; se la proposta viene ri�utata, devono essere riportatiallo stato originale. corpus e Model sono strutture complesse; per evitaresprechi di memoria che derivano dall'utilizzo di variabili temporanee, si èdeciso di sfruttare la move semantic:

template<class T> void Swap(T& Old , T& New) {T Temp( s td : : move ( Old ) ) ;Old = s td : : move (New) ;New = s td : : move (Temp) ;

}

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 27 / 54

Page 28: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Il codice

HDP_MCMC.hppGibbs_SubCluster

Il Gibbs sampler per i subcluster è un passaggio costoso; viene eseguito solonel caso di accettazione della proposta di split/merge:

if ( l o g ( static_cast<long double>(u ) ) < LogH ) {//accetto proposta

vec to r<TopicID> Propo s edC l u s t e r s ;Model . ViewKey ( P r opo s e dC l u s t e r s ) ;this−> Gibbs_SubCluste r ( P r opo s e dC l u s t e r s ) ;

}else{

// rifiuto proposta

this −> Swap ( Oldcorpus , co rpus ) ;this −> Swap(OldModel , Model ) ;K = Model . ViewK ( ) ;

}

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 28 / 54

Page 29: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Il codice

Altri �le

Nel �le Functions.hpp abbiamo racchiuso le funzioni che non dipendono dalmodello:

ComputeLogStirlingNumbers, si occupa del calcolo dei numeri diStirling, chiamata quando viene istanziato l'oggetto HDP_MCMC

Kahan_algorithm, funzione template per ridurre l'errore numericonelle somme

Antoniak, per il campionamento dei tavoli in Document

FindBestNumTable, per approssimare i tavoli.

Il �le Struct.hpp contiene la de�nizione di strutture utili nelle mosse M-H. I�le omprng.hpp, omprng.cpp, rngstream.hpp e rngstream.cpp contengonol'implementazione del generatore di numeri aleatori. ConCategoricalDatasetGenerator.cpp si possono generare dei dataset sinteticiper il modello Dirichlet-Categorica.

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 29 / 54

Page 30: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Il codice

PosteriorAnalysis.hpp

La classe generica per l'analisi a posteriori dichiara i metodi comuni ad ognimodello; la classe è virtuale, perciò ogni classe derivata deve de�nire tutti imetodi e aggiungerne se necessario. Legge i risultati da �le, li carica inopportune strutture e si interfaccia con l'ambiente di R.

template<typename Type , unsigned int DIM>class G e n e r i c P o s t e r i o r A n a l y s i s {public :

//metodi per acquisire i risultati

//metodi per analizzare le catene

//metodo per visualizzare la distribuzione dei cluster

//metodo per individuare il miglior clustering dei dati

//metodo per calcolare LPML

//metodo per tracciare i cluster

} ;

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 30 / 54

Page 31: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Il codice

PosteriorAnalysis.hpp

E' disponibile la classe derivata e specializzata per il modelloDirichlet-Categorica; alcuni suoi metodi, come l'analisi delle catene, nonsono speci�ci del modello, mentre i metodi che trattano il parametrolatente vanno adattati.

template <unsigned int DIM=1>class C a t e g o r i c a l P o s t e r i o r A n a l y s i s f i n a l : public

G e n e r i c P o s t e r i o r A n a l y s i s <TypeCatego r i c a l <DIM>,DIM>{private :

//contenitori per le catene

//vocabolario

//contenitori per i topic e per la distribuzione dei topic

//contenitori per il calcolo del miglior clustering

public ://uso dei tipi ereditati da TypeCategorical

//definizione metodi nella classe generica , costruttore e

distruttore

} ;

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 31 / 54

Page 32: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Analisi a posteriori

Analisi delle catene di K, α e γ

Si richiede di scegliere burnin e thinning della catena; è possibile reinserire ivalori �nchè non si è soddisfatti dell'analisi:

(a) Traceplot. (b) Autocorrelazione.

Figura: Analisi della catena dei K.

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 32 / 54

Page 33: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Analisi a posteriori

Riconoscere i topic

Obiettivo:

Assegnare un'etichetta ai cluster, identi�carli nel corso delle ultime iterazioni.

Per ogni blocco di iterazioni, considero i topic a cui non è stata ancora assegnataun'etichetta. Nei blocchi successivi posso individuare al massimo un topic simile.

A due topic θlref , θhi , h > l si assegna la stessa etichetta se:

cos(φθlrefθhi

) =θlref ·θ

hi

‖θlref‖‖θhi ‖

vicino a 1

maggior numero di parole in comune con pesi wi , tali che∑

i wi ≥ 0.7

se θhi ha già un'etichetta, ma ha più parole in comune con θlref rispetto ai topic nelsuo gruppo, gli si assegna la stessa etichetta di θlref .

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 33 / 54

Page 34: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Analisi a posteriori

Riconoscere i topic

Disegnamo i topic riconosciuti e le corrispondenti distribuzioni:

0 20 40 60 80 100

0.0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

Topic during last 100 iterations

Topi

c w

eigh

t

Topics

346

0.0

0.2

0.4

0.6

0.8

1.0

Topic label

Topi

c w

eigh

t

Traiettorie DP globale

1 2 3 4 5 6 7 8 9 10 12 14 16

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 34 / 54

Page 35: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Analisi a posteriori

WordCloud

La dimensione della parola è proporzionale al suo peso nel topic.

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 35 / 54

Page 36: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Analisi a posteriori

Least square clustering

Il metodo individua il miglior clustering dei dati cLS secondo il criterio deiminimi quadrati:

cLS := argminc∈{c1...cg}

N∑i=1

N∑j=1

(δij(c)− πij)2 (16)

Possibile output:

Best clustering found at iteration 5047Best clustering has 10 clusters

Cluster 0 has 186 elementsCluster 1 has 80 elements

...Cluster 8 has 13 elementsCluster 9 has 10 elements

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 36 / 54

Page 37: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Analisi a posteriori

LPML

La Log Pseudo Marginal Likelihood è un indice di cross-validazione chevaluta l'adattamento dei dati al modello:

LPML =D∑j=1

Nj∑i=1

log(CPO(ij)) (17)

dove con CPO(ij) si stima la predizione per il dato (ij) fatta dal modellocon tutti i dati eccetto (ij).In generale si sceglie il modello con LPML più alto; per noi ciò che varianon è il modello in sè ma gli iperparametri.

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 37 / 54

Page 38: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Parallelizzazione

Parallelizzazione

Per la parallelizzazione abbiamo scelto di utilizzare OpenMP per nonapportare molte modi�che al codice.È stato possibile fare svariati tentativi di parallelizzazione, per poi scartarequelli poco convenienti e performanti.

Abbiamo deciso di parallelizzare i cicli for, dato la loro notevole presenzanel codice. Principalmente abbiamo cicli che iterano sul numero di cluster(varia da iterazione a iterazione) e sul numero di gruppi

#pragma omp p a r a l l e l for

for ( s i z e_t k=0; k<K; k++)

#pragma omp p a r a l l e l for

for ( s i z e_t d=0; d<D; d++)

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 38 / 54

Page 39: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Parallelizzazione

Parallelizzazione

Per decidere cosa parallelizzare abbiamo cercato di individuare le sezioni piùcostose dal punto di vista computazionale, che risultano essere:

i campionamenti delle etichette z e z , questo accade sia al passo 3dell'algoritmo sia nelle mosse globali di Metropolis Hastings

i passi di Metropolis-Hastings, che comprendono, oltre icampionamenti di z e z , anche i passi del Gibbs per i sub-cluster doveil numero di iterazioni è all'incirca un centinaio

il calcolo della log L, quantità necessaria per il calcolo di H nel localmerge.

In ogni caso abbiamo deciso di parallelizzare anche gli altri campionamenti,perchè con dataset di grandi dimensioni si ha un miglioramento delleprestazioni.

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 39 / 54

Page 40: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Parallelizzazione

Parallelizzazione

Ogni thread si occupa di un campionamento:

#pragma omp p a r a l l e l for s c h edu l e ( static , 1 )for ( typename Corpus : : s i z e_type d=0; d<D; d++){

co rpus [ d ] . UpdateA l lLoca lTab l eSub ( /*...*/ ) ;}

Se il carico di lavoro è sbilanciato:

#pragma omp p a r a l l e l for default ( none ) private (d , k , Beta , n j )s c h edu l e ( dynamic , 1 ) r e d u c t i o n (+:LogH)

for ( d=0;d<D;++d) {for ( k=0;k<K;++k ) {

/*...*/

if ( n j . k > 0) LogH+= /*...*/ ;}

}

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 40 / 54

Page 41: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Generatore di numeri aleatori in parallelo

Generatore di numeri aleatori in parallelo

E' necessario creare degli stream indipendenti di numeri aleatori, uno perogni thread.A questo scopo utilizziamo il generatore omprng implementato da MatthewBognar. Il generatore è una classe scritta in C++ pensata speci�catamenteper OpenMP; utilizza la classe RngStreams per generare streamindipendenti di numeri aleatori.Abbiamo modi�cato il generatore per i nostri scopi, aggiungendo delledistribuzioni utili.

Gen . setNumThreads (OMP_NUM_THREADS) ;

#pragma omp p a r a l l e l for s c h edu l e ( static , 1 )for ( unsigned int d=0; d<D; d++){

co rpus [ d ] . Sampl ing ( . . . , Gen ) ;}

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 41 / 54

Page 42: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Interfaccia con R

Interfaccia con R

Al termine dell'algoritmo, se l'utente desidera condurre l'analisi a posteriori,viene aperta una sessione di R e viene creato un oggetto di classePosteriorAnalysis, che acquisisce i risultati della simulazione e chiama gliscript di R.Per interfacciare R a C++ abbiamo usato i pacchetti RInside e Rcpp:

RInside apre una sessione protetta di R all'interno di un'applicazioneC++

Rcpp fornisce funzioni R e classi C++ per trasformare strutture dati eoggetti da un linguaggio all'altro.

Rcpp : : Numer icVector R_K( i t e r ) ;. . .R [ "AllK" ] = R_K;s td : : s t r i n g s r c = "source (\"../../src/Rscript/

KPosteriorAnalysis.R\")" ;R . p a r s eEv a l ( s r c ) ;

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 42 / 54

Page 43: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Osservazioni

Osservazioni

Non è possibile usare dataset in cui Nj > 1754: oltre questo valore nelcalcolo dei numeri di Stirling si oltrepassa il limite rappresentabile dallamacchina

La scala logaritmica permette una precisione maggiore nel calcolo didensità, Hastings ratio, verosimiglianze e permette di rappresentare piùnumeri di StirlingUtilizzo dei �le binari per:

risultati salvati durante l'esecuzione dell'algoritmo�le di grosse dimensioni.

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 43 / 54

Page 44: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Iperparametri

Iperparametri: λ, α, γ

Nelle simulazioni :

α e γ danno indicazioni all'algoritmo su quanti topics prevedere. Senon si hanno informazioni a priori sul numero di topics nei documentio nel corpus è buona cosa assegnare delle prior vaghe.

λ < 1 individuiamo un maggior numero di topics rispetto a λ > 1.Questo succede perchè λ < 1 implica massa concentrata su pochecomponenti di θ e tante componenti con pesi prossimi allo zero,questo signi�ca topics distinguibili. λ > 1 implica tante componenti diθ simili tra di loro perciò topics non facilmente distinguibili.

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 44 / 54

Page 45: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Iperparametri

Iperparametri: λ, α, γ

Bisogna fare attenzione anche a come scegliere il numero di parole distinteW . Supponiamo di voler generare un dataset con D = 5, Nj = 80, α = 1,γ = 10, K = 8, λ = 0.5. Se W = 100 parole distinte e proviamo a simularesotto varie condizioni il numero di topics esplode rispetto al valore reale.

Pensiamo che ci siano troppe parole distinte rispetto al numero di topicsreale e λ = 0.5 porta a distinguere più topics rispetto a quelli imposti.

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 45 / 54

Page 46: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Dataset reale: KOS

KOS

Come applicazione ad un caso reale, abbiamo scelto dall'UCI MachineLearning Repository il dataset KOS. La sorgente dati è il Daily KOS, unweb blog americano a sfondo politico che pubblica notizie e opinioni da unpunto di vista liberale. Il corpus è dunque una collezione di post su questoblog.

Il dataset disponibile sul Repository è già stato processato, ossia sono staterimosse le stopwords (parole più comuni del liguaggio) e le parole checompaiono meno di dieci volte.Abbiamo ridotto il dataset, rimanendo con N = 96942 parole totali inD = 750 documenti e W = 6366 parole distinte.

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 46 / 54

Page 47: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Dataset reale: KOS

KOS

Assunzioni :

lambda = 0.5

prior vaga su γ: γ ∼ G(0.25, 0.05), in quanto a priori non conosciamoil numero di clusters che potrebbero esserci, E [K ] = 33

ogni documento è un post, perciò non sarà lungo: supponiamo chetratti al massimo 5 argomenti, α ∼ G(2.0, 2.0).

16 threads, 2000 iterazioni totali con 80 iterazioni per il Gibbs interno. Nonabbiamo potuto eseguire molte iterazioni per motivo di tempo in quanto iltempo di esecuzione è stato 1.17339e + 06sec , all'incirca 2 settimane.

E [K |dati ] = 43

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 47 / 54

Page 48: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Dataset reale: KOS

KOS

Riportiamo lo storico dei pesi dei cluster riconosciuti nelle ultime 100iterazioni:

0 20 40 60 80 100

0.0

0.1

0.2

0.3

0.4

Topic during last 100 iterations

Topi

c w

eigh

tTopics

2545182312322286128113301380

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 48 / 54

Page 49: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Dataset reale: KOS

KOS

Osservando lo storico dei βk deduciamo che vi sono 5 topics prevalenti:

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 49 / 54

Page 50: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Estensione del codice

Estensione del codice: modello Normale-Normale

Consideriamo l'applicazione dell'HDPM al problema in [3]

xji |zji , (µk)∞k=1, σ2

indip∼ N (µzji , σ2) i = 1, . . . ,Nj , j = 1 . . .D (18)

µk |µ0, ψ2

0

iid∼ N (µ0, ψ2

0) (19)

E' possibile estendere il codice:

Modello coniugato: a posteriori µk ha ancora distribuzione normale

Il contenitore per i dati Zeta, pensato per dati discreti, è adatto anchea dati reali Esempio

Formato del dataset: [GroupID, Dato]

De�nizione di TypeNormal e delle classi NormalCluster, NormalModel,

NormalDocument, NormalPosteriorAnalysis.

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 50 / 54

Page 51: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Riferimenti bibliogra�ci

Riferimenti bibliogra�ci

[1] J.Chang, J.W.Fisher III. Parallel Sampling of HDPs using sub-clusters

splits. Neural Information and Processing Systems (NIPS), Dec 20147.

[2] D. B. Dahl (2006). Model-Based Clustering for Expression Data via a

Dirichlet Process Mixture Model. In Bayesian Inference for GeneExpression and Proteomics, Kim-Anh Do, Peter Müller, MarinaVannucci (Eds.), Cambridge University Press.

[3] S.Kim, P.Smyth. Hierarchical Dirichlet Processes with Random E�ects.

Advances in Neural Information Processing Systems 19 (NIPS 2006)

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 51 / 54

Page 52: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Gibbs Sampler

Sub-Cluster HDP Sampler

Passo 2:Posterior dei pesi speci�ci dei topics nei documenti e dei loro sub-topic:

(πj1, . . . , πjk , πk+1)| • ∼Dir(αβ1 + nj.1, . . . , αβk + nj.k , γ) j = 1, . . . ,D (20)

(πjkl , πjkr )|• ∼ Dir(αβkl + nj.kl , αβkr + nj.kr ) j = 1, . . . ,D k = 1, . . . ,K (21)

dove nj .k = ] parole del documento j �nite nel topic k .Posterior dei parametri latenti dei topic e dei rispettivi sub-topic

p(θk |x , z) ∝ fx(xIk |θk)fθ(θk |λ) k = 1, . . . ,K (22)

p(θkh|•) ∝ fx(xIkh |θkh)fθ(θkh|λ) k = 1, . . . ,K h ∈ {l , r} (23)

Ik := {ji : zji = k} sottoinsieme dei dati che appartengono al cluster k .

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 52 / 54

Page 53: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Gibbs Sampler

Passo 3:La posterior per campionare le etichette z :

p(zji |x , πj , θ) ∝K∑

k=1

πjk fx(xji |θk)1[zji = k] j = 1, . . . ,D i = 1, . . . ,Nj (24)

non è altro che una Categorical.La posterior per campionare il sub-topic, una volta deciso il topic diappartenenza:

p(zji |•) ∝ πjzji zji fx(xji |θzji zji ) j = 1, . . . ,D i = 1, . . . ,Nj (25)

è una Bernoulli.

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 53 / 54

Page 54: Parallel Split-Merge MCMC for the HDPforma/Didattica/ProgettiPacs/Parisi...Parallel Split-Merge MCMC for the HDP Debora Parisi Stefania Perego Marzo 2016 Debrao Prisi,a Stefania Perego

Gibbs Sampler

Passi 6-7:La p(β|z) non è nota in forma chiusa → p(β|m), mjk è la variabileausiliaria: numero di tavoli nel ristorante j che serve il piatto k . Laposterior per campionare nel Passo 6:

p(mjk |β, π) =Γ(αβk)

Γ(αβk + nj.k)s(nj.k ,mjk)(αβk)mjk j = 1, . . . ,D k = 1, . . . ,K (26)

p(mjkh|•) =Γ(αβkh)

Γ(αβkh + nj.kh)s(nj.kh, mjkh)(αβkh)mjkh

j = 1, . . . ,D k = 1, . . . ,K h ∈ {l , r} (27)

dove s(n,m) è il numero di Striling di prima specie. La posterior percampionare i pesi globali dei topic, dove m.k = ] tavoli che servono k :

(β1, . . . , βk , βk+1)| • ∼Dir(m.1, . . . ,m.k , γ) (28)

(βkl , βkr )|• ∼ Dir(γ + m.kl , γ + m.kr ) k = 1, . . . ,K (29)

Debora Parisi, Stefania Perego Parallel Split-Merge MCMC for the HDP Marzo 2016 54 / 54