如何用DBSCAN聚類模型做數(shù)據(jù)分析?

0 評論 6675 瀏覽 23 收藏 9 分鐘

編輯導(dǎo)語:DBSCAN算法是一種典型的基于密度的聚類方法,能夠?qū)⒕哂凶銐蚋呙芏鹊膮^(qū)域劃分為簇,并在具有噪聲的數(shù)據(jù)中發(fā)現(xiàn)任意形狀的簇;本文作者分享了關(guān)于如何用DBSCAN聚類模型做數(shù)據(jù)分析,我們一起來看一下。

DBSCAN屬于無監(jiān)督學(xué)習(xí)算法,無監(jiān)督算法的內(nèi)涵是觀察無標簽數(shù)據(jù)集自動發(fā)現(xiàn)隱藏結(jié)構(gòu)和層次,在無標簽數(shù)據(jù)中尋找隱藏規(guī)律。

聚類模型在數(shù)據(jù)分析當中的應(yīng)用:既可以作為一個單獨過程,用于尋找數(shù)據(jù)內(nèi)在規(guī)律,也可以作為分類等其他分析任務(wù)的前置探索。

上篇我們講了基于原型的k-means聚類算法,這篇我們來講通常情況下聚類效果表現(xiàn)更優(yōu)異的密度聚類DBSCAN。

一、什么是DBSCAN

DBSCAN是一種基于密度的考慮到噪音的空間聚類算法;簡單來講,給定一組點,DBSCAN將彼此距離(歐幾里得距離)很近的點聚成一類,同時它還將低密度區(qū)域中的點標記為異常值(outlier)。

要了解DBSCAN算法,我們先來熟悉一些關(guān)鍵概念:

  • 數(shù)據(jù)點密度:某數(shù)據(jù)點指定的半徑中點的數(shù)量即稱為密度;
  • 核心對象/核心點:如果指定半徑(ε)內(nèi)的數(shù)據(jù)點數(shù)量超過了規(guī)定的點數(shù)量(Minpts),那么該點即稱為核心點;
  • 邊界點:如果某點的半徑(ε)內(nèi)的點數(shù)量少于規(guī)定的點數(shù)量(Minpts),不能發(fā)展下線,但是卻在核心點的鄰域內(nèi),那么該點稱為邊界點;
  • 密度可達:若某點a在點b的鄰域內(nèi),則b是核心點a的直接密度可達,若點c又在點b的鄰域內(nèi),則點c是點a的間接密度可達,a和c密度相連(傳播過程);
  • 異常值/離群值:未在核心點鄰域內(nèi),從任何一個核心點出發(fā)都密度不可達,既不是核心點也不是邊界點的點稱為異常值點;

以下圖為例,將所有點基于半徑(ε)畫圈,指定數(shù)據(jù)點密度為3,我們發(fā)現(xiàn)下圖紅色點在指定半徑內(nèi)的密度均>3,故紅色點為核心點。

而B、C點在核心點鄰域內(nèi),但是其半徑內(nèi)的點只有2個,小于指定密度,故B、C為邊界點。

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

如何用DBSCAN聚類模型做數(shù)據(jù)分析?

二、DBSCAN算法實現(xiàn)原理

  • 算法根據(jù)指定的鄰域密度參數(shù) (ε , Minpts ) 找出所有點中的核心點,確定核心點集合為Ω;
  • 從Ω中,隨機選取一個核心點作為對象,找出所有由其密度可達的樣本生成聚類簇;
  • 重復(fù)過程2,在Ω中隨機選取未被聚簇過的剩余核心點,持續(xù)進行直到所有核心點密度可達的聚類完全被發(fā)現(xiàn);

如何用DBSCAN聚類模型做數(shù)據(jù)分析?

三、算法優(yōu)缺點

優(yōu)點:

  • 不需要預(yù)先指定聚類簇個數(shù);
  • 聚類的形狀和大小非常靈活;
  • 能夠識別和處理異常值(離群點);
  • 參數(shù)較少,只有2個;

缺點:

  • 不適用高維數(shù)據(jù);
  • 確定合理的參數(shù)較困難,且參數(shù)對結(jié)果影響較大;
  • Sklearn中運行效率較慢;
  • 難以尋找不同密度下的聚類;

算法針對數(shù)據(jù)點形狀和大小有靈活性,且可以識別處理異常值,聚類效果表現(xiàn)優(yōu)異,如下圖:

如何用DBSCAN聚類模型做數(shù)據(jù)分析?

四、DBSCAN數(shù)據(jù)分析實戰(zhàn)案例

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

如何用DBSCAN聚類模型做數(shù)據(jù)分析?

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

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

步驟:

如何用DBSCAN聚類模型做數(shù)據(jù)分析?

  • 數(shù)據(jù)準備:數(shù)據(jù)獲取、數(shù)據(jù)清洗、數(shù)據(jù)變換等步驟,重點是針對分析目的,進行特征選擇以及特征標準化;
  • 數(shù)據(jù)建模:使用DBSCAN算法進行數(shù)據(jù)建模;
  • 后續(xù)分析:聚類模型的特征描述分析,基于業(yè)務(wù)問題,進一步分析。

1)讀取數(shù)據(jù)

如何用DBSCAN聚類模型做數(shù)據(jù)分析?

2)特征選取

如何用DBSCAN聚類模型做數(shù)據(jù)分析?

如何用DBSCAN聚類模型做數(shù)據(jù)分析?

3)標準化

如何用DBSCAN聚類模型做數(shù)據(jù)分析?

4)建立DBSCAN模型并可視化

如何用DBSCAN聚類模型做數(shù)據(jù)分析?

如何用DBSCAN聚類模型做數(shù)據(jù)分析?

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

如何用DBSCAN聚類模型做數(shù)據(jù)分析?

6)根據(jù)描述分析,生成poi聚類結(jié)果畫像,利用聚類,對人群/商品/行為標簽進行精細劃分,作為進一步商業(yè)決策的基礎(chǔ)。

如何用DBSCAN聚類模型做數(shù)據(jù)分析?

以上DBSCAN聚類算法就講完了,關(guān)于算法的參數(shù)選擇通常是基于經(jīng)驗和對數(shù)據(jù)集的業(yè)務(wù)了解來確定,可以使用畫k距離圖的方式來找拐點然后通過觀測聚類表現(xiàn)來調(diào)優(yōu)。

 

作者:趙小洛,公眾號:趙小洛洛洛

本文由 @趙小洛 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!