Ich möchte BIC für die HMM-Modellauswahl verwenden:
BIC = -2*logLike + num_of_params * log(num_of_data)
Wie zähle ich die Anzahl der Parameter im HMM-Modell? Stellen Sie sich ein einfaches HMM mit zwei Zuständen vor, in dem die folgenden Daten vorliegen:
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
Ich denke also:
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
Am Ende haben wir also:
BIC = -2*logLike + num_of_params*log(length(x))
BIC = 159.6319
Ich habe eine Lösung gefunden, bei der die Formel für num_of_params
(für einfaches Markov-Modell) wie folgt aussieht:
Nparams = Num_of_states*(Num_of_States-1) - Nbzeros_in_transition_matrix
Also, was ist die richtige Lösung? Muss ich einige Nullwahrscheinlichkeiten in Übergangs- oder Emissionsmatrizen berücksichtigen?
==== Aktualisiert seit dem 15.07.2011 ====
Ich denke, ich kann etwas Klarheit über die Auswirkung der Datendimension schaffen (am Beispiel der Gaußschen Mischungsverteilung).
X ist eine n-mal-d-Matrix, wobei (n-Zeilen Beobachtungen entsprechen; d-Spalten Variablen entsprechen (N-Dimensionen).
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;
Das Modell wird die folgende Anzahl von Parametern für GMM haben:
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
Wenn wir X als eindimensionale Daten behandeln , als wir haben num_of_data = (n*d)
, so für die zweidimensionalen Daten, die wir haben num_of_data = n
.
2-dimensionale Daten: nParam = 11; logLike = -11,8197; BIC = 1,689
1-dimensionale Daten: nParam = 5; logLike = -24,8753; BIC = -34,7720
Ich habe sehr wenig Übung mit HMM. Ist es normal, HMM mit (5000, 6000 und mehr Parametern) zu haben?
Antworten:
Die Frage ist, ob einige Ihrer Parameter in der Übergangsmatrix und / oder der Emissionsmatrix von Anfang an festgelegt sind. Ihre Berechnungen (der Anzahl der Parameter) sehen korrekt aus. Wenn Sie aus irgendeinem Grund ein 3-Zustands-Modell anstelle eines 2-Zustands-Modells wünschen und im Voraus entscheiden, dass Übergänge von Zustand 1 nach 3 und von 3 nach 1 nicht zulässig sind (mit einer Wahrscheinlichkeit von 0), müssen Sie dies bei der Berechnung von berücksichtigen die Anzahl der Parameter.
quelle
size(data)
2x100 sein wirdWenn wir die Anzahl der freien Parameter in der Modellauswahl-BIC berechnen, bedeutet dies einfach, dass es sich um die Anzahl der Nullen in den Transtions- und Emissionsmatrizen handelt. Wenn die Übergangsmatrix beispielsweise eine Null enthält, bedeutet dies, dass es keine Wahrscheinlichkeit gibt, dass sich ein bestimmter Zustand zum nächsten bewegt (wie durch die Übergangsmatrix definiert). Auf diese Weise wählt der BIC das Optimum der Zustände für ein HMM aus. Es ist jedoch verwirrend, das Nein der freien Parameter nur unter Verwendung der Größe der Anfangs-, Übergangs- und Emissionsmatrizen zu erhalten
quelle