2010-03-22 24 views
8

Her bir numunenin 0 ve 1 arasında bir ağırlığı olduğu bir dizi ağırlıklı numuneye sahip olduğumu varsayalım. Bir gaussian karışımının parametrelerini tahmin etmek istiyorum. Daha yüksek ağırlığa sahip örneklere doğru eğilimlidir. Normal olmayan ağırlıklı durumlarda gaussian karışım tahmini, EM algoritması ile yapılır. Hiç kimse, ağırlıkları geçmeye izin veren bir uygulamayı (herhangi bir dil iyi) biliyor mu? Değilse, ağırlıkları hesaplamak için algoritmayı nasıl değiştireceğini bilen var mı? Eğer değilse, bir tanesi bana, problemin maksimum-log-olabilirlik formülasyonunun başlangıç ​​formülü içindeki ağırlıkların nasıl birleştirileceğine dair bir ipucu verebilir mi?Ağırlıklandırılmış bir gruptan elde edilen tahmini gauss (karışım) yoğunluğu

Teşekkürler!

+0

mi burada değiştirilmiş versiyonu bir piton uygulanmasını bulundu mu? Ayrıca, temel ve genel ile yüksek uzmanlık arasında değişen çok sayıda * sayısal ve analiz paketi bulunmaktadır. Sorun alanınız ve tercih ettiğiniz ortam hakkında bir şey söylediyseniz yardımcı olabilir. Fortran? C++? Java? Python? R veya root gibi büyük yeni bir araç öğreniyor musunuz? – dmckee

+0

Tamam, o zaman tercih ettiğim dil Python olurdu. Ancak kök (yukarıdaki hiç duyulmamış) dışında yukarıdaki dillerin herhangi biri de iyi olurdu. EM, Tahmin Maksimizasyonu anlamına gelir ve bir gauss karışım modelinin parametrelerinin verilerinden tahmin edilmesinde kullanılabilecek genel tekrarlama şemasıdır. – Christian

+0

Bu yönteme aşina değilim ve herhangi bir özel öneride bulunamıyorum. – dmckee

cevap

0

Başka bir cevap olmadığı için sadece bir öneri gönderilir.

Normal EM'yi GMM ile kullanabilirsiniz (örneğin, OpenCV için birçok dil için birçok sarmalayıcıya sahiptir) ve "daha fazla ağırlık" sahibi olmak istediğiniz kümeye iki kez bir miktar nokta koyun. Bu şekilde, EM bu noktaları daha önemli olarak değerlendirirdi. Önemli noktaları sonra daha sonra kaldırabilirsiniz.

Aksi takdirde, bu, gelişmiş istatistiklerde güçlü bir arka planınız yoksa oldukça aşırı bir matematiğe gidiyor.

+0

Ya çok fazla noktaya sahipseniz veya tam anlamıyla tamsayı olmadığında işe yaramıyor ağırlıklar. Her ikisine de sahip olduğum gibi: tamsayı ağırlıkları olmayan milyonlarca noktadan oluşan bir histogram ... – ansgri

3

Ağırlıklandırılmış bir günlük Olabilirlik işlevini hesaplayabilirsiniz; Sadece her noktayı ağırlığı ile çarpın. Bunun için log-Olabilirlik işlevini kullanmanız gerektiğini unutmayın.

Sorununuz, $ - \ ln L = \ sum_i w_i \ ln f (x_i | q) $ değerini en aza indirgemek için azalır (orijinal form için bkz. the Wikipedia article).

4

Sadece aynı problemi yaşadım. Gönderi daha eski olsa da, başka biri için ilginç olabilir. honk'un cevabı prensipte doğru, algoritmanın uygulanmasını nasıl etkilediğini görmek hemen değil. Expectation Maximization ve çok güzel bir Tutorial için Vikipedi makalesinden, değişiklikler kolayca elde edilebilir.

$ v_i $ i-th örneğinin ağırlığıysa, öğreticiden gelen algoritma (Bölüm 6.2'nin sonuna bakın), $ gamma_ {ij} $ 'nin bu ağırlıklandırma faktörü ile çarpılacağı şekilde değişir. Yeni ağırlıkların hesaplanması için $ w_j $, $ n_j $, sadece n yerine $ \ sum_ {i = 1}^{n} v_i $ ağırlıklarının toplamına bölünmelidir. Bu ...