聚类算法 K-Means 简介与入门
K-Means 算法是最簡單的一種聚類算法,屬于無監(jiān)督學習算法。
聚類和分類最大的不同在于:分類的目標是事先已知的,而聚類則不一樣,聚類事先不知道目標變量是什么,類別沒有像分類那樣被預先定義出來。
假設我們的樣本是 {x^(1), x^(2), x^(3),……, x^(m) },每個 x^(i) ∈ R^n,即它是一個維向量。現(xiàn)在用戶給定一個 k 值,要求將樣本聚類成 k 個類簇。在這里,我們把整個算法成為聚類算法,聚類算法的結(jié)果是一系列的類簇。
步驟:
輸入:樣本集 D,簇的數(shù)目 k,最大迭代次數(shù)N;
輸出:簇劃分( k 個簇,使平方誤差最小)
(1)為每個聚類選擇一個初始聚類中心;
(2)將樣本集按照最小距離原則分配到最鄰近聚類;
(3)使用每個聚類的樣本均值更新聚類中心;
(4)重復步驟(2)(3),直到聚類中心不再發(fā)生變化;
(5)輸出最終的聚類中心和 k 個簇劃分。
涉及距離的計算,最常用的距離是歐氏距離(Euclidean Distance),公式為:
此外,還有閔可夫斯基距離:
曼哈頓距離(也稱為城市街區(qū)距離,City Block Distance):
優(yōu)點:
(1) 算法簡單,容易實現(xiàn)
(2) 算法速度很快
(3) 對處理大數(shù)據(jù)集,該算法是相對可伸縮的和高效率的,因為它的復雜度大約是O(NKt),其中,N 為數(shù)據(jù)對象的數(shù)目,t 為迭代的次數(shù)。一般來說, K <<N ,t <<N。這個算法通常局部收斂。
(4) 算法嘗試找出使平方誤差函數(shù)值最小的k個劃分。當簇是密集的、球狀或團狀的,且簇與簇之間區(qū)別明顯時,聚類效果較好。
缺點:
(1) K是事先給定的,一個合適的 K 值難以估計。
(2) 在 K-Means 算法中,首先需要根據(jù)初始類簇中心來確定一個初始劃分,然后對初始劃分進行優(yōu)化。初始類簇中心的選擇對聚類結(jié)果有較大的影響。一旦選擇的不好,可能無法得到有效的聚類結(jié)果。可以使用遺傳算法來選擇合適的初始類簇中心。
(3) 算法需要不斷地進行樣本分類調(diào)整,不斷計算調(diào)整后的新的類簇中心,因此當數(shù)據(jù)量非常大的時,算法的時間開銷是非常大的。可以利用采樣策略,改進算法效率。也就是初始點的選擇,以及每一次迭代完成時對數(shù)據(jù)的調(diào)整,都是建立在隨機采樣的樣本數(shù)據(jù)的基礎之上,這樣可以提高算法的收斂速度。
總結(jié)
以上是生活随笔為你收集整理的聚类算法 K-Means 简介与入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络——差错控制
- 下一篇: 日常小问题汇总(1)