2010-03-22 8 views
8

Si supponga di avere una serie di campioni ponderati, in cui ogni campione ha un peso corrispondente compreso tra 0 e 1. Mi piacerebbe stimare i parametri di una distribuzione di miscela gaussiana che è sbilanciato verso i campioni con un peso maggiore. Nel solito caso non pesato, la stima della miscela gaussiana viene eseguita tramite l'algoritmo EM. Qualcuno sa un'implementazione (qualsiasi lingua è ok) che consente di superare i pesi? In caso contrario, qualcuno sa come modificare l'algoritmo per tenere conto dei pesi? In caso contrario, qualcuno può darmi un suggerimento su come incorporare i pesi nella formula iniziale della formulazione massima del log-verosimiglianza del problema?Calcolo della densità gaussiana (miscela) da una serie di campioni ponderati

Grazie!

+0

è "EM" minimizzazione errore o qualcosa di completamente diverso? Inoltre, ci sono * molti * pacchetti numerici e di analisi che vanno dal semplice al generale al più specializzato. Potrebbe aiutarti se hai detto qualcosa sul tuo dominio problematico e sull'ambiente preferito. Fortran? C++? Giava? Pitone? Stai bene imparando un nuovo strumento importante come R o root? – dmckee

+0

Ok, allora il mio linguaggio preferito sarebbe Python. Ma una delle lingue sopra elencate tranne la radice (mai sentita) dovrebbe essere ok. EM sta per Massimizzazione della stima ed è uno schema iterativo generale che può essere utilizzato per la stima dei parametri di un modello di miscela gaussiana dai dati. – Christian

+0

Non ho familiarità con questo metodo e non posso dare consigli specifici. – dmckee

risposta

0

Solo un suggerimento poiché non vengono inviate altre risposte.

È possibile utilizzare il normale EM con GMM (OpenCV per ex ha molti wrapper per molte lingue) e inserire alcuni punti due volte nel cluster che si desidera avere "più peso". In questo modo l'EM considererebbe questi punti più importanti. Puoi rimuovere i punti extra in un secondo momento se è importante.

Altrimenti, penso che questo valga matematica abbastanza estrema a meno che non si abbia un forte background nelle statistiche avanzate.

+0

Questo non funziona quando si hanno molti punti o intrinsecamente non interi pesi. Come è successo a me avere entrambi: un istogramma di milioni di punti con pesi non interi ... – ansgri

3

È possibile calcolare una funzione di log-verosimiglianza ponderata; basta moltiplicare ogni punto con il suo peso. Si noti che è necessario utilizzare la funzione log-Likelihood per questo.

Quindi il problema si riduce a ridurre a icona $ - \ ln L = \ sum_i w_i \ ln f (x_i | q) $ (vedere the Wikipedia article per il modulo originale).

4

Ho appena avuto lo stesso problema. Anche se il post è più vecchio, potrebbe essere interessante per qualcun altro. La risposta di honk è in linea di principio corretta, non è immediato vedere come influenza l'implementazione dell'algoritmo. Dall'articolo di Wikipedia per Expectation Maximization e un bellissimo Tutorial, le modifiche possono essere ricavate facilmente.

Se $ v_i $ è il peso del campione i-esimo, l'algoritmo del tutorial (vedere la fine della Sezione 6.2.) Cambia in modo che $ gamma_ {ij} $ venga moltiplicato per quel fattore di ponderazione. Per il calcolo dei nuovi pesi $ w_j $, $ n_j $ deve essere diviso per la somma dei pesi $ \ sum_ {i = 1}^{n} v_i $ anziché solo n. Ecco ...