【NLP】维特比算法

来源:互联网 发布:js身份证格式校验 编辑:程序博客网 时间:2024/04/29 10:27

寻找最可能的隐藏状态序列 (Finding most probable sequence of hidden states)


对于一个特殊的隐马尔科夫模型(HMM)及一个相应的观察序列,我们常常希望能找到生成此序列最可能的隐藏状态序列。

之前的那个问题变转,http://blog.csdn.net/jeiwt/article/details/8076019

 


假设连续观察3天的海藻湿度为(Dry,Damp,Soggy),求这三天最可能的天气情况。天气只有三类(Sunny,Cloudy,Rainy),而且海藻湿度和天气有一定的关系。

已知:

1. 隐藏的状态:Sunny,Cloudy, Rainy;海藻湿度有四类{Dry,Dryish, Damp,Soggy }

2. 观察状态序列:{Dry, Damp, Soggy };

3. 初始状态序列:Sunny(0.63),Cloudy(0.17),Rainy(0.20);

4. 状态转移矩阵:

 

Sunny

Cloudy

Rainy

Sunny

0.5

0.375

0.125

Cloudy

0.25

0.125

0.625

Rainy

0.25

0.375

0.375

 

Cloudy(昨天)->Sunny(今天)的概率是0.25;

Sunny(昨天)->Rainy(今天)的概率是0.125.

5. 混淆矩阵(海藻湿度与天气的相关性):

Dry

Dryish

Damp

Soggy

Sunny

0.6

0.2

0.15

0.05

Cloudy

0.25

0.25

0.25

0.25

Rainy

0.05

0.10

0.35

0.50

 

由HMM可知,Day2的天气仅取决于Day1;Day3的天气又只取决于Day2的天气。

Day1由于是初始状态,我们分别求

P(Day1-Sunny)=0.63*0.6;

P(Day1-Cloudy)=0.17*0.25;

P(Day1-Rain)=0.20*0.05;

Choose max{ P(Day1-Sunny) , P(Day1-Cloudy),P(Day1-Rainy)}, 得到P(Day1-Sunny)最大,得出第1天Sunny的概率最大。

Day2的天气又取决于Day1的天气状况,同时也受Day2观察的海藻情况影响

P(Day2-Sunny)= max{ P(Day1-Sunny)*0.5, P(Day1-Cloudy)*0.25,  P(Day1-Rainy)*0.25} *0.15;

P(Day2-Cloudy)= max{ P(Day1-Sunny)*0.375,  P(Day1-Cloudy)*0.125, P(Day1-Rainy)*0.625} *0.25;

P(Day2-Rainy)= max{ P(Day1-Sunny)*0.125,  P(Day1-Cloudy)*0.625 , P(Day1-Rainy)*0.375} *0.35;

Choosemax{ P(Day2-Sunny) , P(Day2-Cloudy), P(Day2-Rainy)},得到P(Day2-Rainy)最大,得出第2天Rainy的概率最大。

{Sunny,Rainy}是前两天最大可能的天气序列。

Day3的天气又取决于Day2的天气状况,同时也受Day3观察的海藻情况影响

P(Day3-Sunny)= max{ P(Day2-Sunny)*0.5, P(Day2-Cloudy)*0.25,  P(Day2-Rainy)*0.25} *0.05;

P(Day3-Cloudy)= max{ P(Day2-Sunny)*0.375,  P(Day2-Cloudy)*0.125, P(Day2-Rainy)*0.625} *0.25;

P(Day3-Rainy)= max{ P(Day2-Sunny)*0.125,  P(Day2-Cloudy)*0.625, P(Day2-Rainy)*0.375} *0. 05;

Choosemax{ P(Day3-Sunny) , P(Day3-Cloudy), P(Day3-Rainy)},得到 P(Day3-Rainy)最大,得出第3天Rainy的概率最大。

{Sunny,Rainy,Rainy}是这三天最可能的天气序列。

0 0
原创粉丝点击