Số lượng tham số trong mô hình Markov


12

Tôi muốn sử dụng BIC cho lựa chọn mô hình HMM:

BIC = -2*logLike + num_of_params * log(num_of_data)

Vậy làm thế nào để tôi đếm số lượng tham số trong mô hình HMM. Hãy xem xét một HMM 2 trạng thái đơn giản, nơi chúng tôi có dữ liệu sau:

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

Vì vậy, tôi nghĩ:

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

Vì vậy, cuối cùng chúng ta có:

BIC = -2*logLike + num_of_params*log(length(x))
BIC = 159.6319

Tôi đã tìm thấy một giải pháp trong đó công thức cho num_of_params(đối với mô hình Markov đơn giản) trông giống như:

Nparams = Num_of_states*(Num_of_States-1) - Nbzeros_in_transition_matrix

Vậy đâu là giải pháp phù hợp? Tôi có phải tính đến một số xác suất bằng không trong ma trận chuyển tiếp hoặc phát xạ không?

==== Cập nhật kể từ ngày 07.15.2011 ====

Tôi nghĩ rằng tôi có thể cung cấp một số giải thích rõ ràng về tác động của kích thước dữ liệu (sử dụng ví dụ phân phối hỗn hợp của Gaussian)

X là ma trận n-by-d trong đó (n-hàng tương ứng với các quan sát; cột d tương ứng với các biến (Ndimensions).

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;

Mô hình sẽ có số lượng tham số sau cho GMM:

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

Nếu chúng ta coi X là dữ liệu 1 chiều , hơn chúng ta có num_of_data = (n*d), thì đối với dữ liệu 2 chiều chúng ta có num_of_data = n.

Dữ liệu 2 chiều : nParam = 11; logLike = -11.8197; BIC = 1.689

Dữ liệu 1 chiều : nParam = 5; logLike = -24.8753; BIC = -34,7720

Tôi có một thực hành rất ít với HMM. Có bình thường khi có HMM với (5000, 6000 và nhiều tham số hơn) không?


Bạn có biện minh cho việc sử dụng BIC không? Nó có thể cho kết quả sai lầm khủng khiếp nếu không với các giả định thích hợp.
suncoolsu

@suncoolsu, ý của bạn là gì? Tôi đã tìm thấy một số ví dụ về lựa chọn cụm K (mô hình GMM) dựa trên điểm BIC. Có lẽ tôi đã cung cấp ví dụ sai khi so sánh hai mô hình với dữ liệu đầu vào (kích thước) khác nhau.
Serge

1
Tôi có nghĩa là chỉ sử dụng BIC nếu giả định, mô hình thực sự nằm trong không gian mô hình , là hợp lý. Có thể nó là hợp lý trong trường hợp của bạn. Tôi đồng ý với bạn rằng mọi người sử dụng BIC như AIC, nhưng cả hai đều là những thứ rất khác nhau!
suncoolsu

Xin chào, đây là một nhận xét muộn và hy vọng bạn vẫn còn hoạt động, nhưng cách tốt nhất để có được số lượng tham số trong một mô hình là gì?
masfenix

Câu trả lời:


7

Câu hỏi là liệu một số tham số của bạn trong ma trận chuyển tiếp và / hoặc ma trận phát xạ được cố định để bắt đầu. Tính toán của bạn (về số lượng tham số) trông chính xác. Nếu bạn vì một lý do nào đó muốn mô hình 3 trạng thái thay vì mô hình 2 trạng thái và quyết định trả trước rằng việc chuyển đổi từ trạng thái 1 sang 3 và 3 sang 1 không được phép (có xác suất 0), bạn sẽ phải tính đến điều này trong tính toán của số lượng tham số.


Tôi có phải tính đến kích thước dữ liệu không? Điều gì size(data)sẽ xảy ra nếu là 2x100
Serge

@Sergey, tôi chỉ nhìn vào tính toán số lượng tham số trong câu trả lời của tôi. Để hoàn thiện, tôi cũng nên xem xét cách tính "kích thước" của tập dữ liệu, vì bạn quan tâm đến BIC. Thành thật mà nói, tôi chỉ thấy một dẫn xuất BIC cho dữ liệu độc lập, nhưng tôi đoán là "kích thước" chính xác của dữ liệu là độ dài của chuỗi dữ liệu. Tôi không chắc ý của bạn là gì bởi kích thước là 2x100. Nếu bạn muốn bình luận về điều đó, bạn phải đưa ra một mô tả chính xác hơn về cách dữ liệu được mã hóa dưới dạng ma trận 2 x 100.
NRH

Cảm ơn câu trả lời, tôi nghĩ rằng tôi hiểu tác động của kích thước dữ liệu trên BIC, vui lòng xem cập nhật của tôi
Sergey

Tôi có phải giảm số lượng tham số trong mô hình HMM bên trái (Bakis) (với ma trận chuyển tiếp hình tam giác) không? Có bình thường khi có HMM với (5000, 6000 và nhiều tham số hơn) không?
Serge

4

Khi chúng tôi tính toán số lượng tham số miễn phí trong lựa chọn mô hình BIC, điều này có nghĩa đơn giản là số lượng số không trong ma trận tĩnh và ma trận phát xạ. Ví dụ: khi có số 0 trong ma trận chuyển tiếp - điều này có nghĩa là không có xác suất nào một trạng thái nhất định chuyển sang trạng thái tiếp theo (như được xác định bởi ma trận chuyển tiếp). Đó là cách BIC chọn trạng thái tối ưu cho HMM. Tuy nhiên, việc không có các tham số miễn phí chỉ sử dụng kích thước của ma trận nội, chuyển tiếp và phát xạ là khó hiểu

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.