機器學習 之k-means和DBSCAN的區別


1、定義和區別(優缺點對比)

  • 聚類分為:基於划分、層次、密度、圖形和模型五大類;

  • 均值聚類k-means是基於划分的聚類, DBSCAN是基於密度的聚類。區別為:

    1. k-means需要指定聚類簇數k,並且且初始聚類中心對聚類影響很大。k-means把任何點都歸到了某一個類,對異常點比較敏感。DBSCAN能剔除噪聲,需要指定鄰域距離閾值eps和樣本個數閾值MinPts,可以自動確定簇個數。

    2. K均值和DBSCAN都是將每個對象指派到單個簇的划分聚類算法,但是K均值一般聚類所有對象,而DBSCAN丟棄被它識別為噪聲的對象。

    3. K均值很難處理非球形的簇和不同大小的簇。DBSCAN可以處理不同大小或形狀的簇,並且不太受噪聲和離群點的影響。當簇具有很不相同的密度時,兩種算法的性能都很差。

    4. K均值只能用於具有明確定義的質心(比如均值或中位數)的數據。DBSCAN要求密度定義(基於傳統的歐幾里得密度概念)對於數據是有意義的。

    5. K均值算法的時間復雜度是O(m),而DBSCAN的時間復雜度是O(m^2)。

    6. DBSCAN多次運行產生相同的結果,而K均值通常使用隨機初始化質心,不會產生相同的結果。

    7. K均值DBSCAN和都尋找使用所有屬性的簇,即它們都不尋找可能只涉及某個屬性子集的簇。

    8. K均值可以發現不是明顯分離的簇,即便簇有重疊也可以發現,但是DBSCAN會合並有重疊的簇。

    9. K均值可以用於稀疏的高維數據,如文檔數據。DBSCAN通常在這類數據上的性能很差,因為對於高維數據,傳統的歐幾里得密度定義不能很好處理它們。

2、kmeans原理

  • k-means:即均值聚類,對於給定樣本集,按照樣本之間的距離大小,將樣本集划分為K個簇。目標是讓簇內的點盡量連接在一起,而讓簇間的距離盡量大。
  • 目標函數:如果用數據表達式表示,假設簇划分為(C1,C2,...Ck),則我們的目標是最小化平方誤差E:

\[E = \sum_{i=1}^{k} \sum_{x \in C_{i}} ||x- \mu_{i}||_{2}^{2} \]

其中\(\mu\)是簇\(C_{i}\)的均值向量,也稱為質心,表達式為:

\[\mu_{i} = \frac{1}{C_{i}} \sum_{x \in C_{i}} x \]

  • 直接求目標函數E的值是一個NP難的問題。NP(non-deterministic polynomial)是指非確定性多項式,即可用一定數量的運算去解決多項式時間內可解決的問題,而NP難不是一個NP問題。(NP->NPC->NP hard)

  • K-means算法流程:首先確定K值(可以根據經驗指定,或者交叉驗證選擇合適k值),其次是選擇k個初始化的質心(質心的選擇對結果的影響很大,因此質心選擇不能太近)。

優化算法暫時不作筆記。

  • k-means優點:

    1. 原理比較簡單,實現也是很容易,收斂速度快。

    2. 聚類效果較優。

    3. 算法的可解釋度比較強。

    4. 主要需要調參的參數僅僅是簇數k。

  • k-means缺點:

    1. K值的選取不好把握。

    2. 對於不是凸的數據集比較難收斂。

    3. 如果各隱含類別的數據不平衡,比如各隱含類別的數據量嚴重失衡,或者各隱含類別的方差不同,則聚類效果不佳。

    4. 采用迭代方法,得到的結果只是局部最優。

    5. 對噪音和異常點比較的敏感。

3、DBSCAN原理

  • DBSCAN定義:是一種基於密度的聚類算法,可以通過樣本分布的緊密程度決定,同一類別的樣本之間是緊密相連的,不同樣本是是分離的。

  • DBSCAN原理:基於一組鄰域來描述樣本集的緊密程度,參數\((\epsilon, MinPts)\)用來描述領域的樣本分布緊密程度。其中\(\epsilon\)是某一樣本的鄰域距離閾值,\(MinPts\)描述了某一樣本的距離為\(\epsilon\)的鄰域中樣本個數閾值。

  • DBSCAN思想:由密度可達關系導出的最大密度相連的樣本集合,即為我們最終聚類的一個類別,或者說一個簇。假定樣本集為\(D=(x_{1},x_{2},...,x_{m})\),則有以下重要定義:

    1. \(\epsilon\)-鄰域:對於xj∈D,其ϵ-鄰域包含樣本集D中與xj的距離不大於ϵ的子樣本集,即Nϵ(xj)={xi∈D|distance(xi,xj)≤ϵ}, 這個子樣本集的個數記為|Nϵ(xj)| ;

    2. 核心對象:對於任一樣本xj∈D,如果其ϵ-鄰域對應的Nϵ(xj)至少包含MinPts個樣本,即如果|Nϵ(xj)|≥MinPts,則xj是核心對象。 

    3. 密度直達:如果xi位於xj的ϵ-鄰域中,且xj是核心對象,則稱xi由xj密度直達。注意反之不一定成立,即此時不能說xj由xi密度直達, 除非且xi也是核心對象。

    4. 密度可達:對於xi和xj,如果存在樣本樣本序列p1,p2,...,pT,滿足p1=xi,pT=xj, 且pt+1由pt密度直達,則稱xj由xi密度可達。也就是說,密度可達滿足傳遞性。此時序列中的傳遞樣本p1,p2,...,pT−1均為核心對象,因為只有核心對象才能使其他樣本密度直達。注意密度可達也不滿足對稱性,這個可以由密度直達的不對稱性得出。

    5. 密度相連:對於xi和xj,如果存在核心對象樣本xk,使xi和xj均由xk密度可達,則稱xi和xj密度相連。注意密度相連關系是滿足對稱性的。

  • DBSCAN聚類算法流程:

  • DBSCAN優點:

    1. 可以對任意形狀的稠密數據集進行聚類,相對的,K-Means之類的聚類算法一般只適用於凸數據集。

    2. 可以在聚類的同時發現異常點,對數據集中的異常點不敏感。

    3. 聚類結果沒有偏倚,相對的,K-Means之類的聚類算法初始值對聚類結果有很大影響。

  • DBSSCAN缺點:

    1. 如果樣本集的密度不均勻、聚類間距差相差很大時,聚類質量較差,這時用DBSCAN聚類一般不適合。

    2. 如果樣本集較大時,聚類收斂時間較長,此時可以對搜索最近鄰時建立的KD樹或者球樹進行規模限制來改進。

    3. 調參相對於傳統的K-Means之類的聚類算法稍復雜,主要需要對距離閾值ϵ,鄰域樣本數閾值MinPts聯合調參,不同的參數組合對最后的聚類效果有較大影響。

  • 凸集:集合中的任意兩點連線的點都在該集合中,則稱該集合為凸集;凹集為非凸集。而凸數據集是指集合以數據記錄為點的集合。例如,\(ConvexSet = \{(x1,x2,...), (x1,x2,...)', (x1,x2,...)'',...,(x1,x2,...)^{n}\}\)

參考

1.[博客園]https://www.cnblogs.com/hdu-2010/p/4621258.html

2.[劉建平博客]https://www.cnblogs.com/pinard/p/6208966.html

3.[劉建平博客]https://www.cnblogs.com/pinard/p/6164214.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM