2010-03-22 51 views
8

Supposons que j'ai un ensemble d'échantillons pondérés, où chaque échantillon a un poids correspondant entre 0 et 1. Je voudrais estimer les paramètres d'une distribution de mélange gaussien qui est biaisé vers les échantillons avec un poids plus élevé. Dans le cas habituel, l'estimation du mélange gaussien non pondéré est effectuée via l'algorithme EM. Est-ce que quelqu'un connaît une implémentation (n'importe quelle langue est correcte) qui permet de passer des poids? Si non, quelqu'un sait-il comment modifier l'algorithme pour tenir compte des poids? Si non, quelqu'un peut-il me donner un indice sur la façon d'incorporer les poids dans la formule initiale de la formulation du log-maximum de vraisemblance?Estimer la densité gaussienne (mélange) à partir d'un ensemble d'échantillons pondérés

Merci!

+0

est la minimisation d'erreur « EM », ou tout autre chose? En outre, il existe * de nombreux paquets numériques et d'analyse allant de base et général à hautement spécialisé. Cela peut être utile si vous avez parlé de votre domaine de problème et de votre environnement préféré. Fortran? C++? Java? Python? Êtes-vous OK apprendre un nouvel outil majeur comme R ou root? – dmckee

+0

Ok, alors ma langue préférée serait Python. Mais l'une des langues ci-dessus, sauf la racine (jamais entendu parler) serait aussi bien. EM est l'abréviation de Maximisation des estimations et est un schéma itératif général qui peut être utilisé pour l'estimation des paramètres d'un modèle de mélange gaussien à partir de données. – Christian

+0

Je ne connais pas cette méthode et je ne peux pas faire de recommandations spécifiques. – dmckee

Répondre

0

Juste une suggestion car aucune autre réponse n'est envoyée.

Vous pouvez utiliser l'EM normal avec GMM (OpenCV par exemple a beaucoup de wrappers pour de nombreuses langues) et mettre deux points dans le cluster que vous voulez avoir "plus de poids". De cette façon, la ME considérerait ces points plus importants. Vous pouvez supprimer les points supplémentaires plus tard si cela a de l'importance. Sinon, je pense que cela va assez mathématiques extrêmes, sauf si vous avez une solide expérience dans les statistiques avancées.

+0

Cela ne fonctionne pas quand vous avez beaucoup de points ou intrinsèquement non-entier poids. Comme il m'est arrivé d'avoir les deux: un histogramme de millions de points avec des poids non entiers ... – ansgri

3

Vous pouvez calculer une fonction log-vraisemblance pondérée; Il suffit de multiplier chaque point avec son poids. Notez que vous devez utiliser la fonction log-Likelihood pour cela. Donc, votre problème se résume à réduire $ - \ ln L = \ sum_i w_i \ ln f (x_i | q) $ (voir the Wikipedia article pour le formulaire original).

4

Je viens d'avoir le même problème. Même si le post est plus ancien, il pourrait être intéressant pour quelqu'un d'autre. La réponse d'honk est en principe correcte, il n'est pas immédiat de voir comment cela affecte la mise en œuvre de l'algorithme. De l'article de Wikipedia pour Expectation Maximization et un très beau Tutorial, les changements peuvent être dérivés facilement. Si $ v_i $ est le poids du ième échantillon, l'algorithme du tutoriel (voir fin de la section 6.2.) Change de sorte que $ gamma_ {ij} $ est multiplié par ce facteur de pondération. Pour le calcul des nouveaux poids $ w_j $, $ n_j $ doit être divisé par la somme des poids $ \ sum_ {i = 1}^{n} v_i $ au lieu de simplement n. C'est ça ...