k-means算法總結


1.原理

  聚類是一種無監督學習的方法,其實質是依據某種距離度量,使得同一聚簇之間的相似性最大化,不同聚簇之間的相似性最小化,即把相似的對象放入同一聚簇中,把不相似的對象放到不同的聚簇中。聚類與分類不同,聚類的輸入對象不需要帶有類別標簽,最后組成的分類是由使用的算法決定的。

在聚類中,k-means由於其簡單、易實現的優點,被廣泛使用。

  假設集合是d維向量空間中的集合,其中表示集合中的第i個對象(或稱為"數據點"),設矩陣表示k個聚簇中心的集合,其中,表示第j個聚簇標識,向量用於表示每個數據點所屬的聚簇。

  k-means算法是一種迭代的貪婪下降求解算法,其目標函數是非凸的,這也是造成只能得到局部最優解的原因,目標函數表達式如下:

  算法的流程主要包括,首先我們隨機選擇集合中的k個點作為初始的聚簇中心,接着根據將集合中的每個點分配到距離它最近的聚簇中,最后根據每個聚簇中的數據點更新聚簇中心,如此反復地執行后兩個步驟直到算法收斂。k-means算法就是通過迭代的方式,將集合中的數據點聚成k個類,其核心步驟主要有:

  1)將數據點分配到距離它最近的聚簇中心

  2)更新聚簇中心(取聚簇中每個數據點坐標的均值)

  算法的詳細步驟如表1所示,

表1 k-means算法的具體步驟

 

 

 

 2.缺陷

  k-means算法存在不少的缺陷,表2列出了k-means算法常見的缺陷以及解決的方法。

表2 k-means算法缺陷

 

 

3.擴展

3.1核方法

  為了能處理形狀復雜的聚簇,我們可以通過核方法提高k-means算法對於復雜數據的處理能力。我們知道聚簇邊界在原空間中是非線性的,但是,如果是在核函數所隱含的高維空間中卻可以線性的。

3.2加速的k-means

  k-means算法在處理超大數據時,存在時間過長的缺陷,所以針對這個缺點,提出了不少的改進算法。例如可以通過使用kd-樹或者利用三角不等式,減少在重新划分聚簇這個步驟的計算量。

3.3柔性k-means

  柔性k-means是與剛性k-means相對的,剛性的k-means即基本的k-means算法,將每個數據點划分到唯一一個聚簇中。而在柔性的k-means算法中,將每個數據點依據概率賦給每個聚簇,即柔性k-means中,每個數據點都有一個權重(概率)向量,用來描述每個數據點屬於每個聚簇的可能性。

 

 4.小結

  k-means算法使用簡單的迭代將數據集聚成k個類,迭代的核心步驟有:(1)更新聚簇中心;(2)更新聚簇標識。盡管它有不少缺陷,但是其實現簡單、移動、伸縮性良好等優點使得它成為聚類中最常用的算法之一。

 

參考文獻

[1]Xindong Wu,Vipin Kumar.數據挖掘十大算法[M].北京:清華大學出版社.2014:19-30.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM