日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

聚类算法的缺点_常用聚类算法

發布時間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 聚类算法的缺点_常用聚类算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、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進行最大期望的聚類過程。


具體步驟:

1. 選擇簇的數量(與K-Means類似)并隨機初始化每個簇的高斯分布參數(均值和方差)。也可以先觀察數據給出一個相對精確的均值和方差。
2. 給定每個簇的高斯分布,計算每個數據點屬于每個簇的概率。一個點越靠近高斯分布的中心就越可能屬于該簇。
3. 基于這些概率我們計算高斯分布參數使得數據點的概率最大化,可以使用數據點概率的加權來計算這些新的參數,權重就是數據點屬于該簇的概率。
4. 重復迭代2和3直到在迭代中的變化不大。

GMMs的優點:

GMMs使用均值和標準差,簇可以呈現出橢圓形而不是僅僅限制于圓形。K-Means是GMMs的一個特殊情況,是方差在所有維度上都接近于0時簇就會呈現出圓形。
GMMs是使用概率,所有一個數據點可以屬于多個簇。例如數據點X可以有百分之20的概率屬于A簇,百分之80的概率屬于B簇。也就是說GMMs可以支持混合資格。

5. 凝聚層次聚類

層次聚類算法分為兩類:自上而下和自下而上。凝聚層級聚類(HAC)是自下而上的一種聚類算法。HAC首先將每個數據點視為一個單一的簇,然后計算所有簇之間的距離來合并簇,知道所有的簇聚合成為一個簇為止。
下圖為凝聚層級聚類的一個實例:


具體步驟:

1. 首先我們將每個數據點視為一個單一的簇,然后選擇一個測量兩個簇之間距離的度量標準。例如我們使用average linkage作為標準,它將兩個簇之間的距離定義為第一個簇中的數據點與第二個簇中的數據點之間的平均距離。
2. 在每次迭代中,我們將兩個具有最小average linkage的簇合并成為一個簇。
3. 重復步驟2知道所有的數據點合并成一個簇,然后選擇我們需要多少個簇。


層次聚類優點:(1)不需要知道有多少個簇
(2)對于距離度量標準的選擇并不敏感
缺點:效率低

主要參考:

  • 常見的六大聚類算法_詩蕊的專欄-CSDN博客_聚類算法
  • DBSCAN - bonelee - 博客園
  • 新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

    總結

    以上是生活随笔為你收集整理的聚类算法的缺点_常用聚类算法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。