出現確率の計算

 前回に続き、隠れ状態からその行が得られる確率、出現確率を計算する部分を実装しました。といっても簡単で、隠れ状態を推定する最中に何回判定が起こったかを数える部分を挿入して演算するだけでした。

$t0 =0;
$t1 =0;

for ($j =0; $j < @state; $j++) {
if ($state[$j] == $maxState) {
$t0++;

if (${$dt[$j]}[$maxElement] ==1) {
$state[$j] = $i; #新たな状態を割り当てる
}

if (${$vector[$j]}[$maxElement] ==1) {
$t1++;
}
}
}
#出現確率を計算
push @pk, (1- $alpha) * $t1 / $t0 + $alpha /2;

 出現確率を計算するのに、論文の方では遷移ベクトリを元に$t1を計算していましたが、そうではなく実際のその行の示唆ベクトルを利用した方がいいのではないかと思い、試しに示唆ベクトルの方で$t1を計算することにしました。
 結果を見てみるとまだまだ状態はバラバラですが、遷移確率が小さい場合に次の行の状態を変更しないようにしたり、出現確率が大きいならその隠れ状態を信用したりするようにすれば上手く行の属性決定ができそうな気がしました。次回確認してみたいと思います。