&&機器學習實戰&&K均值聚類

1.概述

       聚類是一種無監督學習,它將相似的對象歸到同一個簇中。聚類方法幾乎可以應用於所有對象,簇內的對象越相似,聚類的效果越好。

       k-均值聚類之所以稱爲是因爲它可以發現k個不同的簇,且每個簇的中心採用簇中所含值的均值計算而成。

2.簇識別(cluster identification)

       簇識別給出聚類結果的含義。假定有一些數據,現在將相似數據歸到一起,簇識別會告訴我們這些簇到底都是些什麼。聚類和分類的最大不同在於,分類的目標事先已知,而聚類則不一樣。因爲其產生的結果魚分類相同,而只是類別沒有預先定義,聚類有時也被稱爲無監督分類。

3.K-均值聚類

      優點:容易實現

     缺點:可能收斂到局部最小值,在大規模數據集上收斂較慢。

     適用數據類型:數值型數據。

K-均值是發現給定數據集的k個簇的算法。簇的個數k是用戶給定的,每個簇通過其質心,即簇中所有點的中心來描述。

算法的流程:首先,隨機確定K個初始點作爲質心。然後,將數據集中的每個點分配到一個簇中,具體來講,爲每個點找距其最近的質心,並將其分配給該質心所對應的簇。這一步完成之後,每個簇的質心更新爲該簇所有點的平均值。

僞代碼:

一般流程:

5.使用後處理來提高聚類性能

k由用戶預先定義,那麼用戶如何才能知道k的選擇是否正確?如何才能知道生成的簇比較無好呢?

在包含簇分配結果的矩陣中保存着每個點的誤差,即該點到簇質心的距離平方值。

K均值算法收斂但是聚類效果較差的原因是,k均值算法收斂到了局部最小值,而非全局最小值。

一種度量聚類效果的指標是SSE(sum of squared error,誤差平方和)。SSE值越小表示數據點越接近於它們的質心,聚類的效果也越好。因爲對誤差取了平方,因此更加重視那些遠離中心的點。

對生成的簇進行後處理,一種方法是將具有最大SSE值的簇劃分成兩個簇。具體實現時可以將最大簇包含的點過濾出來並在這些點上運行K均值算法(k設爲2)。

爲了保持簇的總數不變,可以將兩個簇進行合併。有兩種可以量化的方法:合併最近的質心,或者合併兩個使得SSE增幅最小的質心。

6.二分K-均值算法

爲克服K-均值算法收斂於局部最小值的問題,有人提出了另一個稱爲二分K-均值(bisecting K-means)的算法。

該算法首先將所有點作爲一個簇,然後將該簇一分爲二。之後選擇其中一個簇繼續進行劃分,選擇哪一個簇進行劃分取決於對其劃分是否可以最大程度降低SSE的值。上述基於SSE的劃分過程不斷重複,直到得到用戶指定的簇數目爲止。

僞代碼:

7.小結

k-均值算法非常有效但是也容易受到初始簇質心的影響。爲了獲得更好的聚類效果,可以使用另一種稱爲二分k均值的聚類算法。

K-均值算法以及變形的k-均值算法並非僅有的聚類算法,另外稱爲層次聚類的算法也被廣泛使用。

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章