如何用DBSCAN聚類模型做資料分析?

2021-10-14 10:46:00 字數 2041 閱讀 3417

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

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

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

什麼是dbscan

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

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

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

n點未在核心點鄰域內,且從任何乙個核心點出發都密度不可達,故n為異常值點;以上點a與b、a與c均密度相連;

演算法優缺點

優點缺點

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

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

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

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

步驟:

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

資料建模:使用dbscan演算法進行資料建模;

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

1、讀取資料

2、特徵選取

3、標準化

4、建立dbscan模型並視覺化

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

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

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

用matlab做高斯混合模型 GMM 聚類分析

訓練gmm引數 options statset maxiter 1000 gmm gmdistribution.fit feature,k,covtype diagonal regularize 1e 10,options options k 聚類的總類別數 covtype 設定協方差矩陣的型別 r...

資料探勘實驗(八) DBSCAN聚類 R語言

了解dbscan演算法基本原理 編寫 並實現dbscan演算法對資料的聚簇 採用的資料集 r語言factoextra包裡的multishapes資料集 函式首先確定兩個引數 1 epsilon 在乙個點周圍鄰近區域的半徑 2 minpts 鄰近區域內至少包含點的個數 根據以上兩個引數,可以把樣本中的...

如何用python實現聚類離散化

起始聚類離散化就是根據利用一定規則對資料進行分類,可以用分桶式或者k means 等方法 這裡用中醫證型關聯規則挖掘裡面的離散化舉例,k means 舉例 首先看下圖的原資料,該病存在六種證型係數,為了後續的關聯演算法,需要先將其離散化。import pandas as pd from sklear...