KdTree密度的聚類演算法及優化

2022-01-16 14:51:39 字數 4236 閱讀 6900

參考部落格:

可以發現,密度可達是直接密度可達的傳遞閉包,並且這種關係是非對稱的。密度相連是對稱關係。dbscan目的是找到密度相連物件的最大集合。

eg:假設半徑ε=3,minpts=3,點p的e領域中有點, 點m的e領域中有點,點q的e領域中有點,點o的e領域中有點,點s的e領域中有點.

那麼核心物件有p,m,o,s(q不是核心物件,因為它對應的e領域中點數量等於2,小於minpts=3);

點m從點p直接密度可達,因為m在p的e領域內,並且p為核心物件;

點q從點p密度可達,因為點q從點m直接密度可達,並且點m從點p直接密度可達;

點q到點s密度相連,因為點q從點p密度可達,並且s從點p密度可達。

1. 與k-means方法相比,dbscan不需要事先知道要形成的簇類的數量。

2. 與k-means方法相比,dbscan可以發現任意形狀的簇類。

3. 同時,dbscan能夠識別出雜訊點。對離群點有較好的魯棒性,甚至可以檢測離群點。

4.dbscan對於資料庫中樣本的順序不敏感,即pattern的輸入順序對結果的影響不大。但是,對於處於簇類之間邊界樣本,可能會根據哪個簇類優先被探測到而其歸屬有所擺動。

5.dbscan被設計與資料庫一同使用,可以加速區域的查詢。例如 使用r*樹

1. dbscan不能很好反映高維資料。

2. dbscan不能很好反映資料集以變化的密度。

3.由於dbscan演算法直接對整個資料集進行操作,並且在聚類之前需要建立相應的r*樹,並繪製k-dist圖,因此演算法所需的記憶體空間和i/o消耗都相當可觀。在計算資源有限而資料量又非常龐大的情況下,dbscan演算法的效率將受到很大影響。(dbscan演算法將區域查詢得到的所有未被處理過的點都作為種子點,留待下一步擴充套件處理。對於大規模資料集中的較大類而言,這種策略會使種子點的數目不斷膨脹,演算法所需的記憶體空間也會快速增加。)

4.由於dbscan演算法使用了全域性性表徵密度的引數,因此當各個類的密度不均勻,或類間的距離相差很大時,聚類的質量較差。(當各個類的密度不均勻、或類間的距離相差很大時,如果根據密度較高的類選取較小的eps值,那麼密度相對較低的類中的物件eps 鄰域中的點數將小minpts,則這些點將會被錯當成邊界點,從而不被用於所在類的進一步擴充套件,因此導致密度較低的類被劃分成多個性質相似的類。與此相反,如果根據密度較低的類來選取較大的eps值,則會導致離得較近而密度較大的類被合併,而它們之間的差異被忽略。所以在上述情況下,很難選取乙個合適的全域性eps值來獲得比較準確的聚類結果。)

5.dbscan不是完全確定的,邊界點從不同的簇中獲得,可以使不同簇的一部分,取決於資料處理。

6.dbscan的質量取決於regionquery(p,eps)函式中距離的測量。最常用的距離度量是歐式距離,尤其是在高維資料中,由於所謂的維數災難,這種度量基本上是無用的,很難為e找到乙個恰當的值。雖然目前有一些基於歐式距離的演算法,但是如果不能對資料和規模有很好的了解,也很難找乙個有意義的距離閾值e。

7.當密度差異大時,由於選取的minpts-eps組合不能同時適合所有的簇,dbsacn不能很好的進行資料聚類。(缺點4)

8.輸入引數敏感,確定引數eps , minpts困難 ,若選取不當 ,將造成聚類質量下降。

9.由於經典的dbscan演算法中引數eps和minpts在聚類過程中是不變的,使得該演算法難以適應密度不均勻的資料集.

1. 對缺點3的改進:通過選用核心點鄰域中的部分點作為種子點來擴充套件類,從而大大減少區域查詢的次數,降低i/o開銷,實現快速聚類。

2.對缺點4的改進:為了解決上述問題,周水庚等人提出了pdbscan ( partitioning-based dbscan)演算法。該演算法基於資料分割槽技術來擴充套件dbscan演算法,它根據資料的分布特性,將整個資料空間劃分為多個較小的分割槽,然後分別對這些區域性分割槽進行聚類,最後將各個區域性的聚類結果進行合併。 pdbscan 的演算法思想是:首先,根據資料集在某一維或多個維上的分布特性,將整個資料空間劃分為若干個區域性區域,使得各區域性區域內的資料盡可能分布均勻;然後依次繪製各個區域性區域的k-dist圖,並依次得到各個區域的eps值,接著用 dbscan 演算法對各個區域性區域進行區域性聚類;最後,將各個區域性聚類的結果進行合併,從而完成整個資料集的聚類分析。由於每個區域性區域都使用各自的區域性eps值來進行聚類,因此有效緩解了因使用全域性eps值而導致的聚類質量惡化的問題。

3.缺點8改進:

dbscan 演算法的改進,輸入引數的處理:針對 dbscan演算法對輸入引數(聚類半徑eps , 聚類點數 minpts) 敏感問題 ,作如下處理。由於引數的設定通常是依賴經驗 , 當資料密度相差較大和類間距離分布不均勻時 ,很難選取乙個合適的 eps 值來進行聚類且得到比較準確的結果 . 因此 , 事先確定演算法的引數值大小是不可取的 ,應在聚類過程中根據聚類結果的好壞對引數進行適當的調整。比如選擇適當的評價函式作為評價聚類結果的尺度。反覆調整演算法的引數 ,重新聚類 ,直到聚類結果滿足要求。儘管dbscan演算法提供了利用繪製降序k-距離圖的視覺化方法來選擇eps ,選定的eps值已經比較接近「理想」值 ; 但常有微小差距 , 最終造成聚類結果的相差很大。可以考慮採用如下方法來加以改善 :

(1)可以對所有聚類物件按照從乙個簇到另乙個簇 ,按簇邊緣→簇核心→簇邊緣的順序排序。這樣,該物件序列就可以反映出資料空間基於密度的簇結構資訊。基於這些資訊可以容易地確定合適的eps值 ,並隨之發現各個簇。

(2)不對原始資料集進行聚類 ,而是通過從資料集合中抽取高密度點生成新的資料集合,並修改密度引數 ,反覆進行這一過程 , 直到生成的資料集合可以很容易地被聚類為止,然後以此結果為基礎,再將其它點逐層地吸附到各個類中。這樣,就避免了dbscan演算法中輸入引數對聚類結果的影響。

(3)採用核聚類的思想對樣本集進行非線性變換,使樣本集的分布盡可能地均勻,經過核函式的對映使原來沒有顯現的特徵突現出來,然後再用全域性參量eps ,從而能夠更好地聚類 , 得到較好的結果 .

(4)在絕大多數聚類結果不理想的情況下,是eps值選擇過小,導致本應為乙個簇的物件集合被分析成了多個子簇。被分開的子簇共享一些物件 ,可以認為子簇通過這些共享的物件相互連線。而dbscan演算法將子簇的連線資訊簡單地丟掉 。因此,可以通過記錄下所有的簇連線資訊,由使用者根據實際的聚類結果和簇連線資訊,將被錯誤分開的子簇合併。這樣可以提高聚類的效果,而輸入引數eps的變化對聚類結果的影響,就被最後的合併過程遮蔽掉。可以考慮以下兩種方式進行改進 :

1)並行化.

從dbscan演算法可以看出,全域性變數eps值影響了聚類質量,尤其是資料分布不均勻時.因此,考慮對資料進行劃分,每乙個劃分中的資料分布相對較均勻 ,根據每個劃分中資料的分布密集程度來選取eps值.這樣一方面降低了全域性變數eps值的影響,另一方面由於具有多個劃分 ,因此考慮並行處理 ,從而提高聚類效率 ,也降低了dbscan演算法對記憶體的較高要求

.2)增量式處理。

當資料增加或者刪除時 ,只考慮其增加或刪除的資料所影響到的那些類 . 這種方法在處理大資料集時非常有效 ,不需要重新對資料庫中的資料進行聚類 ,只需要對類進行漸進性地更新 , 修正和加強已發現的類 . 另外 ,由於高維資料的複雜性 , 使聚類分析的效率和實用性都很差。通過確定聚類空間中和聚類主題相關性較強的資料維,來降低聚類空間的維度。利用資料降維可以降低資料結構上的複雜性。目前,有多種降維技術均

可用於特徵空間的削減。在方法的選擇上應根據降維後,資訊丟失率在可接收範圍內 ,來選擇一種合適的降維方法。

4.對缺點9改進:

2.1 自適應選擇 eps 引數

對於不均勻資料分布,各個資料與周圍資料的相似程度不同,因此,針對每個點,將距離該點最近的多個點的距離平均值作為該點處的稠密程度的評判標準,即對任意一點p,根據距離矩陣,選取與p點最近的k個點,計算距離的平均值.此時,每個點都能夠得出乙個k最近點平均距離.

然後對所有點的一維k最近點平均距離資料進行dbscan聚類。再對聚類結果中每類 i找到其最大平均距離的點.最後將該點與它的第k點的距離作為該類的鄰域閾值epsi ,並將其儲存以備聚類.這種發現eps的方法主要考慮到對於不同密度的資料集,應根據各個資料的稠密程度,分別選取合適的閾值進行聚類.由於聚類中所採用的引數eps只能夠確定聚類結果中同一類資料中的密度差別,所以,引數選取所引起的誤差不會對聚類結果產生很大影響.

2.2 基於變引數的 dbscan 聚類

1)將2.1中得出的鄰域閾值epsi按照由小到大的順序排列,準備聚類;

2)選取最小的鄰域閾值,minpts可以不變,對資料進行dbscan聚類;

3)然後使用下乙個鄰域閾值和minpts作為引數,對標註為雜訊的資料再次進行 dbscan聚類;

4)不斷迴圈,直到所有鄰域閾值均使用完畢,聚類結束.

在多次聚類過程中,鄰域閾值要由小到大進行聚類.使用較小閾值進行聚類時,距離較大的類中的資料由於不滿足該閾值而不被處理到,所以較小的距離閾值只能處理密度較大的點,不會對小密度資料產生影響。

密度聚類演算法(二)

dbscan是一種著名的密度聚類演算法,基於一組鄰域引數 r,minpts 來刻畫樣 本的緊密程度。說的通俗點就是以某個樣本點為中心,以r為半徑進行畫圓,在圓內的範圍都是鄰域範圍。基本概念 1 r 鄰域。對任意xi屬於資料集d,其r鄰域包含樣本集d中與xi的距離不大於r的樣本,即n xi 其實就是畫...

密度聚類演算法DBScan

利用密度聚類dbscan對樣本進行分類。基本思路 1 讀取兩組不同資料訓練 2 分別對兩組資料進行聚類 3 將聚類結果視作乙個多維空間的點,計算其到原點的歐氏距離 4 根據ans1和ans2的歐氏距離找到合適的閾值 幾個必要概念 鄰域 對於樣本集中的xj,它的 鄰域為樣本集中與它距離小於 的樣本所構...

DBSCAN密度聚類演算法

dbscan是一種基於密度的聚類演算法,這類密度聚類演算法一般假定類別可以通過樣本分佈的緊密程度決定。同一類別的樣本,他們之間的緊密相連的,也就是說,在該類別任意樣本周圍不遠處一定有同類別的樣本存在。通過將緊密相連的樣本劃為一類,這樣就得到了乙個聚類類別。通過將所有各組緊密相連的樣本劃為各個不同的類...