【算法】K-Means聚类算法(k-平均或k-均值)
1.聚類算法和分類算法的區(qū)別
a)分類
分類(Categorization or Classification)就是按照某種標(biāo)準(zhǔn)給對象貼標(biāo)簽(label),再根據(jù)標(biāo)簽來區(qū)分歸類。
舉例:
假如你有一堆動物的頭像圖片樣本,想把它們進行分類,分成:貓,狗,魚等。當(dāng)在有新的動物圖片進來之后,能夠自動的識別出屬于哪一類,這就是分類,而貓,狗,魚等就是標(biāo)簽
b)聚類
聚類是指事先沒有“標(biāo)簽”而通過某種成團分析找出事物之間存在聚集性原因的過程。聚類是在沒有劃分類別的情況下,根據(jù)數(shù)據(jù)相似度進行樣本分組的一種方法。
與分類模型需要使用有類標(biāo)記樣本構(gòu)成的訓(xùn)練數(shù)據(jù)不同,聚類模型可以建立在無類標(biāo)記的數(shù)據(jù)上,是一種非監(jiān)督的學(xué)習(xí)算法。
舉例:
假如你有一堆數(shù)據(jù)樣本,想把這些數(shù)據(jù)分類,但是你也不知道怎么分,你只知道要分3類,4類或者其他更多。這時候就等于是把一堆零散的樣本聚成幾類。
c)總結(jié):分類和聚類最大的區(qū)別就是有無標(biāo)簽。
2.K-means屬于聚類算法
假設(shè)你有X1——Xi個樣本,想把它們分成Uk個中心
算法的步驟:
a).隨機的選擇U1---Uk個中心,用樣本Xi去減分別減這個中心值,得到距離類別中心最近的類別,歸為同一個簇。
b).將這個簇的中心值歸為這個簇的所有樣本的平均值,重新執(zhí)行第一步。
c).不斷進行迭代,也就是不斷的執(zhí)行a)和b)兩步,直到類別中心小于某個閾值也就是終止條件。
這些終止條件可以是:1)迭代次數(shù); 2)簇中心變化率 ;3)最小平方誤差
3.注意事項:
a).K-means算法是初始敏感的
如下圖:在初始選擇簇類點時,對后面的聚類影響很大,下面初始選擇4個紅點作為簇類中心,結(jié)果就變成了右邊這種情況了。并不是我們想要分成的四類
解決辦法:聚類完之后計算一下簇的均方誤差,如果某一個簇的均方誤差特別大,就可以判斷這個簇聚的不對,初值選的不行,把簇中心比較近的合成一類,重新再聚一遍
這種叫做二分K-Means聚類
b)異常點處理
K—Means算法是將簇中所有的均值作為質(zhì)心,若簇中含有異常點,將導(dǎo)致均值偏離嚴(yán)重。
例如:當(dāng)有一個數(shù)組:1,2,3,4,100的均值是22,顯然距離大多數(shù)數(shù)據(jù)比較遠(yuǎn)
解決辦法:該取中位數(shù)3為比較穩(wěn)妥。這種取中位數(shù)的為簇中心的算法叫K-Mediods聚類
4.總結(jié):
雖然有以下缺點:
a)不適合于發(fā)現(xiàn)非凸形狀的簇或者大小差別很大的簇
b)對噪聲和孤立點數(shù)據(jù)敏感
但是,K-Means聚類算法可以作為其他聚類算法的基礎(chǔ)
?
轉(zhuǎn)載于:https://www.cnblogs.com/liangxuehui/p/5804894.html
超強干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的【算法】K-Means聚类算法(k-平均或k-均值)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: corosync+pacemaker在c
- 下一篇: JAVA识别字符串是数字(英文)还是汉字