1. 程式人生 > >K-Means聚類演算法以及擴充套件演算法K-Modes、K-Prototype

K-Means聚類演算法以及擴充套件演算法K-Modes、K-Prototype

k-means聚類演算法是一種簡單易行,時間複雜度低的聚類演算法,特別是針對大規模的資料集。但其只能處理數值屬性限制了他的應用範圍,它的具體演算法步驟如下:

1.確立最終聚類處理得到簇的個數,如果有先驗知識,如知道一個數據集為有3類,則可設k=3。如果不清楚,有一些指導性方法可確定估計值;

2.選取k條初始記錄作為質心,k條記錄的歐式具體儘量大,說明記錄的相關性低,提高聚類效果;

3.從資料集讀取一條記錄,計算與k個質心的歐式距離,並歸併到距離最短的一個簇內,並更新簇的質心;重複第三部直至將資料集讀取完;

4.重新調整記錄所屬的簇,這一步也是比較難理解的。因為每個簇的質心隨著加入記錄而更新改變,因此導致原先屬於這個簇的記錄由於與現在改變後的另外一個簇的質心距離更短,所以也應該重新將它分配到更短距離的那個簇上。分配後更新所有簇的質心,不斷重複第四步知道沒有記錄重新分配。


K-means演算法2個核心問題:

1.度量記錄之間的相關性的計算公式,此處採用歐式距離

2.更新簇內質心的方法,此處採用平均值法,即means;

K-modes演算法是按照k-means演算法的核心內容進行修改,針對分類屬性的的1.度量。2.更新質心的問題而改進。具體如下

1.度量記錄之間的相關性D的計算公式是比較兩記錄之間,屬性相同為0,不同為1.並所有相加。因此D越大,即他的不相關程度越強(與歐式距離代表的意義是一樣的);

2.更新modes,使用一個簇的每個屬性出現頻率最大的那個屬性值作為代表簇的屬性值(如{[a,b] [a,c] [c,b] [b,c]})代表模式為[a,b]或者[a,c];

K-Prototype演算法是結合K-Means與K-modes演算法,針對混合屬性的,解決2個核心問題如下:


1.度量具有混合屬性的方法是,數值屬性採用K-means方法得到P1,分類屬性採用K-modes方法P2,那麼D=P1+a*P2,a是權重,如果覺得分類屬性重要,則增加a,否則減少a,a=0時即只有數值屬性

2.更新一個簇的中心的方法,方法是結合K-Means與K-modes的更新方法

總結:這三種方法將只針對數值屬性的k-means演算法擴充套件到可以解決分類屬性與混合屬性,實驗結果表明k-modes的演算法時間複雜度比其餘兩者低。三者時間複雜度成線性增長。但存在問題如下:

1.K值的確立

2.k-prototype中權重a的確立

3.k條初始記錄的選取

百科解釋:
k-modes演算法是在資料探勘中對分類屬性型資料的採用的聚類演算法。k-modes演算法是對k-means演算法的擴充套件。k-means演算法是在資料探勘領域中普遍應用的聚類演算法,它只能處理數值型資料,而不能處理分類屬性型資料。例如表示人的屬性有:姓名、性別、年齡、家庭住址等屬性。而k-modes演算法就能夠處理分類屬性型資料。k-modes演算法採用差異度來代替k-means演算法中的距離。k-modes演算法中差異度越小,則表示距離越小。一個樣本和一個聚類中心的差異度就是它們各個屬性不相同的個數,不相同則記為一,最後計算一的總和。這個和就是某個樣本到某個聚類中心的差異度。該樣本屬於差異度最小的聚類中心。