[]

hidden markov ve expectation maximization'dan çakan var mı?

baya yoğun uğraştım bir proje için ama bir noktadan çıkamıyorum. bir prediction problemi için hmm'mi train etmem lazım. classification olsa tamam da prediction için nasıl mümkün bu bilemedim. stackoverflow'a yazdım soruyu da pek net cevap alamadım. diyemiyorum da anneye anlatır gibi anlatın lütfen diye orada. bana yardım etse etse olaya vakıf, eksi duyuru'da yurdumun güzide fakültelerinden mezun bilgisayar ve elektronik mühendisi abiler ablalar yardımcı olabilir diye düşündüm. stackoverflow link'ini direkt aşağı koyuyorum. olur da türkçe olsa yapacağım da ingilizce sıkıntı oldu diyen çıkarsa yazsın buraya. türkçe de açıklarım problemi.

stackoverflow.com


 
Senin probleminde hidden state olmadigi icin HMM'e gerek yok. Sequence prediction icin HMM falan kalmadi pek machine learning camiasinda. Recurrent neural networklere bakmani öneririm (LSTM, GRU vs.).

HMM'de israr ediyorsan, yapman gereken seyler:
- k-fold cross validation: 10 fold olur genelde. Datani random 10 esit parcaya bol. 9 parcasini training al, kalanina dokunma (en son test olarak kullanicaksin).
- Training datasinda her class icin bir HMM train et. Bu isi EM ile yapiyosun. EM algoritmasi MATLABda vardir herhalde.
- Sistemini test etmek icin test datasindaki her sequence icin her class icin likelihood (numerik problemler cikmasin diye log-likelihood olur bu genelde) hesapla. Maksimum likelihood veren kategori de o observation icin prediction'in oluyor.
- Bu 3 maddeyi her 10 fold icin tekrar et.

Opsiyonel.
- HMM'de Gaussian Mixture Model kullanirsin buyuk ihtimal. GMM parametrelerinden biri de kac tane Gaussian olacagi (number of mixtures). Soruna bilimsel yaklasmak istiyorsan bu parametreyi optimize etmek icin CV icine bi tane daha CV yapman gerekir (nested cross validation).
- Eger kategorilerin balanced degilse, CV icin stratified sampling (kategorilerdeki data oranini sabit tutarak rastgele bölmece) yapman daha saglikli olur.

Sorudan bagimsiz: Machine learning ile ugrasmaya devam etmeyi planliyorsan, MATLAB'i birakip python'a gecmeni öneririm.
  • good clean fun  (03.01.16 19:04:33 ~ 19:09:48) 
hmm'de ısrar etmek durumundayım çünkü değişiklik şansım yok bundan sonra. "her class için hmm train etme" noktasında problemim var benim. çünkü prediction probleminde sequence'ları nasıl class'lara böleceğim hakkında bir fikrim yok. atıyorum mesela bir sequence 1 - 3 - 4 - 5 category'lerini takip ediyorsa ben bunu 5'ler class'ında mı kabul etmeliyim? yani son elemanına göre tüm sequence'ları gruplayıp sonra bunları mı train etmeliyim. anlayamadığım asıl kısım bu.

bir de maximum likelihood'unu hesaplarken aklıma takılan bir şey var. ben c1c2c3...ct-1 category sırasını biliyorum ve ct'nin değerini tahmin etmeye çalışıyorum. sadece c sırasını kullanarak nasıl estimation alabilirim ki? bunlar observation'larım benim. hidden state de user'ın hangi hex içinde check-in yaptığı.
  • jack of hearts  (03.01.16 19:13:45 ~ 21.01.16 20:33:10) 
Öncelikle verdigin örnekteki 1,3,4 ve 5 kategori degil state. Kategori herhangi bir seriye ait bir etiket. 1-3-4-5'in kategorisi (class) A, 3-4-5-6'ninki B, 2-3-4'unku A ... gibi.

Yapmaya calistigin sey supervised learning. Yani elinde annotated bi training datasi olmasi lazim.

Kafamdan bi problem uyduruyorum:
Olasi mekanlar 1'den 10'a kadar diyelim. 1,3,4,5,8 restoran ve kafeler. 2 ve 6 kitapcilar. 7, 9, 10 da barlar olsun.

Elindeki data söyle bir sey olmali:
6-4-8-5 serisine sahip bir kullanici "disarida yemek yemeyi seven biri" kategorisinde.
7-9 serisine sahip bir kullanici "icki icen" kategorisinde
...

Yukaridaki datayi algortimaya ögretiyorsun. Algoritmaya ögretmedigin yeni bir örnegi test etmek istiyorsun:
10-3-4 serisine sahip bir kullanici hangi kategoridedir gibi.

Bir seri bircok kategoriye de ait olabilir yukaridaki örnek icin (multi-label classification). O durumda bana özelden yaz. HMM ile nasil olur dusunmem lazim.

Özet: 1-3-4-5 serisinin hangi kategoriye ait oldugunun sana verilmesi lazim. O statelerin ne anlama geldigine bagli olarak senin karar vericegin bir sey de olabilir. Ama eger öyle olsaydi (son state'in ayni zamanda kategoriyi belirlemesini önermissin) machine learning'e ihtiyacin olmazdi. Herhangi bir serinin son state'ine bakip hemen söylerdin kategoriyi.
  • good clean fun  (03.01.16 19:33:50) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.