聚類分析(一)-K均值

一.K均值的過程

首先,選擇K個初始質心,其中K是用戶指定的參數,即所期望的簇的個數。每個點指派到最近的質心,而指派到一個質心的點集爲一個簇。然後,根據指派到簇的點,更新每個簇的質心。重複指派和更新步驟,直到簇不發生變化,或等價地,直到質心不發生變化。

所以根據這個過程,我們需要在這個過程中關注兩個問題:1.如何選擇初始質心 2.怎麼決定將點指派到哪個質心 3.怎麼計算質心

二.K均值需要注意的問題

1.如何選擇初始質心

方法一.隨機產生初始質心,但這種方法往往導致簇的質量非常差
方法二.多次運行,每次使用一組不同的隨機初始質心,然後選取具有最小平方誤差和的簇集。而隨機產生初始質心的問題,即使多次運行也可能無法解決
方法三.取一個樣本,並使用層次聚類技術對它進行聚類。從層次聚類中提取K個簇,並用這些簇的質心作爲初始質心。
方法四.隨機的選擇第一個點,或取所有點的質心作爲第一個點。然後,對於每個後繼初始質心,選擇離已經選取過的初始質心最遠的點。這種方法選擇的初始質心的集合,可以保證是散開的。但是,這種方法有可能選中離羣點。

2.怎麼決定將點指派到哪個質心

我們一般將點指派到離它最近的質心,而我們一般用‘鄰近性’來量化所考慮的數據的‘最近’的概念。對於不同的數據我們用不同的鄰近性來考量,例如:歐式空間裏我們使用歐式距離,文檔數據嘗試用Jaccard度量。

3.怎麼計算質心
當鄰近性度量爲歐幾里得距離時,我們使用誤差平方和(SSE)來作爲度量聚類質量的目標函數。
在這裏插入圖片描述
我們選擇質心的目標,就是能夠最小化這個目標函數,而通過數學證明可以得到,這個目標函數最小時,質心爲該簇內點的均值。下面是對於不同鄰近函數的情況,其目標函數和質心的變化。在這裏插入圖片描述

三.K均值的附加問題

1.時間和空間複雜度
m是點數,n是屬性數,I是收斂所需要的迭代次數。
空間複雜度O((m+K)n),時間複雜度O(IKmn)

2.處理空簇
如果所有的點在指派步驟都未分配到某個簇,就會得到空簇。如果這種情況發生,則需要某種策略來選擇一個替補質心,否則平方誤差會變大。
選擇替補質心的方法:1.選擇一個距離任何質心都最遠的點。2.從具有最大的SSE的簇中選擇一個替補質心。

3.用後處理降低SSE
一般來說,我們希望在不增加簇的情況下,降低SSE。這是有可能的,因爲K均值常常收斂於局部極小。常用方法就是交替的使簇進行分裂和合並。即在分裂階段,將簇分開,在合併階段將簇合並,交替進行。

分裂簇

  1. 分裂一個簇:選擇具有最大SSE的簇進行分裂
  2. 引入新的質心:選擇離所有質心最遠的點或者在具有最大SSE的簇中隨機選擇質心

合併簇

1.拆散一個簇:刪除簇的對於質心,將簇中的點重新指派的其它簇。一般刪除的都是具有最大SSE的簇
2.合併兩個簇:通常選擇質心最接近的兩個簇。

4.增量地更新質心

可以在點到簇的每次指派之後,增量的更新質心,而不是所有的點都指派到簇中之後才更新簇。
使用增量更新,確保不會產生空簇,因爲所有的簇都從單個點開始,並且如果每個簇中有一個點,則該點總是被重新指派到相同的簇。

參考書籍:
《數據挖掘導論》由人民郵電出版社出版,[美]作者Pang-Ning Tan,Michael Steinbach,Vipin Kumar 合著

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