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