k-means 演算法是無監督的 聚類演算法,演算法簡單,有效。
指定聚類數目 k,訓練集 x
k 個聚類
k-means 演算法 是乙個 迭代演算法,每次迭代分成兩個步驟:
1)指定聚類步驟:
計算每個樣本到 k 個 聚類中心的 距離,將樣本歸類到 距離 聚類中心 最小的那個類別
2)移動聚類中心步驟:
根據每個聚類所擁有的樣本點,重新計算每個聚類的中心
隨機初始化 k 個聚類的 中心 u(1), u(2)... u(k)
repeat {
for i = 1 to m # 假設有m 個樣本
c(i) = 聚類中心 離 x(i) 最近的那個聚類的下標索引 #(1,2... k)
for i = 1 to k # k 個類別
u(i) = 屬於 i 聚類所有 點的 平均值,即 中心
注意:停止條件可以自己設定,比如 歸類不再發生變化,或者最多 n次迭代 等
k-means的優化目標:
j(c(1), c(2)...c(m), u(1), u(2)...u(k)) = 1/2 * sum( ||x(i) - uc(i) || ^2)
min j
對應到演算法:
1)指定聚類步驟時,保持聚類中心不變,通過改變每個樣本所屬聚類來最小化 j;
2)移動聚類中心步驟時,通過移動調整聚類中心 來 最小化 j。
往往k-means演算法的解空間存在多個滿足 j 區域性最小值,因此k-means演算法得到的解,很有可能只是滿足 j 區域性最小的那個解,而不是全域性最小的那個解。
執行 k-means 演算法 n 次,比如 n = 100 次,每次 都是 隨機初始化 k 個 聚類中心, 然後迭代最後收斂得到 k 個 聚類。
最後,依此計算 這 n 次 j 值,選擇 j 值 最小那次 得到的 k 個 聚類
計算 j 隨著 k 數目變化 而 如何變化,k = 1, 2 ..
如果選擇的 k 是 發生比較明顯轉折的那個點,就叫做elbow method
K Means演算法簡介
假設有下面這樣乙個資料集,想要對其中的資料進行分類,分為兩個聚類。例如 k means演算法是個迭代演算法,其迭代過程分為兩步 聚類分配和中心移動。首先隨機生成兩個點,即聚類中心,如下圖所示。然後開始演算法的迭代過程 1 首先進行聚類分配,遍歷所有樣本,按照樣本與兩個聚類中心的距離大小來將每個樣本分...
聚類演算法 K Means 簡介與入門
k means 演算法是最簡單的一種聚類演算法,屬於無監督學習演算法。聚類和分類最大的不同在於 分類的目標是事先已知的,而聚類則不一樣,聚類事先不知道目標變數是什麼,類別沒有像分類那樣被預先定義出來。假設我們的樣本是 每個 x i r n,即它是乙個維向量。現在使用者給定乙個 k 值,要求將樣本聚類...
k means演算法不足
a.k 不確定 對於初始條件和聚類的個數 k 並沒有乙個標準的方法來給定。初始條件不同會對結果產生比較大的影響,因為有時演算法會跳入區域性最優。所以解決方法之一,就是多次執行演算法,隨機分割,比較結果之間的差異。b.區域性最優 如果要達到全域性最優,需要用到其他一些技術,比如模擬退火或者遺傳演算法等...