m基于隐马尔科夫模型(HMM)的手机用户行为预测(MMUB)算法matlab仿真
目录
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仿真相关推荐
- python地图匹配_基于隐马尔科夫模型(HMM)的地图匹配(Map-Matching)算法
1. 摘要 本篇博客简单介绍下用隐马尔科夫模型(Hidden Markov Model, HMM)来解决地图匹配(Map-Matching)问题.转载请注明网址. 2. Map-Matching(MM ...
- 基于隐马尔科夫模型的道路匹配
随着导航定位.移动互联网等技术的快速发展,手机.车载定位装置等设备都可以进行地理空间数据采集.这些不同类型的地理空间数据往往能反映出某种规律.以时空轨迹为例,这些新形式的泛在地理空间数据,能够反映个体 ...
- 20200918:【广发金融工程】2018年重磅专题系列之九:基于隐马尔科夫模型的选股策略研究
参考链接:https://www.sohu.com/a/252454782_465470 [广发金融工程]2018年重磅专题系列之九:基于隐马尔科夫模型的选股策略研究 2018-09-07 11:26 ...
- 【NLP】用于语音识别、分词的隐马尔科夫模型HMM
大家好,今天介绍自然语言处理中经典的隐马尔科夫模型(HMM).HMM早期在语音识别.分词等序列标注问题中有着广泛的应用. 了解HMM的基础原理以及应用,对于了解NLP处理问题的基本思想和技术发展脉络有 ...
- 隐马尔科夫模型 HMM 与 语音识别 speech recognition (1):名词解释
0.引言 想在 CSDN 上看一下隐马尔科夫模型,简称HMM(Hidden Markov Model)的例子,找了几篇博文,却发现大部分都是转载的,转载的还没有出处,文中的表述与逻辑也看的人晕头转向, ...
- 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数
在本篇我们会讨论HMM模型参数求解的问题,这个问题在HMM三个问题里算是最复杂的.在研究这个问题之前,建议先阅读这个系列的前两篇以熟悉HMM模型和HMM的前向后向算法,以及EM算法原理总结,这些在本篇 ...
- 一、隐马尔科夫模型HMM
隐马尔科夫模型HMM(一)HMM模型基础 隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,它在语言识别,自然语言处理,模式识别等领域得到广泛的应用. ...
- 隐马尔科夫模型 (HMM) 算法介绍及代码实现
Table of Contents Hidden Markov Model (隐马尔科夫模型) 定义 基本问题 前向算法 算法流程 实现代码 后向算法 算法流程 实现代码 Viterbi算法 算法流程 ...
- 隐马尔科夫模型(HMM)择时应用的量化策略
HMM模型 隐马尔科夫模型(HMM)择时应用的量化策略. 仅为研究学习使用, 不作为任何投资策略建议. 文章内容从各处整理汇总而成, 感谢各位大神分享. 具体策略代码均调试通过. 一.从大奖章讲起 ...
最新文章
- 让烦恼走开 两招让移动硬盘插拔自如
- zw版【转发·台湾nvp系列Delphi例程】HALCON ZoomImageFactor2
- MASM6.1使用方法(适合初学者)
- Hibernater笔记
- StackOverflow热帖:Java整数相加溢出怎么办?
- No module named 'fcntl'
- ElasticSearch 基础概念学习(未完)
- html5获取当前坐标,HTML5教程 如何获取当前位置的经纬度
- anaconda虚拟环境教程大全
- 如何在10亿个整数中找出前1000个最大的数(TopN算法)
- SAP UI5 click list item to navigate to detail page
- P5357 【模板】AC自动机(二次加强版) fail树
- [Leetcode][JAVA][第912题][排序算法]
- MakeItTalk:Adobe 语音驱动的头部动画
- 教你 Shiro + SpringBoot 整合 JWT
- ESB和注册服务管理的区别
- shell基础:输入输出重定向
- springboot的配置文件加载的顺序,以及在不同位置配置下,加载的顺序
- 【工具分享】批量查询公网IP地址
- Go语言实战的知识图谱
热门文章
- Android开发 CompoundButton CheckBox Switch RadioButton
- 计算机内存不足黑屏怎么办,只狼影逝二度游戏黑屏闪退内存不足解决方法推荐...
- 基于形态学运算的图像变换
- 真革命!老罗发布坚果R1后,世界再无锤子
- 【CET4四级英语】【单词】英语四级高频词汇(4)
- 帝国cms模板开发教程(八):帝国cms封面模板开发
- 三星推出针对华为手机用户的定向置换计划,希望借此夺取更多市场
- 随机森林和神经网络有什么区别?
- linux下如何播放mp3文件,如何从Linux命令行播放MP3 | MOS86
- 存储管理:先进先出算法和最近最少使用算法