成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

有了K均值聚類,為什么還需要DBSCAN聚類算法?

人工智能 機器學習 算法
聚類分析是一種無監(jiān)督學習法,它將數據點分離成若干個特定的群或組,使得在某種意義上同一組中的數據點具有相似的性質,不同組中的數據點具有不同的性質。

 

聚類本文轉載自公眾號“讀芯術”(ID:AI_Discovery)分析是一種無監(jiān)督學習法,它將數據點分離成若干個特定的群或組,使得在某種意義上同一組中的數據點具有相似的性質,不同組中的數據點具有不同的性質。

聚類分析包括基于不同距離度量的多種不同方法。例如。K均值(點之間的距離)、Affinity propagation(圖之間的距離)、均值漂移(點之間的距離)、DBSCAN(最近點之間的距離)、高斯混合(到中心的馬氏距離)、譜聚類(圖之間距離)等。

有了K均值聚類,為什么還需要DBSCAN聚類算法?

2014年,DBSCAN算法在領先的數據挖掘會議ACM SIGKDD上獲得the testof time獎(授予在理論和實踐中受到廣泛關注的算法)。

所有聚類法都使用相同的方法,即首先計算相似度,然后使用相似度將數據點聚類為組或群。本文將重點介紹具有噪聲的基于密度的聚類方法(DBSCAN)。

既然已經有了K均值聚類,為什么還需要DBSCAN這樣的基于密度的聚類算法呢?

K均值聚類可以將松散相關的觀測聚類在一起。每一個觀測最終都成為某個聚類的一部分,即使這些觀測在向量空間中分散得很遠。由于聚類依賴于聚類元素的均值,因此每個數據點在形成聚類中都起著作用。

數據點的輕微變化可能會影響聚類結果。由于聚類的形成方式,這個問題在DBSCAN中大大減少。這通常不是什么大問題,除非遇到一些具有古怪形狀的數據。

使用K均值的另一個困難是需要指定聚類的數量(“k”)以便使用。很多時候不會預先知道什么是合理的k值。

DBSCAN的優(yōu)點在于,不必指定使用它的聚類數量。需要的只是一個計算值之間距離的函數,以及一些將某些距離界定為“接近”的指令。在各種不同的分布中,DBSCAN也比K均值產生更合理的結果。下圖說明了這一事實:

 

有了K均值聚類,為什么還需要DBSCAN聚類算法?

 

基于密度的聚類算法

基于密度的聚類是無監(jiān)督學習法,基于數據空間中的聚類是高點密度的連續(xù)區(qū)域,通過低點密度的連續(xù)區(qū)域與其他此類聚類分離,來識別數據中獨特的組/聚類。

具有噪聲的基于密度的聚類方法(DBSCAN)是基于密度聚類的一種基本算法。它可以從大量的數據中發(fā)現(xiàn)不同形狀和大小的聚類,這些聚類中正包含著噪聲和異常值。

DBSCAN算法使用以下兩種參數:

  • eps (ε):一種距離度量,用于定位任何點的鄰域內的點。
  • minPts:聚類在一起的點的最小數目(一個閾值),使一個區(qū)域界定為密集。

如果探究兩個稱為密度可達性(DensityReachability)和密度連接性(DensityConnectivity)的概念,就可以理解這些參數。

密度方面的可達性(Reachability)建立了一個可以到達另一個點的點,如果該點位于與另一個點的特定距離(eps)內。

連接性(Connectivity)涉及到基于傳遞性的鏈接方法,以確定點是否位于特定的聚類中。例如,如果p->r->s->t->q,則p和q可以連接,其中a->b表示b在a的鄰域內。

DBSCAN聚類完成后會產生三種類型的點:

有了K均值聚類,為什么還需要DBSCAN聚類算法?
  • 核心點(Core)——該點表示至少有m個點在距離n的范圍內。
  • 邊界點(Border) ——該點表示在距離n處至少有一個核心。
  • 噪聲點(Noise) ——它既不是核心點也不是邊界點。并且它在距離自身n的范圍內有不到m個點。

DBSCAN聚類算法步驟

  • 算法通過任意選取數據集中的一個點(直到所有的點都訪問到)來運行。
  • 如果在該點的“ε”半徑范圍內至少存在“minPoint”點,那么認為所有這些點都屬于同一個聚類。
  • 通過遞歸地重復對每個相鄰點的鄰域計算來擴展聚類

參數估計

每個數據挖掘任務都存在參數問題。每個參數都以特定的方式影響算法。DBSCAN需要參數ε和minPts。

  • ε:可以使用k距離圖來選擇ε的值,表示到k=minPts-1最近鄰的距離,從最大值到最小值排序。當此圖顯示“elbow”時,ε值較好:如果ε選擇得太小,則很大一部分數據將無法聚類;如果ε值太高,聚類將合并,同時大多數對象將位于同一聚類中。一般來說,較小的ε值是可取的,根據經驗,只有一小部分點應在此距離內。
  • 距離函數:距離函數的選擇與ε的選擇密切相關,對結果有重要影響。通常,在選擇參數ε之前,必須首先確定數據集的合理相似性度量。沒有對此參數的估計,但需要為數據集適當地選擇距離函數。
  • minPts:根據經驗,最小minPts可以從數據集中的維度數D導出,即minPts≥D+1。低值minPts=1是沒有意義的,因為此時每個點本身就已經是一個聚類了。當minPts≤2時,結果將與采用單鏈路度量的層次聚類相同,且樹狀圖在高度ε處切割。因此,必須至少選擇3個minPts。

然而,對于有噪聲的數據集,較大的值通常更好,并將產生更顯著的聚類。根據經驗,可以使用minPts=2·dim,但對于非常大的數據、噪聲數據或包含許多重復項的數據,可能需要選擇更大的值。

用sklearn實現(xiàn)DBSCAN python

首先用DBSCAN對球形數據進行聚類。

先生成750個帶有相應標簽的球形訓練數據點。然后對訓練數據的特征進行標準化,最后應用sklearn庫中的DBSCAN。

有了K均值聚類,為什么還需要DBSCAN聚類算法?

有了K均值聚類,為什么還需要DBSCAN聚類算法?

聚類球形數據中的DBSCAN

黑色數據點表示上述結果中的異常值。接下來,用DBSCAN對非球形數據進行聚類。

  1. import numpy as np 
  2.            importmatplotlib.pyplot as plt 
  3.            from sklearn import metrics 
  4.            fromsklearn.datasets import make_circles 
  5.            fromsklearn.preprocessing importStandardScaler 
  6.            from sklearn.clusterimportDBSCAN 
  7.            X, y =make_circles(n_samples=750factor=0.3, noise=0.1) 
  8.            X=StandardScaler().fit_transform(X) 
  9.            y_pred=DBSCAN(eps=0.3, min_samples=10).fit_predict(X) 
  10.            plt.scatter(X[:,0], X[:,1], c=y_pred
  11.            print('Number ofclusters: {}'.format(len(set(y_pred[np.where(y_pred !=-1)])))) 
  12.            print('Homogeneity:{}'.format(metrics.homogeneity_score(y, y_pred))) 
  13.            print('Completeness:{}'.format(metrics.completeness_score(y, y_pred))) 
  14.            print("V-measure:%0.3f"% metrics.v_measure_score(labels_true,labels)) 
  15.            print("Adjusted RandIndex: %0.3f" 
  16.                  % metrics.adjusted_rand_score(labels_true,labels)) 
  17.            print("AdjustedMutual Information: %0.3f" 
  18.                  % metrics.adjusted_mutual_info_score(labels_true,labels)) 
  19.            print("SilhouetteCoefficient: %0.3f" 
  20.                  % metrics.silhouette_score(X, labels)) 

有了K均值聚類,為什么還需要DBSCAN聚類算法?

有了K均值聚類,為什么還需要DBSCAN聚類算法?

聚類非球形數據中的DBSCAN

這絕對是完美的。如果與K均值進行比較,會給出一個完全不正確的輸出,如:

有了K均值聚類,為什么還需要DBSCAN聚類算法?

K-均值聚類結果

DBSCAN聚類算法的復雜性

  • 平均情況:與最佳/最壞情況相同,取決于數據和算法的實現(xiàn)。
  • 最佳情況:如果使用索引系統(tǒng)來存儲數據集,使得鄰域查詢在對數時間內執(zhí)行,可得到O(nlogn)的平均運行時復雜度。
  • 最壞情況:如果不使用索引結構或對退化數據(例如,所有距離小于ε的點),最壞情況下的運行時間復雜度仍為O(n²)。

基于密度的聚類算法可以學習任意形狀的聚類,而水平集樹算法可以在密度差異很大的數據集中學習聚類。

 

[[325992]]

 

 

圖源:unsplash

 

但需要指出的是,這些算法與參數聚類算法(如K均值)相比,調整起來有些困難。與K均值的聚類參數相比,DBSCAN或水平集樹的epsilon參數在推理時不那么直觀,因此為這些算法選擇較好的初始參數值更加困難。

 

責任編輯:趙寧寧 來源: 讀芯術
相關推薦

2020-07-09 15:26:18

Python聚類算法語言

2025-05-22 10:06:49

2023-09-12 14:02:30

數組vector

2023-10-24 15:15:26

HTTPWebSocket

2021-10-12 18:48:07

HTTP 協(xié)議Websocket網絡通信

2018-05-28 15:33:09

無監(jiān)督學習算法Python

2025-01-07 14:36:12

2024-02-22 10:34:00

NULLC++nullptr

2024-02-18 12:39:15

C++autodecltype

2020-12-29 06:45:30

Python機器學習K均值聚類

2025-04-09 11:15:00

服務熔斷服務降分布式系統(tǒng)

2024-11-26 07:37:22

2016-01-28 10:04:09

Jenkins運維持續(xù)交付

2023-01-31 17:24:21

DPUCPUGPU

2017-05-15 11:10:10

大數據聚類算法

2023-10-31 09:00:00

2024-10-18 17:14:13

2017-11-13 12:53:14

時間序列數據數據k-均值

2023-09-14 16:02:27

2023-04-07 15:30:24

操作系統(tǒng)ChatGPT
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费黄篇| avhd101在线成人播放 | 天天干天天想 | 中国大陆高清aⅴ毛片 | 99色视频| 日韩久久久一区二区 | 伊人久久免费视频 | 青青草一区 | 国产情侣在线看 | 高清国产一区二区 | 欧美在线视频网站 | 日韩成人免费av | 国产一区二区三区视频在线观看 | 久久久九九九九 | 欧美xxxx黑人又粗又长 | 中文精品视频 | 婷婷色国产偷v国产偷v小说 | 天天射夜夜操 | 国产第二页 | 日韩电影中文字幕 | 91免费在线播放 | 日韩精品 电影一区 亚洲 | 成人不卡视频 | 久久久久久免费精品一区二区三区 | 亚洲精品9999久久久久 | 高清国产午夜精品久久久久久 | 欧美xxxx性xxxxx高清 | 四虎永久| 亚洲免费婷婷 | 久久综合狠狠综合久久综合88 | 9999在线视频 | 国产高清视频一区 | 国产一区在线免费观看视频 | www97影院| 日韩一区二区福利视频 | 成人免费视频网站在线观看 | 欧美成人影院 | 夜夜摸夜夜操 | 在线播放中文字幕 | 亚洲精品久久久久久国产精华液 | 爱爱综合网 |