1. 程式人生 > >【機器學習】K-Means演算法的原理流程、程式碼實現及優缺點

【機器學習】K-Means演算法的原理流程、程式碼實現及優缺點

分類是根據樣本某些屬性或某類特徵(可以融合多類特徵),把樣本型別歸為已確定的某一類別中。機器學習中常見的分類演算法有:SVM(支援向量機)、KNN(最鄰近法)、Decision Tree(決策樹分類法)、Naive Bayes(樸素貝葉斯分類)、Neural Networks(神經網路法)等。

而分類作為一種監督學習方法,需要事先知道樣本的各種類別資訊。因此當對海量資料進行分類時,為了降低資料滿足分類演算法要求所需要的預處理代價,往往需要選擇非監督學習的聚類演算法。

K-Means Clustering(K均值聚類),就是最典型的聚類演算法之一,接下來一起進行該演算法的學習。

1、K-Means演算法原理

K-Means演算法思想:對給定的樣本集,事先確定聚類簇數K,讓簇內的樣本儘可能緊密分佈在一起,使簇間的距離儘可能大該演算法試圖使叢集資料分為n獨立資料樣本,使n組叢集間的方差相等,數學描述為最小化慣性或叢集內的平方和。K-Means作為無監督的聚類演算法,實現較簡單,聚類效果好,因此被廣泛使用。


2、K-Means步驟及流程

2.1、演算法步驟

輸入:樣本集D,簇的數目k,最大迭代次數N;

輸出:簇劃分(k個簇,使平方誤差最小);

演算法步驟:

(1)為每個聚類選擇一個初始聚類中心;

(2)將樣本集按照最小距離原則分配到最鄰近聚類;

(3)使用每個聚類的樣本均值更新聚類中心;

(4)重複步驟(2)、(3),直到聚類中心不再發生變化;

(5)輸出最終的聚類中心和k個簇劃分;

2.2、流程框圖:

3、K-Means程式碼實現

4、K-Means演算法優缺點

4.1、優點

(1)原理易懂、易於實現;

(2)當簇間的區別較明顯時,聚類效果較好;

4.2、缺點

(1)當樣本集規模大時,收斂速度會變慢;

(2)對孤立點資料敏感,少量噪聲就會對平均值造成較大影響;

(3)k的取值十分關鍵,對不同資料集,k選擇沒有參考性,需要大量實驗;

5、參考資料