【機器學習】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、參考資料