機器學習(34)k-means聚類:在聚類問題中,給定乙個訓練集,演算法根據某種策略將訓練集分成若干類。在監督式學習中,訓練集中每乙個資料都有乙個標籤,但是在如果分類問題中沒有標籤。
我們可以將聚類演算法稱之為非監督式學習演算法。這兩種演算法最大的區別還在於:監督式學習有標籤,而非監督式學習沒有標籤。那麼這裡可以理解為標籤實際上就是一種監督性質的分類,而無標籤根據分布性質,那麼我們稱之為聚類。感興趣同學可以查閱半監督學習。
演算法基本內容
演算法的核心目標就是將給定的資料集分成k類,具體做法為:
1、隨機選取k個簇中心記為μ1,μ2,...,μk∈rn 2、重複下面過程直到收斂 x(i)∑mi=11
}k是我們事先給定的聚類數,c(i) 代表樣本i與k個簇中距離最近的那個簇的下標,c(i) 的值是1到k中的乙個。質心μj 代表我們對屬於同乙個類的樣本中心點的猜測。程式就這樣反覆進行直到收斂或者簇中心基本不動。
演算法過程可以如下圖示意,其中k取2:
k-means面對的乙個重要問題是如何保證收斂,前面的演算法中強調結束條件就是收斂,可以證明的是k-means完全可以保證收斂性。下面我們定性的描述一下收斂性,我們定義畸變函式(distortion function)如下:
j(c,μ)=∑i=1m∥x(i)?μc(i)∥2
j函式表示每個樣本點到其質心的距離平方和。k-means是要將j調整到最小。假設當前j沒有達到最小值,那麼首先可以固定每個簇中心μj,調整每個樣例的所屬的類別c(i) 來讓j函式減少,同樣,固定c(i) ,調整每個簇中心μj 也可以使j減小。這兩個過程就是內迴圈中使j單調遞減的過程。當j遞減到最小時,μ和c也同時收斂。(在理論上,可以有多組不同的μ和c值能夠使得j取得最小值,但這種現象實際上很少見)。其實整體來看,這個演算法就是座標上公升演算法.
如果畸變函式j是非凸函式,意味著我們不能保證取得的最小值是全域性最小值,也就是說k-means對簇中心初始位置的選取比較敏感,但一般情況下k-means達到的區域性最優已經滿足需求。但如果你怕陷入區域性最優,那麼可以選取不同的初始值跑多遍k-means,然後取其中最小的j對應的μ和c輸出。
演算法優點
k-means聚類演算法的優點主要集中在:
演算法快速、簡單; 對大資料集有較高的效率並且是可伸縮性的; 時間複雜度近於線性,而且適合挖掘大規模資料集。k-means聚類演算法的時間複雜度是o(nkt) ,其中n代表資料集中物件的數量,t代表著演算法迭代的次數,k代表著簇的數目。
演算法缺點
k-means 演算法缺點
1. 在 k-means 演算法中k是事先給定的,這個k值的選定是非常難以估計的。很多時候,事先並不知道給定的資料集應該分成多少個類別才最合適。這也是 k-means 演算法的乙個不足。
2. 在 k-means 演算法中,首先需要根據初始聚類中心來確定乙個初始劃分,然後對初始劃分進行優化。這個初始聚類中心的選擇對聚類結果有較大的影響,一旦初始值選擇的不好,可能無法得到有效的聚類結果,這也成為 k-means演算法的乙個主要問題。對於該問題的解決,許多演算法採用遺傳演算法(ga),例如文獻中採用遺傳演算法(ga)進行初始化,以內部聚類準則作為評價指標。
3. 從 k-means 演算法框架可以看出,該演算法需要不斷地進行樣本分類調整,不斷地計算調整後的新的聚類中心,因此當資料量非常大時,演算法的時間開銷是非常大的。所以需要對演算法的時間複雜度進行分析、改進,提高演算法應用範圍。在文獻中從該演算法的時間複雜度進行分析考慮,通過一定的相似性準則來去掉聚類中心的侯選集。而在文獻中,使用的 k-means 演算法是對樣本資料進行聚類,無論是初始點的選擇還是一次迭代完成時對資料的調整,都是建立在隨機選取的樣本資料的基礎之上,這樣可以提高演算法的收斂速度。
機器學習筆記 kMeans聚類
優點 容易實現。缺點 可能收斂到區域性最小值,在大規模資料集上收斂較慢。適用資料型別 數值型資料 k 均值演算法 先隨機確定k個初始點作為質心,然後將資料集中的每個點分配到乙個簇中,具體來講為每個點找距其最近的質心,並將其分配給該質心所對應的簇。再每個簇更新質心為該簇所有點的平均值。import n...
機器學習之Kmeans聚類
本次學習總結 1 理解相似度度量的各種方法及其相互聯絡 2 掌握k means演算法思路及其使用條件 3 層次聚類的思路和方法 4 密度聚類並能夠應用於實踐 dbscan 密度最大值聚類 5 譜聚類演算法 譜聚類演算法與pca之間的關係 聚類的定義 聚類就是將大量未知標註的資料,按照資料的內在相似性...
機器學習之聚類演算法 K Means
參考 聚類演算法可以分為 中心點方法 層次聚類方法 基於密度方法 基於網格 基於模型方法。其中最為經典的是k means演算法 k means屬於中心點方法 也有叫劃分方法 演算法經典簡單。演算法 人工選取k值,並選取k個點作為k個簇的質心 對所有樣本分別計算到k個簇的質心的距離 歐式或者曼哈頓 取...