当前位置:四肖八码全年资料 > 区域聚类 >

用Spark 和DBSCAN对地理定位数据进行聚类

  机器学习,特别是聚类算法,可以用来确定哪些地理区域经常被一个用户访问和签到而哪些区域不是。这样的地理分析使多种服务成为可能,比如基于地理位置的推荐系统,先进的安全系统,或更通常来说,提供更个性化的用户体验。

  在这篇文章中,我会确定对每个人来说特定的地理活动区域,讨论如何从大量的定位事件中(比如在餐厅或咖啡馆的签到)获取用户的活动区域来构建基于位置的服务。举例来说,这种系统可以识别一个用户经常外出吃晚饭的区域。

  首先,我们需要选择一种适用于定位数据的聚类算法,可以基于提供的数据点的局部密度确定用户的活动区域。DBSCAN算法是一个不错的选择,因为它自下而上地选择一个点并在一个给定的距离寻找更多的点。然后通过重复这个过程扩展寻找新的点来扩展类簇,直到无法再扩大为止。

  这个算法可以通过两个参数进行调试: ε,用来确定离给定的点多远来搜索;和minPoints,即为了类簇扩展,决定一个给定的点的邻域附近最少有多少点。通过寻找邻近点,本地类簇开始出现,各种形状的类簇逐渐可以被识别(请参见图1的简化描述)。过于孤立的点和离其他点太远的点则会被分配到一个特殊的异常值集群。这些独特的属性使DBSCAN算法适合对地理定位事件进行聚类。

  图1:两由DBSCAN算法(ε= 0.5和minPoints = 5)聚类得出的两个类簇。一个是L型,另一个是圆形。互相靠近的点被分配到相同的类簇。黑色的孤立点被视为“异常点”。图片来自Natalino Busa。 在Spark里使用PairRDDs 在大多数实际应用中,机器学习系统必须处理数以百万计的用户和数十亿的事件。因此,随着越来越多的用户和事件被添加到系统中,一个精心设计的数据处理通道需要具备快速和可伸缩的特点。这就需要分布式计算。就我们的目标而言,Spark作为一个分布式处理引擎,是一个很好的选择,因为它提供了能够在多机器上并行执行许多基于地理定位的聚类任务的计算框架。

  在Spark里,用户地理定位数据可以使用称为PairRDD的对象来建模。PairRDD是一个分布式的元组集合(键,值),根据关键字段被划分到多个机器。特别是对于地理定位数据,我们选择的键是用户标识符,值是给定用户的所有签到的聚合列表。

  地理定位数据放置在一个n×2的矩阵中,其中第一列表示经度,第二列表示纬度。参见下面的例子,这是Spark数据类型中的PairRDD集合,以及元祖的一个例子:

  DBSCAN算法在多种语言和包里都有实现。下面的代码片段是基于DBSCAN 在GitHub上的scala nlp /nak库中的实现。

  假设给定用户经常访问城市的三个区域,一个区域是经常参加酒宴和聚会的,另一个是经常来舒适放松的,还有一个是和朋友一起吃晚餐的。如果这些区域位于城市的不同部分,下面的代码通过查看每个事件的位置将其分到不同类簇。在这段代码中,我们寻找距离约100米的范围内的事件(约0.001度),如果至少有三个点互相接近,我们便开始进行聚类。

  然后,我们将用Spark对整个用户集合来并行dbscan算法。 这个操作作为Spark的PairRDD功能的一部分已经可以使用了,它叫做mapValues:

  简而言之,定位数据的聚类在Spark中可以这样实现,将位置的原始PairRDD转换到一个新的PairRDD,其中元组的键值分别代表用户的ID,和其对应的定位类簇。一旦定位数据被聚类完毕,它可以进一步概括总结,比如确定每个类簇的边界框或轮廓

  图2显示了从一个使用Gowalla(用户在特定地点签到分享他们的位置的社交网站)的匿名用户的定位数据中提取的一个示例类簇。图中是佛罗里达地图,特别是开普科勒尔地区,签到的地方会有一个带颜色的点。

  事件根据其发生的地理位置被聚类。例如在Estero Bay (暗橙色圆点)漫步、在机场的聚集活动(棕色点)和森尼贝尔岛的聚集活动(绿点)属于不同的聚类(ε设定为3公里,minPoints设置为3)。

  图2:从用户的佛罗里达开普科勒尔区域的Gowalla数据集中提取聚类的例子。注意点集合的密度与聚类正确匹配,异常值标记为孤立的黑点。图片来自Natalino Busa。地图重叠:OpenStreet地图。

  这一分析是围绕地理坐标进行的,但可以很容易地扩展到其他事件属性上,如签到时间、场地类型(餐厅、体育馆、博物馆)或用户的状态。聚类算法还可以将用户社交网络中朋友所生成的事件考虑进来,从而得以应用于一个更大的上下文。

  Spark为SQL数据处理提供了一个模块,可用于在运行聚类算法之前运行查询来过滤和收集事件。通过这种方式,数据处理通道可以在Spark上完整地实现SQL和机器学习的统一框架。这种扩展的数据管道对特定类别的事件将提供更准确的聚类结果。

  Spark产生的聚类分析结果可以保存在一个数据存储表中。一个API服务可以查询该表,并确定一个新出现的地理位置点是否属于已知的地区。API服务可以根据用户场景触发适当的行为。例如,它可以通过消息向用户告警、发送通知或提供推荐。

  结论 我最初的实验表明Spark提供了坚实的基础设施在大量的用户和事件上来并行处理和分发机器学习算法。此外,Spark通过在一个数据处理框架结合SQL查询和机器学习,加快了数据驱动系统的开发。

  DBSCAN算法与Spark的结合似乎是一种很有前途的方法,可以抽取准确的地理位置模式,并用于开发基于各种场景的数据驱动、基于位置的应用程序,例如个性化营销、欺诈防范和内容过滤。

  Natalino在荷兰ING集团任职企业数据架构师,他设计了大规模快速数据驱动的应用程序数据解决方案,如个性化营销、预测分析、欺诈检测和安全管理。他是一个全面的数据专家,在可扩展的服务、数据科学和数据处理系统上有丰富的经验。此前,他担任在荷兰的飞利浦研究实验室的资深科学家,在那里他专注于系统级芯片架构、分布式计算和并行化编译器。

  数据人网是数据人学习、交流和分享的平台。专注于从数据中学习。平台的理念:人人投稿,知识共享;人人分析,洞见驱动;智慧聚合,普惠人人。 您在数据人网平台,可以1)学习数据知识;2)创建数据博客;3)认识数据朋友;4)寻找数据工作;5)其它与数据相关的干货。 我们坚持做原创!! 我们都是数据人,数据是有价值的,坚定不移地利用数据价值创造价值! 数据资料、数据课程、数据圈子、数据工作和数据项目服务,请加微信:luqin360

  首先,谈谈这个编写任务介绍。此次是在win下开发,后续项目会在linux下结合hadoop或spark开发。这次要实现以下几点:1.能够将GPS数据在地图上呈现出来2.编写dbscan算法3.根据db...博文来自:Aleks

  数据来源:通过接口抓取带地理标记的flickr图片及属性数据,筛选年份,经过数据清洗,得到样本数据。使用软件:python3需求:得到热点区域AO...博文来自:中遥GISER的博客

  一、DBCSAN简介   DBSCAN是一个基于密度的聚类算法.(他聚类方法大都是基于对象之间的距离进行聚类,聚类结果是球状的簇)。基于密度的聚类是寻找被低密度区域分离的高密度区域。二、DBSCAN里...博文来自:xieruopeng的博客

  最近要在spark上做一个聚类的项目,数据规模和类的数目都比较大。因此总结了一下常见的聚类算法。最终选择mini-batchkmeans,并使用kmeans++来初始化类中心。这样算法的执行速度比较快...博文来自:大魁的专栏

  如何利用机器学习和分布式计算来对用户事件进行聚类博文来自:OReillyData

  DBScan算法流程图算法:DBScan,基于密度的聚类算法输入:D:一个包含n个数据的数据集r:半径参数minPts:领域密度阈值输出:基于密度的聚类集合标记D中所有的点为unvistedforea...博文来自:lincolnmi的专栏

  DBSCAN是一种基于密度的聚类算法,它的基本原理就是给定两个参数,ξ和minp,其中ξ可以理解为半径,算法将在这个半径内查找样本,minp是一个以ξ为半径查找到的样本个数n的限制条件,只要n=mi...博文来自:西二旗小码农

  层次聚类方法对给定的数据集进行层次的分解,直到某种条件满足为止。具体又可分为凝聚的,分裂的两种方案。1凝聚的层次聚类是一种自底向上的策略,首先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直...博文来自:nice_joey的博客

  问题描述(关于dataframe的append问题,直接拖至文后)我们有n多单车,每个单车一段时间(差不多一个星期)规律返回的经纬度位置数据,类似于下图,但是有个问题是单车的这些经纬度数据的准确性只有...博文来自:Emily

  Scala解释器启动Scala解释器的步骤如下:●安装Scala。●确保scala/bin目录位于系统PATH中。●在你的操作系统中打开命令行窗口。●键入scala并按Enter键。提示:不喜欢命令行...博文来自:博文视点(北京)官方博客

  1、闲聊在讲高斯混合模型,我们先抛开一切,来一些推导。推导前,假设你认可两个统计学基础的两个定理(1)大数定理(2)中心极限定理联合实际情况就是说,假如我们坐在广州地铁1号线天,记...博文来自:legotime的博客

  对算法的用例是在Spark平台对学生上网记录处理的一个实例,参考地址见DBScan算法运用实例一、问题提出先考虑一个问题,对下图1中的数据集合怎么聚类?对图2的无规则的数据集合又该如何聚类?二、概念介...博文来自:行者小朱的博客

  k-means和EM算法适合发现凸型的聚类(大概就是圆形,椭圆形比较规则的类),而对于非凸型的聚类,这两种方法就很难找到准确的聚类了。比如如下图:    可能来自不同类的点反而比来自相同类的点还要靠的...博文来自:但行好事,莫问前程

  Spark:聚类算法Kmeans聚类KMeans算法的基本思想是初始随机给定K个簇中心,按照最邻近原则把待分类样本点分到各个簇。然后按平均法重新计算各个簇的质心,从而确定新的簇心。一直迭代,直到簇心的...博文来自:皮皮blog

  需求:在手机地图上,公交或者自驾,经常请求导航的起点终点。如何知道哪些是热点区域(特别是时间相关的热点区域)?方法1:基于搜索的关键词地名(用户输入的终点)进行文本聚类。然后将地名进行经纬度转换,即可...博文来自:记得别人忘了自己

  背景最近一段时间在使用sparkgraphx实现介数估算。介数(betweenness)可分为点介数和边介数,在图中衡量一个点或边的重要程度,后面的讨论均是针对点介数,边介数实现方式类似。这个指标虽然...博文来自:A3301的专栏

  腾讯QQ有着国内最大的关系链,而共同好友数,属于社交网络分析的基本指标之一,是其它复杂指标的基础。借助SparkGraphX,我们用寥寥100行核心代码,在高配置的TDW-Spark集群上,只花了2个...博文来自:A3301的专栏

  简单写写:1、spark的cache只能将数据缓存在内存中,当缓存数据过大时,会只缓存部分数据,没缓存的数据还是会重复之前的操作从之前的RDD中计算获得。2、persist可以选择存储级别,在缓存级别...博文来自:sxb668的专栏

  1地球与生存环境    人类长期以来对地球和周遭自然环境进行观测来研究和了解自己生存的自然空间,科学家们也通过建立数学模型来模拟环境的变化。这些观测和模拟得到的数据通常包含了地理空间中的位置信息,因此...博文来自:漫游学海之旅

  简介此项目基于UCI上的开放数据adult.data主要做了如下分析:婚姻状况学历婚姻状况与学历的关系(博士学位获得者的婚姻状况)代表数据的获得(K-Means聚类分析)配置Spark版本:spark...博文来自:TruedickDing的博客

  DBSCAN聚类算法概述:DBSCAN属于密度聚类算法,把类定义为密度相连对象的最大集合,通过在样本空间中不断搜索最大集合完成聚类。DBSCAN能够在带有噪点的样本空间中发现任意形状的聚类并排除噪点。...博文来自:Python小屋

  摘要:MLlib是Spark生态系统里用来解决大数据机器学习问题的模块。本文将以聚类分析这个典型的机器学习问题为基础,向读者介绍如何使用MLlib提供的K-means算法对数据做聚类分析,我们还将通过...博文来自:大数据训练营

  Idibon位于旧金山的一家专注于自然语言处理(NLP)的创业公司。从海量非结构化数据中识别关键信息或是定制化实时交互是一些可以说明客户如何利用我们Idibon的技术的例子。SparkML和MLlib...博文来自:A3301的专栏

  用户地理位置的聚类算法实现—基于DBSCAN和Kmeans的混合算法用户地理位置的聚类算法实现基于DBSCAN和Kmeans的混合算法聚类算法简介1基于划分的Kmeans算法2基于密度的DBSCAN算...博文来自:Mind In Chaos

  从MovieLens数据集提取特征下载数据集这个数据集主要分为三个部分:第一个是电影打分的数据集(在u.data文件中),第二个是用户数据(r),第三个是电影数据(u.item)。除此之外,...博文来自:weixin_33671935的博客

  这一篇主要讲讲如何在实际运用中编写dbscan算法。dbscan算法主要的目的就是找到最大密度相连点的集合。那么它必然涉及到3个子算法:1)dbscan主流程2)如何确定两个GPS数据点的距离3)如何...博文来自:Aleks

  聚类算法总结 2013-06-0614:17:48分类: 大数据(本文转自网上,具体出处忘了是哪里的,好像是上海一位女士在网上的博文,此处转载,用以备查,请原作者见谅)聚类算法总结:---------...博文来自:NNDreamer的博客

  这一篇主要记录下对dbscan算法的学习。下一篇将说说把此算法具体运用到热点区域分析。好了,切入正题。第一个,什么是dbscan?全称为:Density-BasedSpatialClusteringo...博文来自:Aleks

  一般我们在做数据挖掘过程中地理位置算是一个特别重...博文来自:java、c++、机器学习方向King

  在即将发布的ApacheSpark2.0中将会提供机器学习模型持久化能力。机器学习模型持久化(机器学习模型的保存和加载)使得以下三类机器学习场景变得容易:数据科学家开发ML模型并移交给工程师团队在生产...博文来自:A3301的专栏

  作者:李涛涛通联数据1.同花顺收费版之走势预测2014年后半年开始,国内A股市场可谓是热火朝天啊,路上的人谈的都是股票。小弟虽然就职金融互联网公司,但之前从来没有买过股票,但每天听着别人又赚了几套房几...博文来自:A3301的专栏

  从事IT行业的都知道一个开发者的水平基本取决于你做过多少项目,唯有见多才能识广,这次收集的34套Java经典项目主要包括26套Java web项目,6套Java swing项目,2套Java控制台项目...博文来自:明礼馨德的博客

  一、适用场景内存属于稀缺资源,不能随意浪费。如果在一个系统中有很多个完全相同或相似的对象,我们就可以使用享元模式,让他们共享一份内存即可,不必每个都去实例化对象,从而节省内存空间。二、模式核心 享...博文来自:小小本科生成长之路

  一、前言最近由于研究需要,要用到线性判别分析(LDA)。于是找了很多资料来看,结果发现大部分讲的都是理论知识,因此最后还是看的一知半解,后来终于找到了个英文的文档,作者由PCA引入LDA,看过后豁然开...博文来自:jnulzl的专栏

  相信学习编程的同学,或多或少都接触到算法的时间复杂度和空间复杂度了,那我来讲讲怎么计算。        常用的算法的时间复杂度和空间复杂度 一,求解算法的时间复杂度,其具体步骤是: ⑴ 找出算法...博文来自:杨威的博客

  作者fbysss声明:本文由fbysss原创,转载请注明出处关键字:tomcat监控...博文来自:fbysss的专栏

  从trust zone之我见知道,支持trustzone的芯片会跑在两个世界。 普通世界、安全世界,对应高通这边是HLOS,QSEE。 如下图: 如下是HLOS与QSEE的软件架...博文来自:邓永坚的blog

  公司产品之前使用xmpp作为底层库,之前同事编译自己的sdk静态库想生成.a库,但是各种编译问题(其实耐心修改配置都能解决),但是从百度找到方案用framework可以解决,所以最终使用的是frame...博文来自:mingming24的专栏

  本篇文章是根据我的上篇博客,给出的改进版,由于时间有限,仅做了一个简单的优化。相关文章:将excel导入数据库2018年4月1日,新增下载地址链接:点击打开源码下载地址十分抱歉,这个链接地址没有在这篇...博文来自:Lynn_Blog

  偶然间发现各路大牛的一些python创作,不得不说python是一个比较全面的语言,附上网址以后可能需要用到python视觉处理,爬虫数据分析的时候可以用的上吧2333 python小项目: ht...博文来自:王甲评的博客

  docx4j官方提供了一些例子,本文只是其中一部分应用的简单例子。需要注意的地方是页眉和页脚,必须创建对应关系才能起作用。页眉和页脚添加图片的时候,第二个参数sourcePart是必须的,调用的cre...博文来自:偶尔记一下

  扫二维码关注,获取更多技术分享 本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,...博文来自:Marswill

  jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js ...博文来自:Websites

  安装cadence之前对操作系统需要进行一些必要的配置。博文来自:maxwell2ic的博客

  强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Ti...博文来自:九野的博客

  一、代理模式为某个对象提供一个代理,从而控制这个代理的访问。代理类和委托类具有共同的父类或父接口,这样在任何使用委托类对象的地方都可以使用代理类对象替代。代理类负责请求的预处理、过滤、将请求分配给委托...博文来自:小小本科生成长之路

  在MATLAB中,可以注释一段程序。 使用“%{”和“%}”。 例如 %{ 。。。 %} 即可。 经典方法是用 if 0,但缺点是不够直观,注释掉的内容仍然保持代码的颜色。现在可以用 ...博文来自:知识小屋

http://magdakalas.com/quyujulei/318.html
点击次数:??更新时间2019-06-16??【打印此页】??【关闭
  • Copyright © 2002-2017 DEDECMS. 织梦科技 版权所有  
  • 点击这里给我发消息
在线交流 
客服咨询
【我们的专业】
【效果的保证】
【百度百科】
【因为有我】
【所以精彩】