高老板与马尔代夫的故事——隐马尔科夫与维特比算法

<高老板与马尔代夫的故事>

 

假如高老板在马尔代夫有一个科考站,科考站每个月月底都会将两份重要的科学数据通过一部CDMA制式的手机发回来: 一份是该月份的土壤湿度信息,另一份是该月份的天气信息。有一次在数据传输的过程中,高老板手机突然没电了,所有的天气信息都丢失了,只有土壤湿度信息。

 

现在我们已知土壤湿度(可见状态),如何用这些数据来预测这一个月的天气信息(隐含状态),最大可能弥补高老板的损失呢?

 

首先定义几个概念:

 

隐含状态: 是指需要预测的天气信息;记为:

state = {晴天, 阴天, 下雨}

 

可见状态: 是指可观察到的土壤湿度;记为: 

obs = {干燥, 一般, 潮湿}

 

初始概率: 是指这个月第一天天气状况的概率; 

start_p = {晴天: 0.33, 阴天: 0.33, 下雨: 0.33}

 

转移概率: 是指每天天气(隐含状态)转变的概率,比如:今天天气是阴天,明天天气要下雨的概率;记为:

transition_p = {

晴天: {晴天: 0.6, 阴天: 0.3; 下雨: 0.1},

阴天: {晴天: 0.3, 阴天: 0.4; 下雨: 0.3},

下雨: {晴天: 0.1, 阴天: 0.4; 下雨: 0.5}

}

 

映射概率: 是指观察到土壤状态对应天气状态的概率,比如今天观察到土壤潮湿时,今天天气为下雨的概率。记为:

emission_p = {

晴天: {干燥: 0.7; 一般: 0.2; 潮湿: 0.1},

阴天: {干燥: 0.2; 一般: 0.6; 潮湿: 0.2},

下雨: {干燥: 0.1; 一般: 0.2; 潮湿: 0.7}

}

 

假设上面的定义及其概率根据去年土壤湿度信息和天气信息计算得到,为已知量。

 

计算:

第一步,假设第一天观察到的土壤湿度为干燥,则计算如下:

该天为晴天的概率V(0)(晴天) = 起始为晴天的概率0.33 * 观测为干燥时晴天的概率0.7 = 0.231

该天为阴天的概率V(0)(阴天) = 起始为阴天的概率0.33 * 观测为干燥时阴天的概率0.2 = 0.066

该天为下雨的概率V(0)(下雨) = 起始为下雨的概率0.33 * 观测为干燥时下雨的概率0.1 = 0.033

 

通过选取概率的最大值max: V(0)(阴天) = 0.231,确定第一天很大概率为晴天;

 

可以看出第一天由于没有前一天的天气情况信息,只能使用初始概率与映射概率一起参与概率计算,通俗一点也就是说: 第一天的天气概率与初始概率和该天观察到的土壤湿度有关。

 

 

第二步,假设第二天观察到的土壤湿度为一般,则计算如下:

 

该天为晴天的概率V(1)(晴天) = 

max(

昨天晴天的概率0.231 * 昨天晴天今天晴天的转移概率0.6 * 观测为一般时晴天的概率0.2 = 0.02772,

昨天阴天的概率0.066 * 昨天阴天今天晴天的转移概率0.3 * 观测为一般时晴天的概率0.2 = 0.00396,

昨天下雨的概率0.033 * 昨天下雨今天晴天的转移概率0.1 * 观测为一般时晴天的概率0.2 = 0.00066

) = 0.02772

 

该天为阴天的概率V(1)(阴天) = 

max(

昨天晴天的概率0.231 * 昨天晴天今天阴天的转移概率0.3 * 观测为一般时阴天的概率0.6 = 0.04158,

昨天阴天的概率0.066 * 昨天阴天今天阴天的转移概率0.4 * 观测为一般时阴天的概率0.6 = 0.01584,

昨天下雨的概率0.033 * 昨天下雨今天阴天的转移概率0.4 * 观测为一般时阴天的概率0.6 = 0.00792

) = 0.04158

 

该天为下雨的概率V(1)(下雨) = 

max(

昨天晴天的概率0.231 * 昨天晴天今天下雨的转移概率0.1 * 观测为一般时下雨的概率0.2 = 0.00462,

昨天阴天的概率0.066 * 昨天阴天今天下雨的转移概率0.3 * 观测为一般时下雨的概率0.2 = 0.00396,

昨天下雨的概率0.033 * 昨天下雨今天下雨的转移概率0.5 * 观测为一般时下雨的概率0.2 = 0.00330

) = 0.00462

 

通过选取概率的最大值max: V(1)(阴天)=0.04158,确定第二天很大概率为阴天;

 

可以看出第二天由于有了前一天的天气情况信息,计算时用到了前一天天气概率信息,天气转移概率和映射概率一起参与概率计算,也就是说: 第二天的天气概率与前一天天气,天气变换(转移)规律和该天观察到的土壤湿度三者有关。

 

同理根据后面28天的土壤信息,我们可以计算或者预测出后面28天的天气信息(假设这个月总共30天)。

 

 

 

可以看出,当天的天气信息跟前一天的天气信息有关,而跟大前天或者大大前天的天气信息无关,这里是一个大前提或者条件。

 

 

类似地,

如果将土壤信息换成汉字信息,那么天气信息可以换成汉语的分词信息;

 

如果将土壤信息换成通信码元编码信息,那么天气信息可以换成通信码元解码信息;

 

如果将土壤信息换成股票信息,那么天气信息可以换成股票的涨跌信息(好像找到一条致富之路)。

 

 

上面的模型叫做隐马尔可夫模型,算法是由高通公司创始人Andrew Viterbi先生发明,国内叫做维特比算法。

 

 

PS: 大量别扭的名词极大地提高了门槛,如果把马尔可夫模型改成马尔代夫模型,维特比改成高老板算法,会让人更容易接受吧。

转载于:https://www.cnblogs.com/likaiwei/p/9933637.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值