如何用DBSCAN聚類模型做數據分析?

語言: CN / TW / HK

DBSCAN屬於無監督學習算法,無監督算法的內涵是觀察無標籤數據集自動發現隱藏結構和層次,在無標籤數據中尋找隱藏規律。

聚類模型在數據分析當中的應用: 既可以作為一個單獨過程,用於尋找數據內在規律,也可以作為分類等其他分析任務的前置探索

上篇我們講了基於原型的k-means聚類算法,這篇我們來講通常情況下聚類效果表現更優異的密度聚類DBSCAN。

什麼是DBSCAN

DBSCAN是一種基於密度的考慮到噪音的空間聚類算法。簡單來講,給定一組點,DBSCAN將彼此距離(歐幾里得距離)很近的點聚成一類,同時它還將低密度區域中的點標記為異常值(outlier)。要了解DBSCAN算法,我們先來熟悉一些關鍵概念:

  • 數據點密度: 某數據點指定的半徑中點的數量即稱為密度;

  • 核心對象/核心點: 如果指定半徑(ε)內的數據點數量超過了規定的點數量(Minpts),那麼該點即稱為核心點;

  • 邊界點: 如果某點的半徑 (ε) 內的點數量少於規定的點數量(Minpts),不能發展下線,但是卻在核心點的鄰域內,那麼該點稱為邊界點;

  • 密度可達: 若某點a在點b的鄰域內,則b是核心點a的直接密度可達,若點c又在點b的鄰域內,則點c是點a的間接密度可達,a和c密度相連 (傳播過程);

  • 異常值/離羣值: 未在核心點鄰域內,從任何一個核心點出發都密度不可達,既不是核心點也不是邊界點的點稱為異常值點;

以下圖為例,將所有點基於半徑 (ε) 畫圈,指定數據點密度為3,我們發現下圖紅色點在指定半徑內的密度均>3,故紅色點為核心點;

而B、C點在核心點鄰域內,但是其半徑內的點只有2個,小於指定密度,故B、C為邊界點;

N點未在核心點鄰域內,且從任何一個核心點出發都密度不可達,故N為異常值點;以上點A與B、A與C均密度相連;

DBSCAN 算法實現原理

  • 算法根據指定的鄰域密度參數 (  ε , Minpts ) 找出所有點中的核心點,確定核心點集合為Ω;

  • 從Ω中,隨機選取一個核心點作為對象,找出所有由其密度可達的樣本生成聚類簇;

  • 重複過程2,在Ω中隨機選取未被聚簇過的剩餘核心點,持續進行直到所有核心點密度可達的聚類完全被發現;

算法優缺點

優點

  • 不需要預先指定聚類簇個數

  • 聚類的形狀和大小非常靈活

  • 能夠識別和處理異常值(離羣點)

  • 參數較少,只有2個

缺點

  • 不適用高維數據

  • 確定合理的參數較困難,且參數對結果影響較大

  • Sklearn中運行效率較慢

  • 難以尋找不同密度下的聚類

算法針對數據點形狀和大小有靈活性,且可以識別處理異常值,聚類效果表現優異,如下圖:

DBSCAN數 據分析實戰案例

案例背景:O2O平台為了更好地為線下店面服務,增加一個增值服務,即利用自己擁有的地理位置數據為線下店面選址,數據如下:

每一條數據是一個興趣點(POI - Point of Interest)的特徵,具體指的是以這個位置為中心的500米半徑圓裏,各類商家/設施的數量,數據中我們隱藏掉了每個POI的具體名稱、座標、類型。選址的商家將試圖從這些位置中選擇一個作為下一個店面的位置。

 

商家想知道這40個潛在店面位置之間是否有顯著的差異。我們可以將所有POI按照相似程度,劃分成幾個類別?

步驟:

數據準備:數據獲取、數據清洗、數據變換等步驟,重點是針對分析目的,進行特徵選擇以及特徵標準化;

數據建模:使用DBSCAN算法進行數據建模;

後續分析:聚類模型的特徵描述分析,基於業務問題,進一步分析;

1、讀取數據

2、特徵選取

3、標準化

4、建立DBSCAN模型並可視化

5、聚類分析,對每一聚類進行進一步分析和描述

6、根據描述分析,生成poi聚類結果畫像,利用聚類,對人羣/商品/行為標籤進行精細劃分,作為進一步商業決策的基礎;

以上DBSCAN聚類算法就講完了,關於算法的參數選擇通常是基於經驗和對數據集的業務瞭解來確定,可以使用畫k距離圖的方式來找拐點然後通過觀測聚類表現來調優。

推薦閲讀

收藏!14 種異常檢測方法總結

2021科大訊飛-車輛貸款違約預測賽事 Top1方案(Python代碼)

10 種聚類算法的完整 Python 操作示例

為什麼迴歸問題用MSE?

時序特徵相關係數的穩定性分析(附代碼)

時間序列預測方法彙總:從理論到實踐(附Kaggle經典比賽方案)