1.選取個點做爲初始聚集的簇心(也可選擇非樣本點);
2.分別計算每個樣本點到 個簇核心的距離(這裏的距離一般取歐氏距離或餘弦距離),找到離該點最近的簇核心,將它歸屬到對應的簇;
3.所有點都歸屬到簇之後, 個點就分爲了個簇。之後重新計算每個簇的重心(平均距離中心),將其定爲新的「簇核心」;
4.反覆 反復迭代 2 - 3 步驟,直到達到某個中止條件。
注:常用的中止條件有迭代次數、最小平方誤差、簇中心點變化率;
簡單快速,適合常規數據集
1.值難以確定
2.對初始簇中心點是敏感的
3.複雜度與樣本成線性關係
4.很難發現任意形狀的簇
5.特殊值(離羣值或稱爲異常值)對模型的影響比較大。
通過計算誤差平方和
其中,是第個簇,是中的樣本點,是的質心(中所有樣本的均值),是所有樣本的聚類誤差,代表了聚類效果的好壞。
隨着聚類數k的增大,樣本劃分會更加精細,每個簇的聚合程度會逐漸提高,那麼誤差平方和自然會逐漸變小。並且,當小於真實聚類數時,由於的增大會大幅增加每個簇的聚合程度,故的下降幅度會很大,而當到達真實聚類數時,再增加所得到的聚合程度回報會迅速變小,所以的下降幅度會驟減,然後隨着值的繼續增大而趨於平緩,也就是說和的關係圖是一個手肘的形狀,而這個肘部對應的值就是數據的真實聚類數。當然,這也是該方法被稱爲手肘法的原因。
通過計算輪廓係數
計算樣本到同簇其他樣本的平均距離。 越小,說明樣本越應該被聚類到該簇。將 稱爲樣本i的簇內不相似度。
計算樣本到其他某簇的所有樣本的平均距離,稱爲樣本與簇 的不相似度。定義爲樣本的簇間不相似度:。
接近1,則說明樣本聚類合理。
接近-1,則說明樣本更應該分類到另外的簇。
若si 近似爲0,則說明樣本在兩個簇的邊界上。
求出所有樣本的輪廓係數後再求平均值就得到了平均輪廓係數。平均輪廓係數的取值範圍爲,且簇內樣本的距離越近,簇間樣本距離越遠,平均輪廓係數越大,聚類效果越好。那麼,很自然地,平均輪廓係數最大的k便是最佳聚類數。
顧名思義,主要有兩種隨機選取的方式:
1.隨機產生數據大小範圍內的個點作爲初始的簇類中心點。
2.隨機選取個原始樣本點作爲初始的聚類中心點。
1.從輸入的數據點集合中隨機選擇一個點作爲第一個聚類中心
2.對於數據集中的每一個點,計算它與最近聚類中心(指已選擇的聚類中心)的距離
3.從較大的點中,隨機選取一點作爲聚類中心
4.重複2和3直到個聚類中心被選出來
選用其它的聚類演算法(如層次聚類或Canopy演算法)進行初始聚類,然後從個類別中分別隨機選取個點,來作爲kmeans的初始聚類中心點