如何用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經典比賽方案)