日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2025/5/22 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Spark和DBSCAN对地理定位数据进行聚类 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.



機(jī)器學(xué)習(xí),特別是聚類算法,可以用來確定哪些地理區(qū)域經(jīng)常被一個用戶訪問和簽到而哪些區(qū)域不是。這樣的地理分析使多種服務(wù)成為可能,比如基于地理位置的推薦系統(tǒng),先進(jìn)的安全系統(tǒng),或更通常來說,提供更個性化的用戶體驗(yàn)。

在這篇文章中,我會確定對每個人來說特定的地理活動區(qū)域,討論如何從大量的定位事件中(比如在餐廳或咖啡館的簽到)獲取用戶的活動區(qū)域來構(gòu)建基于位置的服務(wù)。舉例來說,這種系統(tǒng)可以識別一個用戶經(jīng)常外出吃晚飯的區(qū)域。

使用DBSCAN聚類算法

首先,我們需要選擇一種適用于定位數(shù)據(jù)的聚類算法,可以基于提供的數(shù)據(jù)點(diǎn)的局部密度確定用戶的活動區(qū)域。DBSCAN算法是一個不錯的選擇,因?yàn)樗韵露系剡x擇一個點(diǎn)并在一個給定的距離尋找更多的點(diǎn)。然后通過重復(fù)這個過程擴(kuò)展尋找新的點(diǎn)來擴(kuò)展類簇,直到無法再擴(kuò)大為止。

這個算法可以通過兩個參數(shù)進(jìn)行調(diào)試: ε,用來確定離給定的點(diǎn)多遠(yuǎn)來搜索;和minPoints,即為了類簇?cái)U(kuò)展,決定一個給定的點(diǎn)的鄰域附近最少有多少點(diǎn)。通過尋找鄰近點(diǎn),本地類簇開始出現(xiàn),各種形狀的類簇逐漸可以被識別(請參見圖1的簡化描述)。過于孤立的點(diǎn)和離其他點(diǎn)太遠(yuǎn)的點(diǎn)則會被分配到一個特殊的異常值集群。這些獨(dú)特的屬性使DBSCAN算法適合對地理定位事件進(jìn)行聚類。

圖1:兩由DBSCAN算法(ε= 0.5和minPoints = 5)聚類得出的兩個類簇。一個是L型,另一個是圓形。互相靠近的點(diǎn)被分配到相同的類簇。黑色的孤立點(diǎn)被視為“異常點(diǎn)”。圖片來自Natalino Busa。

在Spark里使用PairRDDs

在大多數(shù)實(shí)際應(yīng)用中,機(jī)器學(xué)習(xí)系統(tǒng)必須處理數(shù)以百萬計(jì)的用戶和數(shù)十億的事件。因此,隨著越來越多的用戶和事件被添加到系統(tǒng)中,一個精心設(shè)計(jì)的數(shù)據(jù)處理通道需要具備快速和可伸縮的特點(diǎn)。這就需要分布式計(jì)算。就我們的目標(biāo)而言,Spark作為一個分布式處理引擎,是一個很好的選擇,因?yàn)樗峁┝四軌蛟诙鄼C(jī)器上并行執(zhí)行許多基于地理定位的聚類任務(wù)的計(jì)算框架。

在Spark里,用戶地理定位數(shù)據(jù)可以使用稱為PairRDD的對象來建模。PairRDD是一個分布式的元組集合(鍵,值),根據(jù)關(guān)鍵字段被劃分到多個機(jī)器。特別是對于地理定位數(shù)據(jù),我們選擇的鍵是用戶標(biāo)識符,值是給定用戶的所有簽到的聚合列表。

地理定位數(shù)據(jù)放置在一個n×2的矩陣中,其中第一列表示經(jīng)度,第二列表示緯度。參見下面的例子,這是Spark數(shù)據(jù)類型中的PairRDD集合,以及元祖的一個例子:

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中并發(fā)運(yùn)行

DBSCAN算法在多種語言和包里都有實(shí)現(xiàn)。下面的代碼片段是基于DBSCAN 在GitHub上的scala?nlp /nak庫中的實(shí)現(xiàn)。

假設(shè)給定用戶經(jīng)常訪問城市的三個區(qū)域,一個區(qū)域是經(jīng)常參加酒宴和聚會的,另一個是經(jīng)常來舒適放松的,還有一個是和朋友一起吃晚餐的。如果這些區(qū)域位于城市的不同部分,下面的代碼通過查看每個事件的位置將其分到不同類簇。在這段代碼中,我們尋找距離約100米的范圍內(nèi)的事件(約0.001度),如果至少有三個點(diǎn)互相接近,我們便開始進(jìn)行聚類。

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功能的一部分已經(jīng)可以使用了,它叫做mapValues:

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

簡而言之,定位數(shù)據(jù)的聚類在Spark中可以這樣實(shí)現(xiàn),將位置的原始PairRDD轉(zhuǎn)換到一個新的PairRDD,其中元組的鍵值分別代表用戶的ID,和其對應(yīng)的定位類簇。一旦定位數(shù)據(jù)被聚類完畢,它可以進(jìn)一步概括總結(jié),比如確定每個類簇的邊界框或輪廓

圖2顯示了從一個使用Gowalla(用戶在特定地點(diǎn)簽到分享他們的位置的社交網(wǎng)站)的匿名用戶的定位數(shù)據(jù)中提取的一個示例類簇。圖中是佛羅里達(dá)地圖,特別是開普科勒爾地區(qū),簽到的地方會有一個帶顏色的點(diǎn)。

事件根據(jù)其發(fā)生的地理位置被聚類。例如在Estero Bay?(暗橙色圓點(diǎn))漫步、在機(jī)場的聚集活動(棕色點(diǎn))和森尼貝爾島的聚集活動(綠點(diǎn))屬于不同的聚類(ε設(shè)定為3公里,minPoints設(shè)置為3)。

圖2:從用戶的佛羅里達(dá)開普科勒爾區(qū)域的Gowalla數(shù)據(jù)集中提取聚類的例子。注意點(diǎn)集合的密度與聚類正確匹配,異常值標(biāo)記為孤立的黑點(diǎn)。圖片來自Natalino Busa。地圖重疊:OpenStreet地圖。

進(jìn)一步增強(qiáng)地理定位數(shù)據(jù)分析

這一分析是圍繞地理坐標(biāo)進(jìn)行的,但可以很容易地?cái)U(kuò)展到其他事件屬性上,如簽到時間、場地類型(餐廳、體育館、博物館)或用戶的狀態(tài)。聚類算法還可以將用戶社交網(wǎng)絡(luò)中朋友所生成的事件考慮進(jìn)來,從而得以應(yīng)用于一個更大的上下文。

Spark為SQL數(shù)據(jù)處理提供了一個模塊,可用于在運(yùn)行聚類算法之前運(yùn)行查詢來過濾和收集事件。通過這種方式,數(shù)據(jù)處理通道可以在Spark上完整地實(shí)現(xiàn)SQL和機(jī)器學(xué)習(xí)的統(tǒng)一框架。這種擴(kuò)展的數(shù)據(jù)管道對特定類別的事件將提供更準(zhǔn)確的聚類結(jié)果。

創(chuàng)建一個基于位置的API 服務(wù)

Spark產(chǎn)生的聚類分析結(jié)果可以保存在一個數(shù)據(jù)存儲表中。一個API服務(wù)可以查詢該表,并確定一個新出現(xiàn)的地理位置點(diǎn)是否屬于已知的地區(qū)。API服務(wù)可以根據(jù)用戶場景觸發(fā)適當(dāng)?shù)男袨椤@?#xff0c;它可以通過消息向用戶告警、發(fā)送通知或提供推薦。

結(jié)論

我最初的實(shí)驗(yàn)表明Spark提供了堅(jiān)實(shí)的基礎(chǔ)設(shè)施在大量的用戶和事件上來并行處理和分發(fā)機(jī)器學(xué)習(xí)算法。此外,Spark通過在一個數(shù)據(jù)處理框架結(jié)合SQL查詢和機(jī)器學(xué)習(xí),加快了數(shù)據(jù)驅(qū)動系統(tǒng)的開發(fā)。

DBSCAN算法與Spark的結(jié)合似乎是一種很有前途的方法,可以抽取準(zhǔn)確的地理位置模式,并用于開發(fā)基于各種場景的數(shù)據(jù)驅(qū)動、基于位置的應(yīng)用程序,例如個性化營銷、欺詐防范和內(nèi)容過濾。

原文發(fā)布時間為:2017-01-21


本文來自云棲社區(qū)合作伙伴“大數(shù)據(jù)文摘”,了解相關(guān)信息可以關(guān)注“BigDataDigest”微信公眾號

總結(jié)

以上是生活随笔為你收集整理的用Spark和DBSCAN对地理定位数据进行聚类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲综合成人亚洲 | 性做久久久久久免费观看 | 国产成人精品免费网站 | 国产成人精品一区二区三区无码熬 | 无码人妻精品一区二区中文 | 久久人人爽人人爽人人片亚洲 | 91在线免费观看网站 | 中文字幕有码无码人妻av蜜桃 | www.香蕉视频在线观看 | 免费毛片软件 | 国产三级精品三级在线 | 精品人妻av在线 | 操她视频在线观看 | 午夜不卡av | 欧美性猛交69 | 欧美日韩在线免费观看视频 | 亚洲久久影院 | 久久国产精品综合 | 久久久久亚洲av片无码下载蜜桃 | 国产一区二区 | 91精品国产乱码久久久久久久久 | 国产传媒国产传媒 | 精品人妻无码一区二区性色 | 麻豆md0077饥渴少妇 | 少妇av一区二区三区无码 | 一区二区在线播放视频 | 浓精喷进老师黑色丝袜在线观看 | 精品深夜av无码一区二区老年 | 97福利视频 | 欧美一级日韩 | 久久久久久久久97 | 欧美夜夜骑 | 天天操天天舔 | 在线视频免费观看你懂的 | 蜜桃视频在线观看污 | 国产乱欲视频 | 99精品国产一区二区 | 色综合婷婷 | 日本体内she精高潮 男女视频在线免费观看 | 亚洲精品日韩在线 | 中文字幕首页 | 超碰97av在线 | 91av片| 亚洲欧美日韩激情 | 国产一二三在线 | 99久久国产综合 | 91黄漫| 久久精品66 | 免费视频二区 | 天天干天天操天天碰 | 日日撸夜夜操 | 免费性爱视频 | 日本91av | 69国产在线| 国产原创在线 | av性天堂网 | 91av视频在线观看 | 日韩经典中文字幕 | 国产乱码精品一区二区三区五月婷 | 国产女人水真多18毛片18精品 | 在线播放av网站 | 很黄很污的视频 | 色婷婷精品国产一区二区三区 | 亚洲免费中文字幕 | 午夜激情一区二区 | 91在线观看视频网站 | 青青青视频在线播放 | 性喷潮久久久久久久久 | 日韩av在线网| 99热这里只有精品5 国产精品伦子伦免费视频 精品一二三 | 日韩av一区在线播放 | 婷婷丁香色 | 中文字幕免费观看视频 | 青青草在线观看视频 | a级片日本 | 少妇太紧太爽又黄又硬又爽小说 | 黄色aaa毛片 | 亚洲欧美一区二区三区在线观看 | 亚洲黄色在线看 | 韩国精品一区二区 | 超碰97av在线 | 亚洲自拍偷拍综合 | 伊人免费在线观看高清版 | 国产人人射 | 91精品导航 | 天天色亚洲 | 欧美特级黄色大片 | 九九国产| 国产乱码精品一区二区三区精东 | 成人欧美在线视频 | 久久久久久久久久久久91 | 一区二区三区欧美精品 | 香蕉色网 | 香蕉视频免费在线观看 | 欧美vieox另类极品 | 欧美人妻一区二区三区 | 国产乱xxⅹxx国语对白 | 国产经典一区二区三区 | 午夜男人的天堂 |