Saya ingin menggunakan BIC untuk pemilihan model HMM:
BIC = -2*logLike + num_of_params * log(num_of_data)
Jadi bagaimana cara menghitung jumlah parameter dalam model HMM. Pertimbangkan HMM 2-negara sederhana, di mana kami memiliki data berikut:
data = [1 2 1 1 2 2 2 1 2 3 3 2 3 2 1 2 2 3 4 5 5 3 3 2 6 6 5 6 4 3 4 4 4 4 4 4 3 3 2 2];
model = hmmFit(data, 2, 'discrete');
model.pi = 0.6661 0.3339;
model.A =
0.8849 0.1151
0.1201 0.8799
model.emission.T =
0.2355 0.5232 0.2259 0.0052 0.0049 0.0053
0.0053 0.0449 0.2204 0.4135 0.1582 0.1578
logLike = hmmLogprob(model,data);
logLike = -55.8382
Jadi saya pikir:
Nparams = size(model.A,2)*(size(model.A,2)-1) +
size(model.pi,2)-1) +
size(model.emission.T,1)*(size(model.emission.T,2)-1)
Nparams = 13
Jadi pada akhirnya kita memiliki:
BIC = -2*logLike + num_of_params*log(length(x))
BIC = 159.6319
Saya telah menemukan solusi di mana rumus untuk num_of_params
(untuk model Markov sederhana) terlihat seperti:
Nparams = Num_of_states*(Num_of_States-1) - Nbzeros_in_transition_matrix
Jadi apa solusi yang tepat? Apakah saya harus memperhitungkan beberapa probabilitas nol dalam transisi atau matriks emisi?
==== Diperbarui sejak 07.15.2011 ====
Saya pikir saya bisa memberikan beberapa klarifikasi tentang dampak dimensi data (menggunakan contoh “distribusi campuran Gaussian”)
X adalah matriks n-by-d di mana (n-baris sesuai dengan pengamatan; d-kolom sesuai dengan variabel (Ndimensi).
X=[3,17 3,43
1,69 2,94
3,92 5,04
1,65 1,79
1,59 3,92
2,53 3,73
2,26 3,60
3,87 5,01
3,71 4,83
1,89 3,30 ];
[n d] = size(X);
n = 10; d =2;
Model akan memiliki jumlah parameter GMM berikut:
nParam = (k_mixtures – 1) + (k_mixtures * NDimensions ) + k_mixtures * Ndimensions %for daigonal covariance matrices
nParam = (k_mixtures – 1) + (k_mixtures * NDimensions ) + k_mixtures * NDimensions * (NDimensions+1)/2; %for full covariance matrices
Jika kita memperlakukan X sebagai data 1 dimensi , dari yang kita miliki num_of_data = (n*d)
, maka untuk data 2 dimensi yang kita miliki num_of_data = n
.
Data 2 dimensi : nParam = 11; logLike = -11.8197; BIC = 1.689
Data 1 dimensi : nParam = 5; logLike = -24.8753; BIC = -34.7720
Saya memiliki sedikit latihan dengan HMM. Apakah normal memiliki HMM dengan (5000, 6000 dan lebih banyak parameter)?
Jawaban:
Pertanyaannya adalah apakah beberapa parameter Anda dalam matriks transisi dan / atau matriks emisi ditetapkan untuk memulainya. Perhitungan Anda (dari jumlah parameter) terlihat benar. Jika Anda karena suatu alasan menginginkan model 3 keadaan alih-alih model 2 keadaan dan memutuskan dimuka bahwa transisi dari keadaan 1 ke 3 dan 3 ke 1 tidak diperbolehkan (memiliki probabilitas 0), Anda harus mempertimbangkan ini dalam perhitungan jumlah parameter.
sumber
size(data)
akan menjadi 2x100Saat kami menghitung jumlah parameter bebas dalam pemilihan model BIC, ini berarti jumlah nol dalam matriks transisi dan emisi. Misalnya ketika ada nol dalam matriks transisi-ini berarti bahwa tidak ada kemungkinan bahwa keadaan tertentu bergerak ke yang berikutnya (seperti yang didefinisikan oleh matriks transisi). Begitulah cara BIC memilih status optimal untuk HMM. Namun, mendapatkan no parameter bebas hanya dengan menggunakan ukuran matriks awal, transisi dan emisi membingungkan
sumber