Pomegranate: Pertanyaan: Pengambilan sampel dari probabilitas bersyarat

Dibuat pada 28 Feb 2016  ·  18Komentar  ·  Sumber: jmschrei/pomegranate

Halo,
Saya tidak tahu apakah ini tempat yang tepat untuk menanyakan ini, tolong beri tahu saya jika tidak.
Untuk tesis master saya, saya ingin memperkirakan probabilitas bersyarat dari beberapa variabel acak yang dapat berupa diskrit dan kontinu (campuran variabel kontinu dan diskrit). Saya pikir ini bisa dilakukan dengan menggunakan buah delima dengan melakukan estimasi kepadatan pada campuran ini dan pada distribusi bersama dari variabel bukti. Hasilnya akan menjadi pecahan dari 2 distribusi campuran, tetapi bukan distribusi bentuk tertutup. Jadi, untuk mengambil sampel dari distribusi bersyarat, saya harus menggunakan sampling penolakan (atau metode MCMC yang dioptimalkan). Apakah ini benar?

Komentar yang paling membantu

@jmschrei : Tentu! Metode sample() akan luar biasa atau kemungkinan untuk memigrasikan model delima ke PyMC sehingga pengambilan sampel dapat dilakukan di sana. :)

Semua 18 komentar

delima saat ini tidak mendukung distribusi bersyarat yang bergantung pada distribusi berkelanjutan, sayangnya. Ini adalah sesuatu yang ingin saya tambahkan segera. Idenya terdengar masuk akal sekalipun. Anda dapat mempertimbangkan PyMC, yang lebih lengkap di area ini.

Daripada, jika saya boleh, saran. PyMC juga mendukung campuran distribusi, HMM, dll. Tetapi tidak ada metode pabrik untuk membuatnya. Akan sangat bagus jika buah delima (yang memiliki antarmuka yang sangat jelas) dapat berintegrasi dengan metode pengambilan sampel (yang dioptimalkan) dari PyMC. Mungkin, dengan mengubah model delima menjadi model PyMC.

Itu sepertinya ide yang masuk akal. Namun, jika saya punya waktu untuk mengaturnya, saya juga punya waktu untuk menerapkannya di buah delima. Saya benar-benar akan punya waktu hari ini untuk mengerjakan masalah ini. Jika Anda dapat memberikan cuplikan kode sampel yang ingin Anda lihat berfungsi, saya dapat melihat apakah saya dapat segera menerapkannya.

Saya belum pernah menggunakan buah delima, saya sedang dalam tahap mencari perpustakaan terlengkap untuk masalah saya. Tetapi dengan distribusi bersyarat saya akan memiliki semuanya. Apa yang saya miliki, adalah kode saya saat ini di mana saya melakukan persis seperti yang saya sebutkan di posting pertama saya, tetapi hanya menggunakan campuran gaussians (yang ada turunan bentuk tertutup).

edit: Saya akan menunjukkan cuplikan bagaimana saya menggunakannya sekarang dengan sklearn GMM

weighted_fit adalah versi tambahan dari sklearns fit() yang menangani data berbobot

gmm.weighted_fit(data,berat_data)

data saya adalah vektor kontinu 3 dimensi [X,Y,Z]

z=1,2

P(X=nan,X=nan | p=Z)

(con_mean, con_cov, con_weights) = utility.cond_dist_gmm(np.array([np.nan,np.nan,z]), gmm.means_, gmm._get_covars(), gmm.weights_)

psueodocode ilustratif untuk apa yang perlu saya tambahkan. Pada dasarnya, jika Anda memiliki sesuatu seperti ini:

a = NormalDistribution( 5, 2 )
b = ConditionalGaussianDistribution( w=[5], w0=2, sigma=2 )

Itu akan menentukan distribusi induk yang normal, dan distribusi normal bersyarat yang berpusat di sekitar regresi linier orang tua. Apa pun yang paling nyaman bagi Anda.

Saya tidak yakin persis apa yang Anda tanyakan. GMM diimplementasikan dalam buah delima (dan saya pikir lebih cepat daripada sklearn). Apakah Anda mencari Model Campuran Gaussian Bersyarat?

GMM bersyarat yang saya miliki.
Saya akan mengungkapkannya secara berbeda, mengingat data dengan variabel diskrit dan kontinu, misalnya d=[c1,c2,d1,d2].
Saya ingin dapat melakukan ini:

k model campuran komponen, untuk memodelkan data kontinu [d1,d2], multivariatnya adalah 2 dimensi untuk model vektor [d1,d2]

gmm=MixtureDistribution(MultivariateGaussianDistribution1, MultivariateGaussianDistribution2, ..., MultivariateGaussianDistributionk)

distribusi diskrit

cat1=DiscreteDistribution([(0,0.1),(1,0.3),(2,0.6)])
cat2=DiscreteDistribution([(0,0.6),(1,0.4)])

model baru mendefinisikan distribusi gabungan dari data kontinu dan diskrit -> p(d)

Saya tidak berpikir ini mungkin, namun, dalam buah delima

Saya pikir mungkin itu sebabnya tidak jelas apa yang saya maksud, saya mencampur campuran distribusi dengan distribusi gabungan campuran ...

lihat Distribusi bersama "kasus campuran" di bagian bawah halaman untuk formulasi matematika

d_model=Distribusi Bersama( gmm,cat1,cat2)

sesuaikan parameter model dengan data

d_model.from_sample(data)

sekarang mengingat bahwa saya tahu (kira-kira) probabilitas gabungan, saya ingin tahu misalnya probabilitas gabungan [c1,c2] mengingat d1=1 dan d2=0

cond_d = ConditionalDistr(d_model,[np.nan,np.nan,1,0] )

Maaf, saya masih belum sepenuhnya mengerti apa yang Anda maksud. Apakah Anda mengatakan bahwa Anda ingin a dapat mendefinisikan distribusi bersyarat untuk memiliki orang tua kontinu dan diskrit? Pada dasarnya, jaringan Bayesian dengan variabel diskrit dan kontinu di dalamnya?

Ya, itu akan saya pikir. Tetapi saya melakukan penelitian lebih lanjut dan saya akan menghindari segala bentuk metode pengambilan sampel yang mendukung EM. Bahkan jika ini mengurangi ekspresi model saya. Jadi, jika Anda menerapkan model campuran gaussian bersyarat (implementasi saya sendiri tidak berfungsi dengan baik), maka itu akan sangat dihargai. Saya dapat menyediakan kertas yang saya gunakan, tetapi Anda mungkin memiliki semua sumber daya yang Anda butuhkan.

Tentu, saya ingin melihat koran hanya untuk memastikan kita berada di halaman yang sama.

Ada 2 pendekatan yang saya temukan:
Yang saya coba: Lampiran A dalam Proses Gaussian untuk Pembelajaran Mesin
atau Bab 2 dalam Model Campuran Gaussian Bersyarat untuk Pemetaan Risiko Lingkungan

Apakah Anda membuat kemajuan menuju distribusi bersyarat?

Saya belum punya banyak waktu untuk mendalami sesuatu seperti ini, hari kunjungan calon mahasiswa adalah minggu ini. Saya akan segera kembali ke masalah ini.

Ini benar-benar jatuh dari radar saya, saya minta maaf! Jika saya mengerjakan ini segera, apakah itu berguna bagi Anda, atau apakah Anda menyelesaikan tesis Anda?

Tidak masalah.
Dan terima kasih telah kembali kepada saya, tetapi tesis saya sudah selesai.
Semoga sukses dengan perpustakaan Anda.

Pada 01 Sep 2016, pukul 04:21, Jacob Schreiber [email protected] menulis:

Ini benar-benar jatuh dari radar saya, saya minta maaf! Jika saya mengerjakan ini segera, apakah itu berguna bagi Anda, atau apakah Anda menyelesaikan tesis Anda?


Anda menerima ini karena Anda yang menulis utas.
Balas email ini secara langsung, lihat di GitHub https://github.com/jmschrei/pomegranate/issues/86#issuecomment -243958007, atau nonaktifkan utasnya https://github.com/notifications/unsubscribe-auth/AG5qEFMbUPk0uoKA4JTxdt8CaxTfPja.

Dear @jmschrei apa proses Anda tentang topik ini? Akan juga sangat tertarik. Terima kasih!

Hai @jaSunny. Bisakah Anda menjelaskan dengan tepat apa yang ingin Anda terapkan?

@jmschrei : Tentu! Metode sample() akan luar biasa atau kemungkinan untuk memigrasikan model delima ke PyMC sehingga pengambilan sampel dapat dilakukan di sana. :)

Apakah halaman ini membantu?
0 / 5 - 0 peringkat