HMM'leri sınıflandırma için nasıl eğitebilirim?


12

Bu yüzden sınıflandırma için HMM'leri eğittiğinizde standart yaklaşımın:

  1. Veri kümelerinizi her sınıf için veri kümelerine ayırın
  2. Sınıf başına bir HMM eğitin
  3. Test setinde, her pencerenin her pencereyi sınıflandırma olasılığını karşılaştırın

Ama HMM'yi her sınıfta nasıl eğitebilirim? Sadece bir sınıfa ait verileri birleştirir miyim? Ama zaman serisi verileri sıralı olması anlamına gelmiyor - ve eğer bunu yaparsam bazı veri noktalarının ardışık olmadıklarını söylüyorum?

Daha somut olabilmek için 96xT matrisi olan bazı EEG verilerim var, burada 96 farklı vektörden farklı frekansların güç spektral yoğunlukları ve T sinyalin süresi (bazı örnekleme hızında)

Bu, deney protokolünden bildiğim pencerelere bölünebilir (veriler etiketlenir) ve böylece her sınıf için 96 * t matris kümelerini bir araya getirebilirim. Burada t, T'den küçüktür ve her pencerenin boyutunu belirtir.

Daha sonra HMM'yi bu veriler hakkında nasıl eğitebilirim? Eğer pmtk3 araç takımını kullanmaya çalışıyorum yardımcı oluyor, ama gerçekten bir şey kullanmaya açıkım - güç spektral yoğunlukları sürekli değil ayrık olduğu için gerçek değerli gözlemlerle başa çıkabilmelidir (varsayılan MATLAB araç kutusu sadece ayrı gözlemlerle).

Amaç, EEG veri pencerelerini etiketli veriler üzerinde eğitim almış belirli bir zihinsel duruma göre sınıflandırabilmektir. Berlin BCI Yarışması verilerini kullanan bir beyin-bilgisayar arayüzü problemidir .


1
Does bu sayfayı neye ihtiyacınız takım?
Mart'ta Merours

Öyle görünüyor - Emin olmak için deneyeceğim. Sadece multinomlardan ziyade Gauss ve Gauss modellerinin karışımına izin verir. Görünüşe göre küresel olarak bir modeli birden fazla gözlem üzerinde eğitebilirsiniz . Bu yüzden iyi görünüyor. Python'u çok daha geniş bir kullanımı olduğu için düzgün bir şekilde öğrenmek için anlam ifade ettim. Teşekkürler :)
Alex McMurray

Yanıtlar:


9

Sınıflandırma için HMM'leri kullanmak için tanımladığınız yaklaşım gerçekten sadece sınıflandırmak istediğiniz bağımsız sekanslara sahip olduğunuz ayarlara uygulanabilir. Örneğin, cümle duygularını olumlu ya da olumsuz olarak sınıflandırıyor olsaydım, tanımladığınız gibi her biri için bir HMM oluşturabilirdim. Burada verdiğim ilgili cevaba bakınız . Bunun, posteriorları karşılaştırmadan önce dizileri sınıflandırılacak anlamlı parçalara ayırabileceğim varsayımına dayandığına dikkat edin. Etkili bir büyük boy zaman serisine sahip olduğunuz için bu sorun için geçerli değildir . İşte deneyeceğim.T

Reddit'te her sınıf için tek bir devlet atamaktan çekintiğinizden bahsettiniz . Bunu denedin mi? Düşündüğünüz kadar kötü çalışmayabilir. Bu durumda tahmin problemi de oldukça kolaydır. Geçiş olasılıklarını tahmin etmek kolaydır, sadece sayılırsınız. Ayrıca, her bir durum için emisyon olasılıklarını, gözlenen verilere ve karşılık gelen sınıfa göre sığdırabilir, zamansal yönleri göz ardı edebilirsiniz.

Bunun kötü bir fikir olduğuna ikna olduysanız veya kötü performans gösterdiğini ancak yine de üretken modellere bağlı kalmak istiyorsanız, Hiyerarşik HMM gibi bir şey kullanabilirsiniz. Örneğin, üst düzeydeki durumların sınıfları temsil etmesine izin verebilir ve daha sonra alt düzey HMM'lerin sınıflar içindeki zamansal değişimi modellemesine izin verebilirsiniz. Benzer bir şey elde etmek için büyük bir HMM de kullanabilirsiniz. Eğer varsa, sınıfları, tahsis (böylece her sınıf için durumları formu tamamen belirtmektedir) , , . Eğitim sırasında zaman bir duruma geçişe sadece atama olumlu olasılığına SMM zorlamak gerekir neredeN N × K s k i k = 1 , , K i = 1 , N t k tKNN×Kskik=1,,Ki=1,Ntk , zamanında etiketle eşleşir . Bunu biraz garip bir şekilde ifade etmiş olabilirdim, umarım ne demek istediğimi açıktır. Açıkçası bunu sınıf başına farklı sayıda duruma sahip olacak şekilde genelleştirebilirsiniz. Muhtemelen kullanabileceğiniz başka Dinamik Bayes Ağları da vardır. Kevin Murphy'nin tezi mükemmel bir referanstır. Ayrıca HHMM'leri HMM'lere dönüştürmeyi tartışıyor.t

Son olarak, Koşullu Rastgele Alan gibi ayrımcı bir modele geçebilirsiniz. Ayrımcı bir model, daha karmaşık özellikleri kolayca dahil etmenizi ve eldeki sorunu daha doğrudan ele almanızı sağlar (koşullu yoğunlukları tahmin etmek). Muhtemelen ilk denediğim şey bu.


Gözlenen değerler süreklidir, bu yüzden bir gauss veya GMM takacağım. Reddit'te tartışıldığı gibi, bu modelin yeteneğini sınırlar. Bu modeli geçici modelin statik modellere kıyasla sınıflandırma doğruluğunu nasıl etkilediğini görmek için kullanıyorum. Ayrımcı modellerin sınıflandırma için daha iyi olabileceğinin ve Murphy'nin tezinin bitlerini okumasının farkında olabilirim. Bu ilginç görünüyor ama HMM bana profesörüm tarafından önerildi (açık uçlu bir proje) bu yüzden bunu deneyeceğim. Gelecekte EEG / MEG sinyalleri ile daha fazla çalışmak istiyorum, bu yüzden bir noktada diğer yöntemleri deneyeceğim. :)
Alex McMurray

1
Sonunda birden fazla gözlem için sklearn ve desteğini kullandım. Doğru çalışıyor gibiydi. Ben kodu kazmak ve aslında onunla nasıl başa çıkmak görmek gerekir.
Alex McMurray

1
Alex, "sklearn ve çoklu gözlemlere destek" olarak adlandırdığınız şeye bir bağlantı veya örnek verebilir misiniz? Uzun yıllardır bu sorunla (ve bir HMM'ye birden fazla gözlemin tek bir sınıf etiketine ait olduğunu nasıl anlatacağımızla ilgili) ilgileniyorum ve onlara nasıl hitap ettiğinizi bilmek isterim.
Rubenulis
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.