目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

隐马尔可夫模型(Hidden Markov Model,HMM)是一种统计模型,广泛应用在语音识别,词性自动标注,音字转换,概率文法等各个自然语言处理等应用领域。经过长期发展,尤其是在语音识别中的成功应用,使它成为一种通用的统计工具。

隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程。其难点是从可观察的参数中确定该过程的隐含参数。然后利用这些参数来作进一步的分析,例如模式识别。是在被建模的系统被认为是一个马尔可夫过程与未观测到的(隐藏的)的状态的统计马尔可夫模型。隐马尔可夫模型是马尔可夫链的一种,它的状态不能直接观察到,但能通过观测向量序列观察到,每个观测向量都是通过某些概率密度分布表现为各种状态,每一个观测向量是由一个具有相应概率密度分布的状态序列产生。所以,隐马尔可夫模型是一个双重随机过程----具有一定状态数的隐马尔可夫链和显示随机函数集。自20世纪80年代以来,HMM被应用于语音识别,取得重大成功。到了90年代,HMM还被引入计算机文字识别和移动通信核心技术“多用户的检测”。HMM在生物信息科学、故障诊断等领域也开始得到应用。
        一种HMM可以呈现为最简单的动态贝叶斯网络。隐马尔可夫模型背后的数学是由LEBaum和他的同事开发的。它与早期由RuslanL.Stratonovich提出的最优非线性滤波问题息息相关,他是第一个提出前后过程这个概念的。
        在简单的马尔可夫模型(如马尔可夫链),所述状态是直接可见的观察者,因此状态转移概率是唯一的参数。在隐马尔可夫模型中,状态是不直接可见的,但输出依赖于该状态下,是可见的。每个状态通过可能的输出记号有了可能的概率分布。因此,通过一个HMM产生标记序列提供了有关状态的一些序列的信息。注意,“隐藏”指的是,该模型经其传递的状态序列,而不是模型的参数;即使这些参数是精确已知的,我们仍把该模型称为一个“隐藏”的马尔可夫模型。隐马尔可夫模型以它在时间上的模式识别所知,如语音,手写,手势识别,词类的标记,乐谱,局部放电和生物信息学应用。
       隐马尔可夫模型可以被认为是一个概括的混合模型中的隐藏变量(或变量),它控制的混合成分被选择为每个观察,通过马尔可夫过程而不是相互独立相关。最近,隐马尔可夫模型已推广到两两马尔可夫模型和三重态马尔可夫模型,允许更复杂的数据结构的考虑和非平稳数据建模。

基于隐马尔科夫模型(HMM)的手机用户行为预测(MMUB)算法结构如下图所示:

这里,我们采用的数据格式如下:

Time1

Time2

Time3

Time4

Time5

Time6

......

USER1

Pos1(1)

Pos1(2)

Pos1(3)

Pos1(4)

Pos1(5)

Pos1(6)

......

USER2

Pos2(1)

Pos2(2)

Pos2(3)

Pos2(4)

Pos2(5)

Pos2(6)

......

USER3

Pos3(1)

Pos3(2)

Pos3(3)

Pos3(4)

Pos3(5)

Pos3(6)

......

......

......

......

......

......

......

......

......

USERn

Posn(1)

Posn (2)

Posn (3)

Posn (4)

Posn (5)

Posn (6)

......

即通过采集多个用户在不同时刻的位置,通过算法,来预测后面的位置。即,我们所使用的模型的输入数据类型应该为如下的格式:

Time1

Time2

Time3

Time4

......

USER1

Pos1,Ser1(1)

Pos1,Ser1 (2)

Pos1,Ser1 (3)

Pos1,Ser1 (4)

......

USER2

Pos2,Ser2 (1)

Pos2,Ser2 (2)

Pos2,Ser2 (3)

Pos2,Ser2 (4)

......

USER3

Pos3,Ser3 (1)

Pos3,Ser3 (2)

Pos3,Ser3 (3)

Pos3,Ser3 (4)

......

......

......

......

......

......

......

USERn

Posn,Sern (1)

Posn ,Sern (2)

Posn,Sern (3)

Posn,Sern (4)

......

模型的输入,即类同如上格式的数据类型。

2.仿真效果预览

matlab2022a仿真结果如下:

从仿真结果可知,单独的MMUB+HMM的预测方法,精度并不理想。但是MMUB具有其优势,就是用户行为模型的构建,从而有效的估计每个用户的可能发生的行为。

3.MATLAB核心程序

N1    = 100;%为了防止出现连续状态不变得情况,这里N1设置大点
N2    = 6;
N     = N1 + N2; %前N1个用于训练,后N2个用于预测
Times = 1000;%通过多次循环,计算正确率
for Nu = 1:length(Locaiton_id3)UNo   = Nu;%用户标号for tim = 1:TimesUNotimDat   = Locaiton_id3{1,UNo}(1+tim:N+tim);State = unique(Dat);%Counting the User Behavior Patterns%Counting the User Behavior PatternsAlpha = [];maps  = [];MAP   = [];[Alpha,maps,MAP] = func_find_alpha_table(Dat,Locaiton_id3,State);%Modeling the User Behaviors,the user’s behavior model can be built based on the resulting counting tables%状态转移概率%释放概率%对应算法步骤中计算STATE的步骤,计算moving or steady??[seq,states]         = func_cal_moving_steady(maps(1:N));%这里需要地址映射为自然数[TRANS_EST,EMIS_EST] = hmmestimate(seq,states);[r,c] = size(TRANS_EST);for p1 = 1:rfor p2 = 1:cif TRANS_EST(p1,p2) == 0TRANS_EST(p1,p2) = eps;endif TRANS_EST(p1,p2) == 1TRANS_EST(p1,p2) = 1-eps;end                endend%通过vertiber算法计算概率likelystates = hmmviterbi(seq,TRANS_EST,EMIS_EST);Ps = length(find(likelystates==1))/N;Pm = length(find(likelystates==2))/N;%预测后面时刻的位置likelihood_next_node = zeros(length(State),length(State));for i = 1:length(State)for j = 1:length(State)if i == jlikelihood_next_node(i,j) = Ps*Alpha{i,j}(1); elselikelihood_next_node(i,j) = Pm*Alpha{i,j}(1);endendendPlikelihood_next_node = zeros(length(State),N2);for k = 1:N2for i = 1:length(State)Plikelihood_next_node(i,k) = likelihood_next_node(maps(N1-k+1),i)/(sum(likelihood_next_node(:,i))+eps);end[V,I]     = max(Plikelihood_next_node(:,k));for j = 1:size(MAP,1)if I == MAP(j,2);POS(k)  = MAP(j,1);endend   endNNN(:,tim) = (Dat(N1+1:N)==POS(1:N2)')';endfor k = 1:N2Precision1(k,Nu) = sum(NNN(k,:))/Times;end
end
figure;
Views = [Precision1(:,1),Precision1(:,2),Precision1(:,3)];
bar(Views);
xlabel('Times');
ylabel('Precision');
legend('user #1','user #2','user #3');
title('MMUB');
figure;
Views = [mean(Precision1(:,:),2)];
bar(Views);
xlabel('Times');
ylabel('Precision');
legend('The average of 15 Users');
title('MMUB');
05_014_m

4.完整MATLAB

V

m基于隐马尔科夫模型(HMM)的手机用户行为预测(MMUB)算法matlab仿真相关推荐

  1. python地图匹配_基于隐马尔科夫模型(HMM)的地图匹配(Map-Matching)算法

    1. 摘要 本篇博客简单介绍下用隐马尔科夫模型(Hidden Markov Model, HMM)来解决地图匹配(Map-Matching)问题.转载请注明网址. 2. Map-Matching(MM ...

  2. 基于隐马尔科夫模型的道路匹配

    随着导航定位.移动互联网等技术的快速发展,手机.车载定位装置等设备都可以进行地理空间数据采集.这些不同类型的地理空间数据往往能反映出某种规律.以时空轨迹为例,这些新形式的泛在地理空间数据,能够反映个体 ...

  3. 20200918:【广发金融工程】2018年重磅专题系列之九:基于隐马尔科夫模型的选股策略研究

    参考链接:https://www.sohu.com/a/252454782_465470 [广发金融工程]2018年重磅专题系列之九:基于隐马尔科夫模型的选股策略研究 2018-09-07 11:26 ...

  4. 【NLP】用于语音识别、分词的隐马尔科夫模型HMM

    大家好,今天介绍自然语言处理中经典的隐马尔科夫模型(HMM).HMM早期在语音识别.分词等序列标注问题中有着广泛的应用. 了解HMM的基础原理以及应用,对于了解NLP处理问题的基本思想和技术发展脉络有 ...

  5. 隐马尔科夫模型 HMM 与 语音识别 speech recognition (1):名词解释

    0.引言 想在 CSDN 上看一下隐马尔科夫模型,简称HMM(Hidden Markov Model)的例子,找了几篇博文,却发现大部分都是转载的,转载的还没有出处,文中的表述与逻辑也看的人晕头转向, ...

  6. 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数

    在本篇我们会讨论HMM模型参数求解的问题,这个问题在HMM三个问题里算是最复杂的.在研究这个问题之前,建议先阅读这个系列的前两篇以熟悉HMM模型和HMM的前向后向算法,以及EM算法原理总结,这些在本篇 ...

  7. 一、隐马尔科夫模型HMM

    隐马尔科夫模型HMM(一)HMM模型基础 隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,它在语言识别,自然语言处理,模式识别等领域得到广泛的应用. ...

  8. 隐马尔科夫模型 (HMM) 算法介绍及代码实现

    Table of Contents Hidden Markov Model (隐马尔科夫模型) 定义 基本问题 前向算法 算法流程 实现代码 后向算法 算法流程 实现代码 Viterbi算法 算法流程 ...

  9. 隐马尔科夫模型(HMM)择时应用的量化策略

    HMM模型 隐马尔科夫模型(HMM)择时应用的量化策略. 仅为研究学习使用, 不作为任何投资策略建议. 文章内容从各处整理汇总而成, 感谢各位大神分享.  具体策略代码均调试通过. 一.从大奖章讲起 ...

最新文章

  1. 让烦恼走开 两招让移动硬盘插拔自如
  2. zw版【转发·台湾nvp系列Delphi例程】HALCON ZoomImageFactor2
  3. MASM6.1使用方法(适合初学者)
  4. Hibernater笔记
  5. StackOverflow热帖:Java整数相加溢出怎么办?
  6. No module named 'fcntl'
  7. ElasticSearch 基础概念学习(未完)
  8. html5获取当前坐标,HTML5教程 如何获取当前位置的经纬度
  9. anaconda虚拟环境教程大全
  10. 如何在10亿个整数中找出前1000个最大的数(TopN算法)
  11. SAP UI5 click list item to navigate to detail page
  12. P5357 【模板】AC自动机(二次加强版) fail树
  13. [Leetcode][JAVA][第912题][排序算法]
  14. MakeItTalk:Adobe 语音驱动的头部动画
  15. 教你 Shiro + SpringBoot 整合 JWT
  16. ESB和注册服务管理的区别
  17. shell基础:输入输出重定向
  18. springboot的配置文件加载的顺序,以及在不同位置配置下,加载的顺序
  19. 【工具分享】批量查询公网IP地址
  20. Go语言实战的知识图谱

热门文章

  1. Android开发 CompoundButton CheckBox Switch RadioButton
  2. 计算机内存不足黑屏怎么办,只狼影逝二度游戏黑屏闪退内存不足解决方法推荐...
  3. 基于形态学运算的图像变换
  4. 真革命!老罗发布坚果R1后,世界再无锤子
  5. 【CET4四级英语】【单词】英语四级高频词汇(4)
  6. 帝国cms模板开发教程(八):帝国cms封面模板开发
  7. 三星推出针对华为手机用户的定向置换计划,希望借此夺取更多市场
  8. 随机森林和神经网络有什么区别?
  9. linux下如何播放mp3文件,如何从Linux命令行播放MP3 | MOS86
  10. 存储管理:先进先出算法和最近最少使用算法