極客星球|基於加權 DBSCAN 的工作地居住地計算方法

語言: CN / TW / HK

本文亮點

隨著智慧手機和資訊通訊技術的不斷髮展和普及,大規模的軌跡資料儲存已經比較普遍,成為挖掘使用者行為模式的重要來源,工作地和居住地是使用者行為模式的重要表現,可以用於輔助智慧城市的建設,比如優化通勤路線、產業佈局、分析人口流動情況等等,從而減少交通擁堵、提高市民生活便利性和滿意度等。但是現有的工作地居住地計算方法存在不同程度的問題,本文提出一種改進方案。

01 現有方法

目前的工作地居住地定位方法主要有兩種,一是基於規則,一是基於模型;

基於規則的方法是通過業務經驗設計邏輯,根據設定的統計指標選擇工作地居住地。

比如基於汽車的資料會基於使用者每天的起始點和終點,來統計頻次、時長等指標,選擇排名最高的作為工作地居住地;

基於基站的資料會統計使用者連線每個基站的時間,選擇工作時間連線時間最長且月度工作日連線次數/休息日連線次數最高的作為工作地;

基於模型的方法是通過聚類+有監督模型來定位工作地居住地,通過聚類來剔除噪聲點,然後通過規則來生成特徵,通過人工對工作地居住地進行標註,最後通過有監督模型來預測工作地和居住地。

02 現有方法侷限性

基於規則的方法侷限性比較大,不同行業都有自己的規則和特定結構的資料,不夠通用;且難以窮盡所有規則,對於異常情況的適應性不夠好,複雜且不夠精確;

基於模型的方法需要進行人工標註,成本較高且整個計算流程比較複雜;準確率對特徵的代表性和樣本覆蓋的廣度依賴較大;

現有方法計算出的工作地居住地經常不符合業務邏輯,如正常的工作地應該大部分分佈在寫字樓、工業園區等 poi,少部分分佈在餐廳、商場等其他各種型別的 poi;正常的居住地應該大部分分佈在小區、別墅、公寓等 poi,少部分分佈在其他各種型別的 poi;但是現有方法計算的結果受資料來源影響較大,並不能保證這一點,導致可能大量的工作地出現在小區裡,大量的居住地出現在寫字樓或商場裡等情況,導致業務不可用。

本文提出了一種更通用的計算方法,降低整個流程的複雜性並提高準確性;設計一種更貼近業務的計算方法,提高工作地居住地的可用性。

03 背景知識介紹

粗體
1、DBSCAN 聚類簡介:

首先設定一個閾值 a,對於樣本集中的每個點,以這個點為圓心,a 為半徑劃一個圓,被包含在這個圓中的點的個數記為 b(包括圓心);

然後再設定一個閾值 c,如果 b>=c,則把這個圓心叫做核心物件;

如果一個核心物件 A 被包含在另一個核心物件 B 的圓中,核心物件 B 被包含在另一個核心物件 C 的圓中,則稱 A 到 C 是密度可達的;

如果核心物件 X 到核心物件 Y 密度可達,核心物件 Z 也密度可達,則 Y 和 Z 密度相連,找到最大的密度相連的樣本集合,就是聚類的一個簇,如下圖所示:

其優點在於:

可以對任意形狀的稠密資料集進行聚類,適用於地理位置資料;相對的,K-Means 之類的聚類演算法一般只適用於凸資料集;

可以在聚類的同時發現異常點,對資料集中的異常點不敏感;

聚類結果沒有偏倚,相對的,K-Means 之類的聚類演算法,初始值對聚類結果有很大影響。

2、加權幾何平均數:

3、經緯度求中心點

Lat_i = lat_i * pi/180,i= 1,2,…,n

Lon_i = lon_i * pi/180,i= 1,2,…,n

xi = cos(Lat_i) * cos(Lon_i),i= 1,2,…,n

yi = cos(Lat_i) * sin(Lon_i) ,i= 1,2,…,n

zi = sin(Lat_i) ,i= 1,2,…,n

x = (x1 + x2 + ... + xn) / n

y = (y1 + y2 + ... + yn) / n

z = (z1 + z2 + ... + zn) / n

Lon = atan2(y, x)

Hyp = sqrt(x x + y y)

Lat = atan2(z, hyp)

lon_center = Lon * 180/pi

lat_center = Lat * 180/pi

04 具體方法

  1. 對使用者近 X 個月的軌跡資料做預處理,清洗掉其中的異常資料和節假日資料(大小長假,但不包括週末);
  1. 劃分工作時間和休息時間;
  1. 爬取 poi 資料資料,並對 poi 資料進行清洗;
  1. 判斷使用者的軌跡資料是否落在某類 poi 中:

有 poi 邊界的直接使用 poi 邊界判斷;

沒有 poi 邊界的,使用 poi 點經緯度所在 geohash8 及周圍一圈 geohash8 判斷(九宮格);

地鐵站以各出口經緯度點為中心點,生成邊長 100m 的正方形,即 poi 點的經緯度加減 0.0005 做判斷;

  1. 根據計算工作地還是計算居住地,給落在不同類別 poi 中的點以不同的權重;

比如計算工作地時,如果點落在寫字樓中,給一個較高的權重;

  1. 對於落入不同的時間段的軌跡點,同樣給不同的權重;

比如計算工作地時,工作時間會給一個比較高的權重;

  1. 根據 5、6 點中給出的權重,分別對每個使用者的工作時間和居住時間軌跡資料進行加權 DBSCAN 聚類,並調優引數;
  1. 計算每個簇內的工作/休息時間點數、工作/休息時間天數,

計算每個使用者的工作/休息時間總點數,

計算使用者的每個簇內工作/休息時間點數,佔該使用者工作/休息時間總點數比例,

計算使用者的每個簇內工作/休息時間天數,佔該使用者工作/休息時間總天數比例,

對總點數的比例和總天數的比例計算加權幾何平均數,得到每個簇的得分,工作時間得分第一的簇為工作地,休息時間得分第一的簇為居住地;

舉例:第一個例子最終選擇的 B 類,第二個例子是 C 類

  1. 對工作地簇和居住地簇根據公式分別計算其地理中心點,得到工作地居住地的最終位置;
  1. 根據工作地居住地簇中的活躍天數和點數,給出相應的工作地居住地置信度,活躍天數越多,置信度越高,點數越多,置信度越高;
  1. 因為即使採用了上述加權聚類的方法,也不能保證結果完全符合業務邏輯,所以給出工作地/居住地一定範圍內各類 poi 的型別及與工作地/居住地的距離,以便於業務方自己根據距離來對工作地/居住地進行篩選。

欲知更多精彩內容,關注官網~