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

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

Ö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
1

mobil görünümden çık