1. 程式人生 > >【機器學習二】梯度下降法KMeans

【機器學習二】梯度下降法KMeans

KMeans聚類的思想:
給定一個有M個物件的資料集,構建一個具有k個簇的模型,其中k<=M。滿
足以下條件:
• 每個簇至少包含一個物件
• 每個物件屬於且僅屬於一個簇
• 將滿足上述條件的k個簇成為一個合理的聚類劃分
• 基本思想:對於給定的類別數目k,首先給定初始劃分,通過迭代改變樣本和
簇的隸屬關係,使的每次處理後得到的劃分方式比上一次的好(總的資料集之
間的距離和變小了)
K-means演算法
K-means演算法,也稱為K-平均或者K-均值,是一種使用廣泛的最基礎的聚類
演算法,一般作為掌握聚類演算法的第一個演算法
• 假設輸入樣本為T=X1,X2,…,Xm;則演算法步驟為(使用歐幾里得距離公式):
• 選擇初始化的k個類別中心a1,a2,…ak;
• 對於每個樣本Xi,將其標記位距離類別中心aj最近的類別j
• 更新每個類別的中心點aj為隸屬該類別的所有樣本的均值(為什麼是所有樣本的平均距離,下面解釋)
• 重複上面兩步操作,直到達到某個中止條件
• 中止條件:
• 迭代次數、最小平方誤差MSE(樣本到中心的距離平方和)、簇中心點變化率
根據K-means演算法可以得到其具體是過程示意圖:


在這裡插入圖片描述
圖b中任意選取2個簇的中心點,圖c是第一次迭代,迭代後分別得到2個簇的點。此時還不滿足迭代終止條件,繼續迭代。通過幾次迭代會,最終得到圖d,此時簇中心不再變化了,可認為完成了聚類。
K-means演算法的Loss:
記K個簇中心分別為a1,a2,…ak;每個簇的樣本數量為N1,N2,…,NK;
• 使用平方誤差作為目標函式(使用歐幾里得距離),公式為:
4
要獲取最優解,也就是目標函式需要儘可能的小,對J函式求偏導數,可以得
到簇中心點a更新的公式為:
在這裡插入圖片描述

在這裡插入圖片描述
這也就解釋了為啥K-means的簇中心為該簇的所有樣本的均值。
K-means演算法思考
K-means演算法在迭代的過程中使用所有點的均值作為新的質點(中心點),如
果簇中存在異常點,將導致均值偏差比較嚴重
• 比如一個簇中有2、4、6、8、100五個資料,那麼新的質點為24,顯然這個質點離
絕大多數點都比較遠;在當前情況下,使用中位數6可能比使用均值的想法更好,使
用中位數的聚類方式叫做K-Mediods聚類(K中值聚類)
• K-means演算法是初值敏感(K值的給定和K個初始簇中心點的選擇)的,選擇不
同的初始值可能導致不同的簇劃分規則
• 為了避免這種敏感性導致的最終結果異常性,可以採用初始化多套初始節點構造不
同的分類規則,然後選擇最優的構造規則
K-means演算法的初值敏感


在這裡插入圖片描述
K-means演算法優缺點
• 缺點:
• K值是使用者給定的,在進行資料處理前,K值是未知的,不同的K值得到的結果也不一樣;
• 對初始簇中心點是敏感的
• 不適合發現非凸形狀的簇或者大小差別較大的簇
• 特殊值(離群值)對模型的影響比較大
• 優點:
• 理解容易,聚類效果不錯
• 處理大資料集的時候,該演算法可以保證較好的伸縮性和高效率
• 當簇近似高斯分佈的時候,效果非常不錯