1 什麼是OPTICS算法
在前面介紹的DBSCAN算法中,有兩個初始參數E(鄰域半徑)和minPts(E鄰域最小點數)需要用戶手動設置輸入,並且聚類的類簇結果對這兩個參數的取值非常敏感,不同的取值將產生不同的聚類結果,其實這也是大多數其他需要初始化參數聚類算法的弊端。
爲了克服DBSCAN算法這一缺點,提出了OPTICS算法(Ordering Points to identify the clustering structure)。OPTICS並不顯示的產生結果類簇,而是爲聚類分析生成一個增廣的簇排序(比如,以可達距離爲縱軸,樣本點輸出次序爲橫軸的座標圖),這個排序代表了各樣本點基於密度的聚類結構。它包含的信息等價於從一個廣泛的參數設置所獲得的基於密度的聚類,換句話說,從這個排序中可以得到基於任何參數E和minPts的DBSCAN算法的聚類結果。
2 OPTICS兩個概念
核心距離:
對象p的核心距離是指是p成爲核心對象的最小E’。如果p不是核心對象,那麼p的核心距離沒有任何意義。
可達距離:
對象q到對象p的可達距離是指p的核心距離和p與q之間歐幾里得距離之間的較大值。如果p不是核心對象,p和q之間的可達距離沒有意義。
例如:假設鄰域半徑E=2, minPts=3,存在點A(2,3),B(2,4),C(1,4),D(1,3),E(2,2),F(3,2)
點A爲核心對象,在A的E領域中有點{A,B,C,D,E,F},其中A的核心距離爲E’=1,因爲在點A的E’鄰域中有點{A,B,D,E}>3;
點F到核心對象點A的可達距離爲,因爲A到F的歐幾里得距離,大於點A的核心距離1.
3 算法描述
OPTICS算法額外存儲了每個對象的核心距離和可達距離。基於OPTICS產生的排序信息來提取類簇。
算法描述如下:
算法:OPTICS 輸入:樣本集D, 鄰域半徑E, 給定點在E領域內成爲核心對象的最小領域點數MinPts 輸出:具有可達距離信息的樣本點輸出排序 方法:1 創建兩個隊列,有序隊列和結果隊列。(有序隊列用來存儲核心對象及其該核心對 象的直接可達對象,並按可達距離升序排列;結果隊列用來存儲樣本點的輸出次 序); 2 如果所有樣本集D中所有點都處理完畢,則算法結束。否則,選擇一個未處理(即 不在結果隊列中)且爲核心對象的樣本點,找到其所有直接密度可達樣本點,如 過該樣本點不存在於結果隊列中,則將其放入有序隊列中,並按可達距離排序; 3 如果有序隊列爲空,則跳至步驟2,否則,從有序隊列中取出第一個樣本點(即可 達距離最小的樣本點)進行拓展,並將取出的樣本點保存至結果隊列中,如果它不 存在結果隊列當中的話。 3.1 判斷該拓展點是否是核心對象,如果不是,回到步驟3,否則找到該拓展點所 有的直接密度可達點; 3.2 判斷該直接密度可達樣本點是否已經存在結果隊列,是則不處理,否則下一 步; 3.2 如果有序隊列中已經存在該直接密度可達點,如果此時新的可達距離小於舊 的可達距離,則用新可達距離取代舊可達距離,有序隊列重新排序; 3.3 如果有序隊列中不存在該直接密度可達樣本點,則插入該點,並對有序隊列 重新排序; 4 算法結束,輸出結果隊列中的有序樣本點。 |
大家或許會很疑惑,這裏不也有輸入參數E和MinPts嗎?其實這裏的E和MinPts只是起到算法輔助作用,也就是說E和MinPts的細微變化並不會影響到樣本點的相對輸出順序,這對我們分析聚類結果是沒有任何影響。