译文如何利用机器学习和分布式计算来对用户事件进行分类

数据科学家联盟 数据科学家联盟     2022-11-06     522

关键词:

本文为数盟原创译文,欢迎转载,注明出处“数盟社区”即可

作者:Natalino Busa

机器学习,特别是聚类算法,可以用来确定哪些地理区域被一个给定的用户经常访问和“入住”而哪些区域不是。这样的地理分析使范围广泛的服务成为可能,从基于位置的推荐系统到先进的安全系统,并提供更个性化的用户体验。

在这篇文章中,我将确定特定的地理区域,从个人到每个用户,看看如何从众多的定位请求中通过获取用户的地理区域来构建基于位置的服务,如在餐馆或咖啡馆的签到。举例来说,系统可以识别一个既定的用户常常吃饭郊游的区域。

使用DBSCAN聚类算法

首先,我们需要选择一种有效的地理数据聚类算法,可以基于提供的数据点的局部密度确定用户的地理位置。DBSCAN算法是一个很好的选择,因为它是通过选择一个点自下而上运行的,会在一个给定的距离寻找更多的点。然后通过重复这个过程扩展寻找新的集群点,直到无法再扩大为止。

 

这个算法可以调用两个参数:ε,决定寻找一个给定的点附近的多远的点,还有minPoints,决定多少分应该出现在一个给定的点的邻域,以保持给定集群扩展。通过寻找邻近点,本地集群开始出现,各种形状的集群出现了(请参见图1的简化描述)。过于孤立的点和离其他点太远的点被分配到一个特殊的异常值集群。这些识别属性使DBSCAN算法适合集群定位事件。

图1.两个集群显示集群与DBSCAN算法(ε= 0.5和minPoints = 5)。一个是L型,另一个是圆形。接近彼此的点被分配到相同的集群。黑色的孤立点被视为“异常点”。图片来自Natalino Busa。

 

在Spark里使用PairRDDs

在大多数实际应用中,机器学习系统必须处理数以百万计的用户和数十亿的事件。因此,,随着越来越多的用户和事件被添加到系统中,一个精密的数据处理通道需要具备快速和可伸缩的特点。这要求分布式计算。对于我们的目标,Spark分布式处理引擎,是一个很好的选择,因为它提供了框架,能够在多个机器上并行执行许多location-clustering任务。

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

定位数据安排在一个n除以2矩阵,其中第一列表示经度,第二列表示纬度。见下面的一个PairRDD收集的spark数据类型和元组的案例:

1 2 3 4 5 6 org . apache . spark . rdd . RDD [ ( Long , breeze . linalg . DenseMatrix [ Double ] ) ]   ( 15474 ,  DenseMatrix ( 40.8379525833 - 73.70209875                         40.6997066969 - 73.8085234165                            40.7484436586 - 73.9857316017                            40.750613794  - 73.993434906 ) )

DBSCAN和Spark并行

DBSCAN算法可以兼容多种语言和包。下面在GitHub上的代码片段,基于DBSCAN 的,在scala库中实现nlp /nal。

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

1 2 3 4 5 6 7 8 9 10 11 import breeze . numerics . _ import nak . cluster . _ import nak . cluster . GDBSCAN . _   def dbscan ( v : breeze . linalg . DenseMatrix [ Double ] ) =   val gdbscan = new GDBSCAN (     DBSCAN . getNeighbours ( epsilon = 0.001 , distance = Kmeans . euclideanDistance ) ,     DBSCAN . isCorePoint ( minPoints = 3 )   )   val clusters = gdbscan cluster v

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

1 val clustersRdd = checkinsRdd . mapValues ( dbscan ( _ ) )

简而言之,集群定位数据可以在Spark中实现,通过将位置的原始PairRDD转换到一个新的PairRDD,键值的元组代表用户的ID,分别为每个用户定位集群。一旦定位数据被分组到集群,它可以通过确定每个集群的边界框或轮廓进一步总结实例。

图2显示了从一个使用Gowalla,社交网站的匿名用户提取一个示例集群,用户通过在特定地点签到分享他们的位置。图中是佛罗里达地图,特别是Cape Coral的面积,签到的地方会有小色点。

 

根据事件发生的地理位置我们获得了集群。所以,例如,漫步在Estero Bay  (暗橙色圆点),在机场的场馆(棕色点),和在森尼贝尔岛的场馆(绿点)属于单独的集群(ε设定为3公里,minPoints设置为3)。

 

图2。集群的一个例子,一个用户使用Gowalla的数据集,佛罗里达Cape Coral区域。注意正确密度的点集合映射到集群,异常值标记为孤立的黑点。图片来自Natalino Busa。地图上色:OpenStreet地图。

 

进一步增强定位数据分析

这个分析是围绕地理坐标进行的,但可以很容易地扩展到其他属性,如签到时间、场地类型(餐厅、体育馆、博物馆)或用户的地位。聚类算法还可以应用于一个更大的背景,包括用户社交网络的朋友发生的事件。

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

创建一个基于位置的API服务

Spark产生的聚类分析结果可以保存在数据存储表。一个可以使用API服务查询的表,并在用户提交地点时,确定它属于已知的地区。API服务可以根据使用案例触发一些提示。例如,它可以告知用户警报,通知,或建议。

结论

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

DBSCAN算法结合Spark似乎是一种很有前途的方法,用以提取准确的地理模式,并且能够运用在开发数据驱动、基于位置的应用程序等各种不同领域,如个性化营销、欺诈防范和内容过滤。

 

原文链接:https://www.oreilly.com/ideas/clustering-geolocated-data-using-spark-and-dbscan?twitter=@bigdata

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

参考技术A给你解释一下这些术语:云计算:就是个炒得很热的商业概念,其实说白了就是将计算任务转移到服务器端,用户只需要个显示器就行了,不过服务器的计算资源可以转包。当然,要想大规模商业化,这里还有些问题... 查看详情

机器学习讲座,如何利用sparkmllib进行个性推荐?

随着互联网发展,更多电商网站更加提倡用户参与和用户贡献。而在现今的推荐技术和算法中,最被大家广泛认可和采用的就是基于协同过滤的推荐方法。这种在信息过滤和信息系统中很受欢迎的技术,与传统的基于内容过滤直... 查看详情

数据与模型并行

...器学习算法更好地从大数据中训练出性能优良的大模型是分布式机器学习的目标。为了实现这个目标,一般需要根据硬件资源与数据/模型规模的匹配情况,考虑到计算任务、训练数据和模型进行划分,分布式存储、分布式训练... 查看详情

初识机器学习

...论这段话:机器学习正是这样的一门学科,它致力于研究如何通过计算的手段,利用经验来改善系统自身的性能。而在计算机系统当中,“经验”就是以“数据”的形式存在,所以,机器学习所研究的主要内容是:关于在计算机... 查看详情

非cs背景,如何快速上手机器学习?

...运算。作为计算机科学的一个分支,机器学习致力于研究如何利用代表某现象的样本数据构建算法。这些数据可能是自然产生的,可能是人工生成的,也可能来自于其他算法的输出。同时,机器学习也可以定义为一套解决实际问题的... 查看详情

终于有人把分布式机器学习讲明白了

导读:分布式机器学习与联邦学习。作者:薄列峰 黄恒顾松庠陈彦卿等来源:大数据DT(ID:hzdashuju)分布式机器学习也称分布式学习,是指利用多个计算节点(也称工作节点,Worker)进行... 查看详情

终于有人把分布式机器学习讲明白了

导读:分布式机器学习与联邦学习。作者:薄列峰 黄恒顾松庠陈彦卿等来源:大数据DT(ID:hzdashuju)分布式机器学习也称分布式学习,是指利用多个计算节点(也称工作节点,Worker)进行... 查看详情

大数据处理为何选择spark?

...的计算引擎。2、HadoopHadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop的框架最核心的设计就是:HDFS和MapRedu... 查看详情

机器学习,流式iot和医疗设备互联

...据,实时流式数据分析(streaminganalytics),机器学习以及分布式计算的组合相比之前有了长足的进步,同时成本也比以前要低,这使得我们可以更快地完成更多数据的存储及分析。这里列举一些IoT,大数据以及机器学习协同完 查看详情

基于机器学习的物联网安全技术:物联网设备如何使用人工智能来增强安全性?

...隐私并解决安全问题,如欺骗攻击、入侵、DoS攻击、分布式DoS(DDoS)攻击、干扰、窃听和恶意软件等。例如,收集用户健康数据并将其发送到连接的智能手机的可穿戴设备必须避免隐私信息泄露。对于计算、内存、无线电... 查看详情

scala机器学习库

...进行判断。数据分析/数据可视化MLlibinApacheSpark—Spark下的分布式机器学习库Scalding—CAscading的Scala接口Summin 查看详情

当ai遇上k8s:使用rancher安装机器学习必备工具jupyterhub(代码片段)

...和机器学习都是计算量巨大的工作负载,它们需要一流的分布式计算环境才能够蓬勃发展。因此,AI和ML为Kubernetes提供了一个完美的用例,他们能够最大化展现Kubernetes可以运行大量工作负载的特点。 什么是JupyterHub? Jupyt... 查看详情

利用pandas_udf加速机器学习任务(代码片段)

...量化是在不同partition上处理@pandas_udf使用pandaAPI来处理分布式数据集,而toPandas()将分布式数据集转换为本地数据,然后使用pandas进行处理,如果Pyspark的dataframe非常大,直接使用toPandas()很容易导致OOM。文章目录no... 查看详情

分布式机器学习的集群方案介绍之hpc实现

机器学习的基本概念机器学习方法是计算机利用已有的数据(经验),得出了某种模型(迟到的规律),并利用此模型预测未来(是否迟到)的一种方法。目前机器学习广泛应用于广告投放、趋势预测、图像识别、语音识别、自动驾... 查看详情

机器学习服务文本翻译能力升级,中文直译模型让译文表达更地道!

HMSCore机器学习服务文本翻译能力提供多种语言和多种应用场景的翻译服务,比如,在出国旅游的场景中,用户可以借助应用的语音翻译播报功能在打车、酒店入住等场景中无障碍沟通,也可以通过拍照翻译功能读... 查看详情

无监督学习高斯混合模型

高斯混合模型本博客根据百面机器学习,算法工程师带你去面试一书总结归纳,公式图片均出自该书.本博客仅为个人总结学习,非商业用途,侵删.网址http://www.ptpress.com.cn高斯混合模型(GaussianMixedModel,GMM)是一种常见的聚类算... 查看详情

java应用xiii使用apachesparkmllib构建机器学习模型上

...y)是一个开源机器学习框架,建立在ApacheSpark之上,支持分布式计算和大规模数据处理。它提供了许多经典机器学习算法和工具,如分类、回归、聚类、协同过滤、特征提取和数据预处理等。SparkMLlib使用基于DataFrame的API,提供... 查看详情

hadoop学习

...     Hadoop是一个由Apache基金会所开发的分布式系统基础架构.用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop的框架最核心的设计就是:HDFS和MapRedu... 查看详情