位置预测系列(三)

What’s Your Next Move: User Activity Prediction in Location-based Social Networks

这篇文章来自于SDM’13年(SIAM InternationalConference on Data Mining 2013)的录用论文集,是关于在基于位置社交网络里面(LBSN)进行用户签到预测的。本文解决问题的角度很创新,并没有直接入手于用户签到预测问题,而是先预测用户的下一个签到活动类型,然后在此基础上,再预测用户的下一个签到位置。

1.1 论文总结

为了预测用户的下一个签到活动类型,作者利用隐含马尔可夫模型(HMM)对用户的活动转移进行建模,如下图所示:


图1:HMM建模用户活动转移

这里面的解释是认为用户从事某个活动的意愿是由其本身隐含的一个状态所决定的。所以,根据观察到的用户活动序列,即活动1->活动2->...->活动n,可以采用保姆-韦尔奇训练算法(Baum-Welch Algorithm)来对HMM模型的参数进行训练,即各个隐含状态之间相互转化的概率,以及由某个隐含状态输出特定活动类型的概率。在获得这些参数之后,作者通过计算在已知模型参数和观察活动序列的情况下,最有可能达到的隐含状态n+1,然后通过隐含状态n+1来进一步计算活动n+1。但是,这个模型仅仅利用了活动的序列信息,没有考虑到地理位置、时间等因素,所以作者对模型进行改进,采用了混合的隐含马尔可夫模型(Mixed HMM),增加了时空状态对输出活动类型的影响(如图2)。


图2:Mixed HMM建模用户活动转移

由于用户签到数据的极大稀疏性,如果对每个用户的活动序列都分别训练出一个个性化的Mixed HMM,所估计的模型参数势必是不准确的。但是,如果集合了所有用户的活动序列,训练一个公共的Mixed HMM来统一表示用户的活动转移,也是不大可能的。因为用户间的活动转移有可能存在很大区别,根本不可能采用一个模型来统一表示。作者在文中采用了一个折中的办法,首先根据每个用户签到记录统计,对所有用户采用K-means方法进行聚类。然后,对每一类的用户的活动转移来分别用一个Mixed HMM来进行建模。这在文中被作者称为是考虑到了用户活动偏好来进行用户签到活动预测。

在预测得到用户的下一个签到活动类型之后,作者通过搜索以用户当前签到位置为中心的方圆400m×400m的区域范围内,签到类型为所预测类型的位置场所。将这些场所为候选集,作者提出了四种策略来对其进行排序:(1)签到数目;(2)签到用户数;(3)签到数与签到用户数的乘积;(4)单个用户的最大签到数。对于top-k的预测方式,就选取前k个位置场所作为签到预测的结果。

1.2 读后感

优点:

(1)为了避免预测的不平衡性问题,即在庞大的位置候选集中选取某一个位置作为预测的下一个位置,作者将原问题分解为了两个子问题:预测用户的下一个签到活动类型;在预测的签到活动类型的基础上来预测用户的下一个签到位置。由于签到活动类型的数目是极其有限的,从而规避了预测的不平衡性问题。

(2)采用Mixed HMM来对用户的活动转移进行建模,从而包含了用户签到的时空信息。

缺点:

(1)在利用训练好的Mixed HMM来对用户的下一个签到活动类型进行预测的时候,仅仅是通过预测最可能的下一个隐含状态n+1,然后根据输出概率矩阵,得到由这个隐含状态n+1最有可能输出的活动类型n+1。事实上,没有必要确定下一个隐含状态n+1,直接通过计算输出每一个可能的活动类型n+1的概率,选取概率最大的活动类型即可。这在时间复杂度上并没有增加额外的负担。

(2)在做签到位置预测的时候,作者并没有考虑到用户本身的历史签到位置,而是仅仅选取用户当前位置附近的签到场所作为候选集,并且附近场所的范围选定为400m×400m,这个参数怎么确定的也没给个明确说法。并且根据文中提供的数据统计情况,用户的下一个签到位置距离其当前的位置有40%的情况是大于1km的。所以,在做签到位置预测的时候,仅仅考虑到用户附近的签到场所作为候选集是不是显得不大合理。

1.3 总结

关于签到位置预测的候选集问题,一般有两种决策。一是简单地把用户的历史签到位置作为候选集。这就假设用户往往在其签到位置重复签到。事实上,对LBSN用户而言,这种情况还是比较少见的。另外一种决策是将用户所在城市的所有签到场所作为候选集。这个时候,由于候选集的过于庞大,并且需要从庞大的候选集中仅仅选取一个位置作为预测结果,预测的不平衡性问题就要面对了。这篇文章给我们提供了一种解法,即将问题转移到活动预测。因为在活动预测问题中,即使是将所有活动类型都作为候选集,也不会遭遇预测的不平衡性问题。

参考文献:

[1] 隐含马尔可夫模型导论:An Introduction to Hidden Markov Models
[2] 混合隐含马尔可夫模型介绍:Mixed hidden markov models: An ex- tension of the hidden markov model to the longitudinal data setting


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/67283.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python抓取彩票排列3全部历史数据

python爬虫好久没用都生疏了,刚好朋友要排列三数据,就用这个练手, 去体彩官网http://www.lottery.gov.cn/historykj/history.jspx?_ltypepls 不闲聊,直接上代码 import requests from requests.exceptions import RequestExcept…

使用VBA对彩票进行分析-3D-排列3-排列5

Sub 按钮1_Click() Dim wb As Workbook Dim sht As Worksheet, sht1 As Worksheet Dim arr Dim dic As Object Application.ScreenUpdating False Set sht1 ThisWorkbook.Sheets("排五遗漏数据") For j 3 To 15 Step 3sht1.Range(sht1.Cells(2, j - 1), sht1.Cell…

python爬取彩票排列三开奖结果

import gzip import re from urllib import requestimport xlwt from bs4 import BeautifulSoup# 参数说明: # period: 开奖期数 # redo_num: 重试次数,默认是0,每错误一次回调时会1,默认就好 # max:最大重试次数…

java 日语文档翻译_日语文档怎么翻译?我来教会你日语翻译

小编是一个资深日漫迷,但是每次去看完日漫电影都觉得结尾留有遗憾。其实有很多日漫电影的内容都被修改了。为了能看到原版的日漫内容,小编终于从网上找到了一些有关原版日漫故事情节的文档。可是全都是日语,我一句都看不懂。日语文档怎么翻译…

从NLP视角看电视剧《狂飙》,会有什么发现?

文章目录 1、背景2、数据获取3、文本分析与可视化3.1 短评数据预处理3.2 词云图可视化3.3 top关键词共现矩阵网络3.4 《狂飙》演职员图谱构建 4、短评相关数据分析与可视化5、总结 原文请关注:实用自然语言处理 作者:风兮 建议查看原文: ht…

【CV】第 9 章:图像分割

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

分镜头脚本表格模板下载

打算做一个从 0-1 创作短视频的系列教程,前几期已经发在微信视频号创造营上。 第一课:五个实用的视频拍摄技巧: 总结为:加速、减速、遮罩转场、利用前景和航拍,可以让你的视频更好看。 今天分享第二课:如何…

chatgpt赋能python:用Python编写AI:从入门到精通

用Python编写AI:从入门到精通 人工智能(AI)一直是计算机科学领域的热门话题。随着AI技术的成熟,越来越多的公司开始在其业务中应用AI。Python是机器学习和人工智能领域最流行的编程语言之一,Python提供了众多强大的库…

chatgpt赋能python:Python滑动窗口算法详解

Python滑动窗口算法详解 滑动窗口算法是一种常用的算法,常被用于处理一些队列、数组和字符串等相关的问题。在Python编程中,滑动窗口算法的运用场合非常广泛,因此熟练掌握Python滑动窗口算法是每个Python工程师必备的技能之一。 滑动窗口算…

实现微信公众号发送消息给指定用户

一、前言 在实际项目开发中,需要实现消息中心向关注微信公众号的指定用户发送消息通知,在翻阅了网上很多资料及微信官方开发文档后,最终顺利完成功能开发,但是其中走过的路艰辛且曲折,因此特将开发过程中踩过的坑及心…

【uiautomation】微信群发消息,可发送文本 文件

前言 接到了一个需求:现微信有8000好友,需要给所有好友发送一则一样的消息。网上搜索一番后,发现uiautomation 可以解决该需求,遂有此文。这是第二篇,群发消息给微信好友 代码在文章末尾,自取~ 更多功能的微…

java发送微信订阅消息

使用java发布订阅消息 之前接到了一个需求,要求我使用java发布订阅消息。那么首先,我要知道订阅消息是个什么,他能完成什么功能 一.什么是订阅消息 我直接去官网查看订阅消息的相关文档说明: https://developers.weixin.qq.com…

微信公众号开发——向指定用户发送模板消息

😊 作者: 一恍过去 💖 主页: https://blog.csdn.net/zhuocailing3390 🎊 社区: Java技术栈交流 🎉 主题: 微信公众号开发——向指定用户发送模板消息 ⏱️ 创作时间&#xff1a…

微信公众号一次性订阅消息功能开发实践

截止到2021年6月10日,微信公众号测试号是不支持“微信公众号一次性订阅消息”的开发,必须用正式的微信公众号测试,那如何在不影响正式的微信公众号运营的情况下来开发这个小功能呢,请看看笔者的实践。 微信一次性订阅官方开发文档…

python实现微信公众号给你的重要用户推送消息

最近小红书上这个很火,觉得做起来应该也不会太难,捣鼓了两天有了初步成效,还有一些功能没实现(比如定时推送),保姆级教程,大家可以借鉴,动手给自己重要的人做一个,或许可…

JAVA对接微信公众号(服务号、订阅号)实现模板消息推送功能

最近做了个需求要求对接微信公众号,使用模板进行消息推送,今天抽时间总结一下相关的逻辑。 大概逻辑分为四个步骤: 获取微信调用接口凭证access_token。获取微信模板列表。使用模板进行消息推送。公众号配置服务器URL。 我这里的实现没有使…

微信开发工具实现订阅消息功能

微信开发工具实现订阅消息功能 1、新建文件夹&#xff0c;取名为&#xff1a;push1 2、push1.wxml写下如下代码&#xff1a; <button bindtap"dingyue">订阅</button>3、push1.js写下如下代码&#xff1a; // pages/push1/push1.js Page({/*** 页面…

微信公众号 - Java推送小程序订阅消息给用户

不啰嗦&#xff0c;我们直接开始&#xff01; 本文使用体验版小程序进行调试。 一、开发前小程序准备&#xff1a; 1、登录微信公众平台 点开下面链接&#xff0c;使用微信扫码 微信公众平台 然后选择一个小程序并登录 2、在小程序后台找到Appid、AppSecret、Token、Encod…

微信公众号订阅号开发的学习(二):获取用户发送的消息、简单的自动回复、自定义菜单

获取用户发送的消息 基础 微信服务器会发送两种类型的消息给开发者服务器。 get请求 验证服务器的有效性post请求 微信服务器会将用户发送的数据转发到开发者服务器上 实现 基于微信公众号订阅号开发的学习&#xff08;一&#xff09;&#xff1a;基础知识 auth.js //引…

微信第三方平台集成公众号发送模板消息

最近老板下发了个任务&#xff0c;有一个业务是整合用户的微信公众号&#xff08;服务号&#xff09;&#xff0c;然后在我们的erp系统里给下家客户发送模板消息&#xff0c;找了一下发现微信第三方平台可以实现&#xff0c;那就干起来。 先在微信开放平台&#xff0c;申请一个…