機器學習之十八 聚類演算法

2021-08-20 06:38:48 字數 2696 閱讀 1028

聚類是無監督學習中最常用的演算法,常用的聚類演算法總結。

1、k-means(k均值)聚類:

對於輸入樣本d=,k-means聚類演算法如下:

(1)從d中隨機選擇k個class center,u1,u2,……,uk;

(2)對於每個樣本xi,將其標記為距離類別中心最近的類別,即: yi=argmin ||xi−uj||,1≤j≤k,即資料點距離哪個中心點最近就劃分到哪一類中;

(3)將每個類別中心更新為隸屬該類別的所有樣本的均值;

(4)重複(2)和(3)兩步,直到直到每一類中心在每次迭代後變化不大為止。也可以多次隨機初始化中心點,然後選擇執行結果最好的乙個。 

優點:速度快,適合發現球形聚類,可發現離群點

缺點:

1)對初始聚類中心敏感,緩解方案是多初始化幾遍,選取損失函式小的。

2)必須提前指定k值(指定的不好可能得到區域性最優解),緩解方法,多選取幾個k值,grid search選取幾個指標評價效果情況

3)屬於硬聚類,每個樣本點只能屬於一類 

4)對異常值免疫能力差,可以通過一些調整(不取均值點,取均值最近的樣本點)

5)對團狀資料點區分度好,對於帶狀不好(譜聚類或特徵對映)。

儘管它有這麼多缺點,但是它仍然應用廣泛,因為它速度快,並且可以並行化處理。

2、fuzzy c-means(模糊c均值)聚類:

給定資料集d=,模糊均值聚類演算法是最小化下面的目標函式:

c:類別的種類;

n:樣本點個數;

m:為加權指數,也稱平滑因子,控制模式在模糊類間的分享程度;

歐氏距離被定義為:

聚類中心vi被定義為:

隸屬函式

fcm演算法步驟:(1)選擇類別的數目c,選擇合適的m,初始化由隸屬度函式確定的矩陣u0(隨機值初始化);

(2)計算聚類的中心支vi;

(3)計算新的隸屬度矩陣u1

(4)比較uj和u(j+1),如果兩者的變化小於某個閾值,則停止演算法,否則轉向(2)。

3、層次聚類

也稱為凝聚的聚類演算法,最後可以生成乙個聚類的圖,但python中不容易生成這種圖,一般直接在介面軟體中生成。其實更像是一種策略演算法,畫出來有點類似於樹模型的感覺。

有自頂而下和自底向上兩種,只是相反的過程而已,下面講自頂而下的思路。

(1)計算所有個體和個體之間的距離,找到離得最近的兩個樣本聚成一類。

(2)將上面的小群體看做乙個新的個體,再與剩下的個體,計算所有個體與個體之間距離,找離得最近的兩個個體聚成一類,依次類推。

(3)直到最終聚成一類。

群體間的距離怎麼計算:

1)最小值:兩個群體之間最近的兩個樣本點的距離作為群體間的距離

2)最大值:兩個群體間最遠的兩個樣本點的距離作為群體間的距離

3)組平均值:乙個群體內每乙個點和另乙個群體內每乙個點的具體的累加,然後再除以兩個群體點的個數的乘積。

4)形心(重心)距離:兩個群體之間的形心之間的距離作為群體間的距離

5)基於目標函式的方法:比如ward方法

優點:不需要確定k值,可根據你的主觀劃分,決定分成幾類。

缺點:雖然解決了層次聚類中k-means的問題,但計算量特別大。與k-means相比兩者的區別,除了計算速度,還有k-means只產出乙個聚類結果和層次聚類可根據你的聚類程度不同有不同的結果。層次聚類中還有一種是brich演算法,brich演算法第一步是通過掃瞄資料,建立cf樹(cf樹中包含簇類中點的個數n,n個點的線性組合ls=,資料點的平方和ss;而簇裡面最開始只有乙個資料點,然後不斷往裡面加,直到超過閾值);第二步是採用某個演算法對cf樹的葉節點進行聚類。優點就是一次掃瞄就行進行比較好的聚類。缺點是也要求是球形聚類,因為cf樹儲存的都是半徑類的資料,都是球形才適合。

參考:       

機器學習之聚類演算法

聚類就是將乙個物件的集合 樣本集合 分割成幾個不想交的子集 每個子集所代表的語義需要使用者自己進行解釋 每個類內的物件之間是相似的,但與其他類的物件是不相似的.分割的類的數目可以是指定的 例如k means 也可以是有演算法生成的 dbscan 聚類是無監督學習的乙個有用工具。1原型聚類 原型聚類是...

機器學習之聚類演算法 K Means

參考 聚類演算法可以分為 中心點方法 層次聚類方法 基於密度方法 基於網格 基於模型方法。其中最為經典的是k means演算法 k means屬於中心點方法 也有叫劃分方法 演算法經典簡單。演算法 人工選取k值,並選取k個點作為k個簇的質心 對所有樣本分別計算到k個簇的質心的距離 歐式或者曼哈頓 取...

機器學習演算法 之K means聚類

1.模型 k means演算法並沒有顯式的數學模型,演算法的目的是從資料集中得到k個中心點,每個中心點及其周圍的點形成乙個聚簇。k means是一種無監督的學習模型。k means的學習目標如下圖所示 2.策略 k mean演算法採用的損失函式是平方損失函式。每個簇的點距離中心的平方距離之和構成損失...