聚类算法的缺点_常用聚类算法
一、K-Means
算法步驟:
(1) 首先我們選擇一些類/組,并隨機初始化它們各自的中心點。中心點是與每個數據點向量長度相同的位置。這需要我們提前預知類的數量(即中心點的數量)。(2) 計算每個數據點到中心點的距離,數據點距離哪個中心點最近就劃分到哪一類中。
(3) 計算每一類中中心點作為新的中心點。
(4) 重復以上步驟,直到每一類中心在每次迭代后變化不大為止。也可以多次隨機初始化中心點,然后選擇運行結果最好的一個。
下圖演示了K-Means進行分類的過程:
優點:
速度快,計算簡便缺點:
我們必須提前知道數據有多少類/組。K-Medians是K-Means的一種變體,是用數據集的中位數而不是均值來計算數據的中心點。
K-Medians的優勢是使用中位數來計算中心點不受異常值的影響;缺點是計算中位數時需要對數據集中的數據進行排序,速度相對于K-Means較慢。
二、均值漂移聚類
均值漂移聚類是基于滑動窗口的算法,來找到數據點的密集區域。這是一個基于質心的算法,通過將中心點的候選點更新為滑動窗口內點的均值來完成,來定位每個組/類的中心點。然后對這些候選窗口進行相似窗口進行去除,最終形成中心點集及相應的分組。
具體步驟:
1. 確定滑動窗口半徑r,以隨機選取的中心點C半徑為r的圓形滑動窗口開始滑動。均值漂移類似一種爬山算法,在每一次迭代中向密度更高的區域移動,直到收斂。2. 每一次滑動到新的區域,計算滑動窗口內的均值來作為中心點,滑動窗口內的點的數量為窗口內的密度。在每一次移動中,窗口會想密度更高的區域移動。
3. 移動窗口,計算窗口內的中心點以及窗口內的密度,知道沒有方向在窗口內可以容納更多的點,即一直移動到圓內密度不再增加為止。
4. 步驟一到三會產生很多個滑動窗口,當多個滑動窗口重疊時,保留包含最多點的窗口,然后根據數據點所在的滑動窗口進行聚類。
下圖演示了均值漂移聚類的計算步驟:
下面顯示了所有滑動窗口從頭到尾的整個過程。每個黑點代表滑動窗口的質心,每個灰點代表一個數據點。
優點:
不同于K-Means算法,均值漂移聚類算法不需要我們知道有多少類/組。基于密度的算法相比于K-Means受均值影響較小。
缺點:
(1)窗口半徑r的選擇可能是不重要的。三、 基于密度的聚類方法(DBSCAN)
1.DBSCAN密度聚類簡介
DBSCAN算法將數據點分為三類:
1.核心點:在半徑Eps內含有超過MinPts數目的點。2.邊界點:在半徑Eps內點的數量小于MinPts,但是落在核心點的鄰域內的點。
3.噪音點:既不是核心點也不是邊界點的點。
2.DBSCAN算法的流程
1.將所有點標記為核心點、邊界點或噪聲點;2.刪除噪聲點;
3.為距離在Eps之內的所有核心點之間賦予一條邊,Eps 為設置的超參數,距離小于該值的簇將被合并;
4.每組連通的核心點形成一個簇,也就是簇合并;
5.將每個邊界點指派到一個與之關聯的核心點的簇中(哪一個核心點的半徑范圍之內)。
其中標記核心點、邊界點或噪聲點的具體步驟如下:
1. 首先確定半徑r和minPoints. 從一個沒有被訪問過的任意數據點開始,以這個點為中心,r為半徑的圓內包含的點的數量是否大于或等于minPoints,如果大于或等于minPoints則改點被標記為central point,反之則會被標記為noise point。2. 重復1的步驟,如果一個noise point存在于某個central point為半徑的圓內,則這個點被標記為邊緣點,反之仍為noise point。重復步驟1,直到所有的點都被訪問過。
優點:不需要知道簇的數量
缺點:需要確定距離r和minPoints
四、用高斯混合模型(GMM)的最大期望(EM)聚類
K-Means的缺點在于對聚類中心均值的簡單使用。下面的圖中的兩個圓如果使用K-Means則不能作出正確的類的判斷。同樣的,如果數據集中的點類似下圖中曲線的情況也是不能正確分類的。
使用高斯混合模型(GMM)做聚類首先假設數據點是呈高斯分布的,相對應K-Means假設數據點是圓形的,高斯分布(橢圓形)給出了更多的可能性。我們有兩個參數來描述簇的形狀:均值和標準差。所以這些簇可以采取任何形狀的橢圓形,因為在x,y方向上都有標準差。因此,每個高斯分布被分配給單個簇。
所以要做聚類首先應該找到數據集的均值和標準差,我們將采用一個叫做最大期望(EM)的優化算法。下圖演示了使用GMMs進行最大期望的聚類過程。
具體步驟:
2. 給定每個簇的高斯分布,計算每個數據點屬于每個簇的概率。一個點越靠近高斯分布的中心就越可能屬于該簇。
3. 基于這些概率我們計算高斯分布參數使得數據點的概率最大化,可以使用數據點概率的加權來計算這些新的參數,權重就是數據點屬于該簇的概率。
4. 重復迭代2和3直到在迭代中的變化不大。
GMMs的優點:
GMMs使用均值和標準差,簇可以呈現出橢圓形而不是僅僅限制于圓形。K-Means是GMMs的一個特殊情況,是方差在所有維度上都接近于0時簇就會呈現出圓形。GMMs是使用概率,所有一個數據點可以屬于多個簇。例如數據點X可以有百分之20的概率屬于A簇,百分之80的概率屬于B簇。也就是說GMMs可以支持混合資格。
5. 凝聚層次聚類
層次聚類算法分為兩類:自上而下和自下而上。凝聚層級聚類(HAC)是自下而上的一種聚類算法。HAC首先將每個數據點視為一個單一的簇,然后計算所有簇之間的距離來合并簇,知道所有的簇聚合成為一個簇為止。
下圖為凝聚層級聚類的一個實例:
具體步驟:
2. 在每次迭代中,我們將兩個具有最小average linkage的簇合并成為一個簇。
3. 重復步驟2知道所有的數據點合并成一個簇,然后選擇我們需要多少個簇。
層次聚類優點:(1)不需要知道有多少個簇
(2)對于距離度量標準的選擇并不敏感
缺點:效率低
主要參考:
總結
以上是生活随笔為你收集整理的聚类算法的缺点_常用聚类算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php数组10000分割1000_PHP
- 下一篇: android led灯框架_LED面板