K Means的三種迭代演算法

2021-08-01 03:20:39 字數 1490 閱讀 4678

k-means是機器學習演算法

中乙個比較經典的聚類演算法

具體的實現方式主要有三種:lloyd(forgy)hartigan-wongmacqueen

lloyd演算法

lloyd演算法也可以稱作forgy或者lloyd-forgy,是最為經典簡單的k-means迭代演算法,其步驟如下:

1. 隨機選取k個點作為初始的中心點

2. 計算每個點與k個中心點的k個距離(假如有n個點,就有n*k個距離值)

3. 分配剩下的點到距離其最近的中心點的類中,並重新計算每個類的中心點

4. 重複步驟2和步驟3

5. 直到達到收斂或者達到某個停止閾值(如最大計算時間)

用公式解釋如下:

1. 把所有的點分配到k個類的係數r,屬於第k個類的記為1,否則為0

2. 由上可知第k個類中的樣本數量

3. 目標是最小化損失函式j

4. 計算每個點到中心點的距離,分配r的係數

5. 重新計算每個類的中心點

重複4和5指導收斂或者達到某個閾值

lloyd演算法的缺點是,聚類產生的類別經常是不平衡的,就是說不同類中樣本的數量差異很大。這點會經常被忽略到,然而很多時候需要我們聚類出來是平衡的,例如對手寫數字影象進行聚類的時候,我們有理由相信10個數字出現的頻率是一樣的,所以希望聚類後每個類中含有樣本數量是相同的。像上述的手寫數字影象聚類這個例子中 ,為獲得更高的分類準確率,則需要平衡的聚類結果。另外,lloyd演算法是乙個批量更新演算法,因此會學習速度會相對較快。

macqueen演算法

1. 選取頭k個點作為k個類的中心點

2. 選取下乙個點計算與k個中心點的距離,選取距離最小的分配到該類中

3. 更新該類的中心點

4. 重複2,3直到所有的點分配完畢,達到收斂

macqueen相對於lloyd而言,總體的訓練時間需要更久。

hartigan-wong演算法

1. 隨機分配所有的點到k個類上,計算k個類的中心

2. 隨機選擇乙個點,把它移出所屬類

3. 重新計算有變化的類的中心

4. 把移出的點重新分配到其距離最近的中心點的類上

5. 迴圈所有的點,重複2,3,4

6. 進行第二次迴圈,重複2,3,4,5

7. 直到達到收斂或者某個停止閾值

其主要的不同點是在分配到k個類別的過程中,公式如下:

值得注意的是因為hartigan-wong演算法多加了乙個乘法項

因此演算法更傾向於把樣本分配給樣本數量較少的類。但是這個乘法項並不是為了平衡而設計的,而是在把移除的點加入合適的類中而發生的類大小變化。

1. 週旺,張晨麟,吳建鑫 「一種基於hartigan-wong和lloyd的定性平衡聚類演算法」山東大學學報(工學版)  第46卷第5期

2.

三種迭代的能否刪除

public class demo1 foreach c 案例演示 陣列,集合儲存元素用增強for遍歷 d 好處 簡化遍歷 增強for迴圈底層依賴的是迭代器 iterator public static void main string args 2,迭代器刪除 iteratorit list.it...

for迭代序列的三種方式

while迴圈是條件性的,for迴圈是迭代性的。for迴圈會訪問所有迭代物件中的所有元素,並在所有條目都結束後結束迴圈。for迴圈迭代序列有三種基本的方式,分別是通過序列項迭代 通過索引迭代 通過項和索引迭代 1.通過序列項迭代 namelist 科比 毛線 小鳥 星爺 for i in namel...

三種常用演算法概述 遍試 迭代 遞迴

為解決某類問題而設計的操作序列 非可執行的指令序列 特點 有窮性 確定性 可行性 輸入輸出邏輯上 針對所有的可能的情況進行判斷 形式上for中用if 示例 using system class hanxin using systen public class shuixianhua 執行結果 153...