OPTICS聚類演算法原理

TTT周清風發表於2020-05-14

OPTICS聚類演算法原理

基礎

OPTICS聚類演算法是基於密度的聚類演算法,全稱是Ordering points to identify the clustering structure,目標是將空間中的資料按照密度分佈進行聚類,其思想和DBSCAN非常類似,但是和DBSCAN不同的是,OPTICS演算法可以獲得不同密度的聚類,直接說就是經過OPTICS演算法的處理,理論上可以獲得任意密度的聚類。因為OPTICS演算法輸出的是樣本的一個有序佇列,從這個佇列裡面可以獲得任意密度的聚類。

定義

OPTICS演算法的基礎有兩點,

  • 引數(半徑,最少點數):

一個是輸入的引數,包括:半徑 ε ,和最少點數 MinPts 。

  • 定義(核心點,核心距離,可達距離,直接密度可達):

另一個是相關概念的定義:
核心點的定義,如果一個點的半徑內包含點的數量不少於最少點數,則該點為核心點,數學描述即

Nε(P)>=MinPts

在這個基礎上可以引出核心距離的定義,即對於核心點,距離其第 MinPtsth 近的點與之的距離

 

coreDist(P)={UNDIFED, MinPtsth Distance in N(P),if N(P)<=MinPtselse

可達距離,對於核心點P,O到P的可達距離定義為O到P的距離或者P的核心距離,即公式

 

reachDist(O,P)={UNDIFED, max(coreDist(P), dist(O,P)),if N(P)<=MinPtselse

O到P直接密度可達,即P為核心點,且P到O的距離小於半徑。

演算法

OPTICS演算法的難點在於維護核心點的直接可達點的有序列表。演算法的計算過程如下:

  • 輸入:資料樣本D,初始化所有點的可達距離和核心距離為MAX,半徑 ε ,和最少點數 MinPts 。

  • 1、建立兩個佇列,有序佇列(核心點及該核心點的直接密度可達點),結果佇列(儲存樣本輸出及處理次序)

  • 2、如果D中資料全部處理完,則演算法結束,否則從D中選擇一個未處理且未核心物件的點,將該核心點放入結果佇列,該核心點的直接密度可達點放入有序佇列,直接密度可達點並按可達距離升序排列;
  • 3、如果有序序列為空,則回到步驟2,否則從有序佇列中取出第一個點;
  • 3.1 判斷該點是否為核心點,不是則回到步驟3,是的話則將該點存入結果佇列,如果該點不在結果佇列;
  • 3.2 該點是核心點的話,找到其所有直接密度可達點,並將這些點放入有序佇列,且將有序佇列中的點按照可達距離重新排序,如果該點已經在有序佇列中且新的可達距離較小,則更新該點的可達距離。
  • 3.3 重複步驟3,直至有序佇列為空。
  • 4、演算法結束。

輸出結果

給定半徑 ε ,和最少點數 MinPts ,就可以輸出所有的聚類。

計算過程為:

給定結果佇列

    • 1、從結果佇列中按順序取出點,如果該點的可達距離不大於給定半徑 ε ,則該點屬於當前類別,否則至步驟2;
    • 2、如果該點的核心距離大於給定半徑 ε ,則該點為噪聲,可以忽略,否則該點屬於新的聚類,跳至步驟1;
    • 3、結果佇列遍歷結束,則演算法結束。

轉載自:http://ddrv.cn/a/66368?unapproved=169375&moderation-hash=d65a76d583bc337cf8ee514ce3049cf6#comment-169375

相關文章