聚類
K-means聚類
樣本集,聚類簇數k。
從D中隨機選擇k個樣本作為初始均值向量
令
for j =1,2,...m
計算樣本與各均值向量
的距離
距離最近的均值向量,就確定了的簇標記,并加入相應的簇中。
計算新的均值向量,繼續按照上述步驟劃分,直到均值向量不再被更新。
形象的解釋:
1.首先輸入 k 的值,即我們指定希望通過聚類得到 k 個分組;
2、從數據集中隨機選取 k 個數據點作為初始大佬(質心);
3、對集合中每一個小弟,計算與每一個大佬的距離,離哪個大佬距離近,就跟定哪個大佬。
4、這時每一個大佬手下都聚集了一票小弟,這時候召開選舉大會,每一群選出新的大佬(即通過算法選出新的質心)。
5、如果新大佬和老大佬之間的距離小于某一個設置的閾值(表示重新計算的質心的位置變化不大,趨于穩定,或者說收斂),可以認為我們進行的聚類已經達到期望的結果,算法終止。
-
6、如果新大佬和老大佬距離變化很大,需要迭代3~5步驟。
DBSCAN密度聚類
給定參數,minpts
核心對象:若的
鄰域內至少包含minpts個樣本,則
是一個核心對象。
密度直達:若位于
的
鄰域內,并且
是核心對象,則稱
由
密度直達。
密度可達:對于與
,若存在樣本序列
其中
且
由
密度直達,則稱
與
密度可達。
密度相連:對與
,若存在
使得
與
均由
密度可達,則稱
與
密度相連。
邊界點:如果一個對象在其半徑eps內含有點的數量小于minpts,但是該對象落在核新對象的鄰域內,則該對象為邊界點。
簇:由密度可達關系導出的最大的密度相連樣本集合。
若x是核心對象,由x密度可達的所有樣本組成的集合X就是滿足連接性與最大性的簇
先找到滿足核心對象的集合,從
中隨機選取一個核心對象作為種子,找到由它密度可達的所有樣本,這就構成了第一個聚類簇,并將剛剛選取的核心對象從
中去除,如此類推,直到
為空。
optics
只有核心對象有核心距離和可達距離。
核心距離:如果樣本對象是核心對象,那么
的核心距離,就是使樣本
能夠成為核心對象的最小半徑值
參數。使得
成為核心對象的最小距離,不是之前設定的
參數,核心距離小于等于
參數,樣本
的
鄰域內可能有多于minpts個樣本,但是我們只取半徑范圍內恰好有minpts樣本的半徑值
作為其核心距離。
可達距離:和p的可達距離指:核心距離和兩點歐式距離的最大值。
樣本與樣本
的可達距離:在核心距離
與
歐幾里得距離選較大的那個,選擇核心距離。
樣本與樣本
的可達距離:在核心距離
與
歐幾里得距離選較大的那個,選擇歐幾里得距離。
密度越大,從相鄰節點直接密度可達的距離就越小。optics算法用一個可達距離升序排列的有序種子隊列迅速定位稠密空間的數據對象。
較稠密簇中的對象在簇排序中相互靠近;
一個對象的最小可達距離給出了一個對象連接到一個稠密簇的最短路徑。
min_samples:一個點要成為核心點其鄰域內至少點的數量
max_eps:最大半徑
metric:距離矩陣,設置使用哪些距離,例如歐氏距離,曼哈頓距離等。如果使用自己定義的距離,需要設置為"precomputed",然后對距離矩陣進行訓練。
p:p=1曼哈頓距離,p=2歐式距離,任意的p使用閔式距離。
cluster_method:從可達性和排序結果,提取簇的方法,可以選擇"xi"或者'dbscan'
eps:半徑
xi:確定可達性圖上的最小陡度,構成集群邊界。
步驟:(根據不同的max_eps設定,最后得到的結果不同,eps基本不對算法結果產生影響)
1.先找出所有的核心對象,放在核心對象隊列中。當max_eps設置默認為inf時,所有的點都能成為核心對象;當max_eps設置的較小時,就有一些點無法成為核心對象并且可能也不是其他核心對象的直接可達對象,這些點的可達距離全部為inf。
2.在核心對象隊列中隨機選擇一個核心對象,第一個被處理的點是不存在可達距離的,所以設置其可達距離為inf。其在原數據集中的次序放入結果序列中,找到全部的直接密度可達點,并計算所有直接可達點的可達距離,放進有序隊列中,按照可達距離升序排列。如果核心對象隊列中的元素都已經被處理,算法結束。
3.在有序隊列中選擇可達距離最小的點,其在原數據集中的次序放入結果隊列中,并將其在有序隊列中刪除。若有序隊列為空,則算法結束。
3.1 判斷該點是否是核心對象,如果是,找到其所有的直接密度可達點,如果其密度可達點已存在于有序隊列中,并且此時的可達距離小于舊的可達距離,則用新的可達距離取代舊的可達距離。并且將有序列表中的點按照可達距離重新排序。
3.2如果不是核心對象,則尋找第二小的直接可達點。其在原數據集中的次序放入結果隊列中,并將其在有序隊列中刪除,并按照3.1處理該點。
本文章參考了多位博主的文章,如有雷同麻煩聯系我刪除。