K Means DBSCAN 聚類演算法

2021-09-12 02:30:26 字數 2525 閱讀 2405

問題:

什麼是聚類演算法,其難點在哪

有哪些是聚類演算法,其處理過程是什麼,優劣勢有哪些

評估聚類演算法的方法

聚類演算法,是無監督學習,也就是無標籤(label),是把相似的資料劃分在一起

聚類演算法的普遍難點在於:如何選擇合適的引數(調參),怎樣評估聚類效果是好的(評估)

聚類演算法中比較常用的有k-means 和dbscan

k-means : 以質心為中心,聚類成k個簇

需要設定的引數:k值

質心——對該簇所有點所有特徵取均值

怎麼找到點形成簇呢——距離度量:歐式距離或者(先標準化)余弦相似度(使用歐式距離的比較多)

k-means 就是找到離某個質心更近的那些點形成乙個簇

那麼我們希望的情況就是,聚完類後,每個點都能離所屬簇的質心距離最近(相比於其他簇的質心)

因此我們可以得到我們的優化目標,就是使該簇的所有點到該簇的質心的距離之和盡量小,那麼不斷優化,直到質心不再變時,總距離也就不變,此時我們得到最後的聚類。

那麼如何優化我們的質心呢?(也就是k-means的聚類過程)

首先,因為一開始沒有質心可以確定,那麼k個質心就會隨機取(最後要分為k個簇),

那麼質心就有初始化了,也就可以開始計算和比較各個點和各個質心之間的距離了,每個點找到離自己距離最近的質心,

那麼第一次聚類就完成了。

之後的優化:除了質心以外,再次計算每個簇中每個點的均值,得到新的質心,然後又重新計算計算和比較各個點和各個質心之間的距離(也就是重新進行聚類,分簇),每個點再次找到離自己距離最近的質心,那麼完成了新一次的聚類。

不斷重複上面的優化,直到質心基本不變了,那麼最後的聚類結果也就出來了。

動態分析**:

上面可以動態展示這個過程。

在k-means的聚類過程中,我們可以發現到,k-means會收一開始取得隨機質心的位置影響十分大,會影響最後的聚類結果。

同時也可以發現,k-means對於規則的資料集效果是不錯的,但是對於不規則的資料,例如笑臉資料和環狀資料,效果不好,或者說是沒有我們想要的聚類效果,難以發現不規則形狀的簇。這是k-means的劣勢。

還有的就是從資料方面,可以發現,k-means的複雜程度是會和資料量成線性關係,資料量大,複雜程度越大

那麼k-means也有其優勢:簡單、適用於常規資料集(也就是我們人能直接分開的)

dbscan,基於密度的帶有雜訊點資料的空間聚類

dbscan 其實就是「畫圓」

圓多大,圓裡怎麼樣

「誰」能畫,「誰」又不能

怎樣聚類成簇

dscan,需要設定引數有:圓的半徑r , 圓內至少多少個點(閾值):minpts

核心物件:以某個點為圓心,畫半徑為r的圓,如果圓內點數(不包括本身)超過閾值,那麼就是核心物件

邊界點:圓內點數(不包括本身)超過閾值,但在核心物件的領域內的點

離群點:圓不能圈到的點

dbscan聚類的過程就是

對於某個點來說,丈量乙個圓,如果圓能圈住了超過閾值的點,那麼就能「畫圓」把點圈住,而他就是核心物件

核心物件加進簇中,

然後看被圈住的點,同樣去看他是不是核心物件,如果不是核心物件,不能畫圓,那麼他們是邊界點

邊界點同樣能加進簇中。重複這個過程直到簇沒有新加點才去再建立乙個新的簇

而最後沒有在簇中,也不能被圈住的 點就是離群點

所以對於dbscan來說,聚類就是把核心物件和其領域裡的點都包括起來

那麼我們如何知道有合適的r和minpts呢

我們需要借助k-距離

k-距離的意思是某個點到所有點,除自己以外,距離第k近的距離,

而每個點都計算k-距離,也就是每個點都有到所有點,距離第k近的距離,把所有的距離由小到大進行排序

那麼我們就能得到乙個集合,放的都是距離

我們去觀察距離,找到突變的點

例如 排序如 0.1 0.11 0.12 0.3 0.32 0.32 。。。

這樣類似的,那麼可以確定到0.3那發生了突變,而前面的三個值,我們可以拿來當r值,有三個點,即作為閾值

可以知道dbscan 的優勢是不用指定簇,但同樣的需要指定引數——半徑r和閾值minpts

同時,因為這是基於密度的聚類方法,可以很好地發現不規則形狀的簇,

而因為它能找到離群點,擅長離群點檢測(sklearn中離群點作為-1的簇)

但是也有其劣勢

處理高緯度的資料難,效率慢,也需要合適的引數

它需要進行比k-means進行更多的處理

對此我們可以進行降維,和資料削減

dbscan 動態處理展示:

最後我們需要對聚類進行評估,聚類的效果怎麼樣——輪廓係數 silhoutte coefficient

s(i)=b(i)-a(i) / max

a(i):樣本i到同樣簇的其他樣本的平均距離

b(i):樣本i到其他簇cj的其他樣本的平均距離

a(i)越小,說明其越該被聚類到該簇

可以知道

s(i)接近1,則樣本i聚類合理,-1就是該分到別的簇,0就是意味著樣本在兩簇的邊界上

對於聚類演算法,大多流程如下:

聚類——視覺化展示——評估——重新選取更合適引數

強算KMeans聚類演算法演示器

這些天做c 實驗以及這個kmeans演算法演示器,學了一下opengl,感覺有待加強。point 結構體定義及實現 結構體重載了2個運算子 1.推斷兩個point的座標值是否相等 2.用於顯示 以友元函式的方式過載 ifndef point h define point h include incl...

6 什麼是K 均值聚類 K Means 算

傳統的聚類分析計算方法主要有如下幾種 劃分方法 層次方法 基於密度的方法 基於網格的方法 基於模型的方法等。其中k means演算法是劃分方法中的乙個經典的演算法。類 指的是具有相似性的集合,聚類是指將資料集劃分為若干類,使得各個類之內的資料最為相似,而各個類之間的資料相似度差別盡可能的大。對資料集...

聚類之層次聚類 基於劃分的聚類(

目錄 一層次聚類 層次聚類的原理及分類 層次聚類的流程 層次聚類的優缺點 二劃分聚類法k means kmeans演算法的原理 k均值的優缺點及分類 k means與dbscan的區別 k means注意問題 三基於密度的聚類 dbscan的概念 簇的生成原理及過程 根據資料點的密度分為三類點 db...