当前位置:   article > 正文

基于Spark的移动用户主要活动地点的挖掘算法实现以及JavaEE技术整合_spark移动用户数据分析

spark移动用户数据分析

本算法基于Spark计算引擎,能够从海量的手机基站数据中挖据出用户的主要活动地点,比如工作地点和居住地点。实现好挖掘算法之后,通过JavaEE来整合上面的算法,让用户能够通过简单的Web UI就能够操作使用该算法,同时为用户提供了可视化数据的功能。

1、移动用户主要活动地点挖掘算法

1.1 算法输入数据字段:

字段名称说明例子
phoneNo手机号码,唯一标志一个用户DEF2B5CA38FF9699732B65BA3941DBA2
time用户连接基站的时间20160923032356
longitude经度113.4138
latitude纬度23.1205

算法数据是以CSV格式保存,只要csv数据中包含上面的四个字段就可以作为本算法的输入数据集。

1.2 手机基站数据的特点:

优点:
1)、获取成本低
2)、数据量多
3)、覆盖人群广
4)、轨迹数据联系

缺点:
1)、数据不准确:手机基站的日志信息里面包含移动用户的经纬度数据,但是这个位置数据是不准确的,误差范围不超过该基站的信号覆盖半径。当前通信运营商的基站型号不统一,它们的覆盖范围也不同,覆盖范围从几百米到上千米不等,这就使得手机基站记录用户的地理位置具有不准确性。
2)、数据分布密度不均:居住人口密集的地方手机基站分布也会密集,所以,城市的基站分布比农村密集,城市市中心的基站分布比城市外围区域密集。在基站分布密集的地方在几百平方米内可能会存在多个手机基站,而在基站分布稀疏的地方几公里范围内可能只有一个手机基站。
3)、数据集中包含噪声:一般情况下,移动用户短暂停留在某手机基站的覆盖范围内的时候就会和该基站连接,该基站就会产生连接日志信息。因这些短暂的停留而产生的日志信息会影响到算法对用户重要活动地点的挖掘和分析。这便是噪声数据。
4)、存在基站跳变的现象:当多个基站的信号覆盖区域存在重叠的时候,移动用户恰好处于信号的重叠区域,就会出现基站跳变的现象。具体表现为:用户的手机信号在这些基站间不断切换。

本算法能够在很大程度上面克服手机基站数据的缺点,挖掘出用户的主要活动地点。

1.3 算法总体思路:

这里写图片描述

1.4 开发环境

开发环境统计表

名字版本描述
Java1.8后台逻辑(语言)
Scala2.11.8算法部分的编程语言
Javascript前台逻辑(语言)
CSS前台布局和样式(语言)
Jquery3.2.1前台逻辑(框架)
Boostrap3.3.7前台布局和样式(框架)
Spring4.1.7后台java对象容器(框架)
SpringMVC4.1.7和前台交互(框架)
LocalFS本地文件系统
HDFS2.7Hadoop分布式文件系统
Apache Spark2.0.2分布式计算框架
Intellij IDEA2016.2.5集成开发环境
Tomcat1.7应用服务器
Maven3.0.5版本管理工具
Open SUSEleap 42.1Linux系统

1.5 算法详细思路:

来自论文:http://www.jos.org.cn/html/2016/7/5035.htm

2、JavaEE整合算法

2.1 需求分析

前面的内容已经讲了本应用系统的算法,包括该算法所解决的实际问题。实现好该算法之后,我们需要考虑的问题是,如何让用户“方便”地使用该算法?这里所谓的“方便”指的是底层的算法代码对用户透明,用户只需要关心算法的输入数据集、算法阈值、结果保存路径等,用户设置好这些参数之后,点击运行按钮就可以执行。算法运行结束之后,用户能够以可视化的方式(比如地图展示)查看算法运行结果。用户在整个操作过程中,面对的只有人性化的Web UI交互页面。

那么,具体的需求是什么呢?

1)原始数据集和算法结果集既能够保存在本地文件系统也能保存在HDFS中。
2)用户能够通过Web UI设置以下参数:
	(1)算法数据集所在路径。
	(2)算法结果保存路径。
	(3)算法阈值。
	(4)Spark的执行模式:Local模式或者Standalone模式。
	(5)数据集和结果集将保存的文件系统:本地系统文件系统或者HDFS。
3)用户能够通过Web UI执行算法。
4)用户能够通过Web UI查看算法在Spark集群中的当前执行日志。
5)用户能够通过地图展示算法结果坐标点以及相应的原始数据坐标点。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2.2 系统架构设计

这里写图片描述

从总体上看,本应用系统分为两部分,分别是web前端和后台。前端和后台之间通过Ajax交互数据,数据的格式被封装成JSON格式。
对于前台,使用CSS和Boostrap进行页面布局和样式设置。使用JQuery和Javascript编写前台的逻辑,包括前端和后台之间的数据交互逻辑。使用Baidu Map API进行数据可视化展示。
对于后台,可把它分为两部分,分别是Web Server和Core。Web Server处理网站逻辑,向上它能够和web前台交互,向下能够操作算法模型,所以,Web Server起到了桥梁的连接作用。Core部分主要运行算法。Core中算法主要有两个,一个上文所讲到的用户职住地挖掘算法,另一个是由Apache Common math提供DBSCAN算法,该DBSCAN算法是单机版的,选择单机版而不是集群版的原因有:(1)一个用户的数据量往往不超过100兆,也就是在一台机器上面也能正常运行。(2)在都能正常运行的情况下,单机版的DBSCAN算法的运算性能是优于集群版的,因为它减少了一些没必要的调度。HDFS是Hadoop Distibuted File System的简称,是Hadoop生态圈中的一个分布式文件系统,LocalFS指的是本地操作系统的文件系统。当原始数据集或者算法结果集比较大的时候,应该将它们保存在HDFS文件系统中。

2.3 应用操作时序图

这里写图片描述

2.4 应用系统界面

2.4.1 参数设置模块

算法的参数可以通过参数设置模块设置,算法的参数有:DBSCAN算法的eps参数,DBSCAN算法的Min Points参数,Box Length参数,一个簇的最小点个数,状态的持续时间和两个相邻状态的时间间隔。这些参数不会因为界面切换到另一个模块而丢失。
这里写图片描述

####2.4.2 数据集模块
算法的输入数据集既可以保存在本地操作系统的文件系统中,也可以保存在HDFS文件系统中。需要指定数据集的具体路径。所以,需要提供输入框让用户输入数据集的URL。输入的数据集是CSV(Comma-Separated Values)文件,所以,用户可以指定字段之间的分隔符以及字段所对应的下标。这样可以大大较少数据集的格式要求:只需要数据集是CSV文件,并且存在算法所需的字段,那么它就可以作为本算法的输入数据集。

这里写图片描述

####2.4.3 运行模块
经过前面的步骤,用户已经设置好算法的参数、算法输入的数据集、算法结果保存的位置。进入运行模块,用户可以选择算法在Spark中的运行模式:Local模式或者Standalone模式。点击“执行算法”按钮之后,算法就可以执行,在执行的过程中,用户可以通过点击“刷新日志”按钮查看算法的运行日志,从而定位算法执行进度。每一次点击“刷新日志”按钮,给用户展现的是最新的日志,即使日志的行数超过文本框的行数,这能体现系统的人性化设计。用户也可以点击“清空日志”按钮清空日志。

这里写图片描述

####2.4.4运行模块
经过前面的步骤,用户已经设置好算法的参数、算法输入的数据集、算法结果保存的位置。进入运行模块,用户可以选择算法在Spark中的运行模式:Local模式或者Standalone模式。点击“执行算法”按钮之后,算法就可以执行,在执行的过程中,用户可以通过点击“刷新日志”按钮查看算法的运行日志,从而定位算法执行进度。每一次点击“刷新日志”按钮,给用户展现的是最新的日志,即使日志的行数超过文本框的行数,这能体现系统的人性化设计。用户也可以点击“清空日志”按钮清空日志。

这里写图片描述

####2.4.5 可视化展示模块
在可视化展示模块中,用户能够把算法的原始数据集和结果集展示在地图上面。数据集和结果集分别使用两种不同的地图标注表示。当在同一个地方出现多个重合点的时候,只需显示一个标注,并在该标注增加累加的计数,以表示该点有多少个重合的点。数据集和结果集的路径是用户在前面的模块中设置的,也就是说,在可视化展示模块中,被展示的数据既可以来自本地文件系统,也可以来自HDFS。红色的地图标注表示结果集的点,紫色且带有数字的地图标注表示原始数据集的点。
这里写图片描述

PPT下载地址为:
http://download.csdn.net/detail/liangyihuai/9863108

源码地址为:
https://github.com/liangyihuai/LocationFinding

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/453168
推荐阅读
相关标签
  

闽ICP备14008679号