原創(chuàng) | 一文讀懂K均值(K-Means)聚類算法
眾所周知,機(jī)器學(xué)習(xí)算法可分為監(jiān)督學(xué)習(xí)(Supervised learning)和無(wú)監(jiān)督學(xué)習(xí)(Unsupervised learning)。
監(jiān)督學(xué)習(xí)常用于分類和預(yù)測(cè)。是讓計(jì)算機(jī)去學(xué)習(xí)已經(jīng)創(chuàng)建好的分類模型,使分類(預(yù)測(cè))結(jié)果更好的接近所給目標(biāo)值,從而對(duì)未來(lái)數(shù)據(jù)進(jìn)行更好的分類和預(yù)測(cè)。因此,數(shù)據(jù)集中的所有變量被分為特征和目標(biāo),對(duì)應(yīng)模型的輸入和輸出;數(shù)據(jù)集被分為訓(xùn)練集和測(cè)試集,分別用于訓(xùn)練模型和模型測(cè)試與評(píng)估。常見(jiàn)的監(jiān)督學(xué)習(xí)算法有Regression(回歸)、KNN和SVM(分類)。
無(wú)監(jiān)督學(xué)習(xí)常用于聚類。輸入數(shù)據(jù)沒(méi)有標(biāo)記,也沒(méi)有確定的結(jié)果,而是通過(guò)樣本間的相似性對(duì)數(shù)據(jù)集進(jìn)行聚類,使類內(nèi)差距最小化,類間差距最大化。無(wú)監(jiān)督學(xué)習(xí)的目標(biāo)不是告訴計(jì)算機(jī)怎么做,而是讓它自己去學(xué)習(xí)怎樣做事情,去分析數(shù)據(jù)集本身。常用的無(wú)監(jiān)督學(xué)習(xí)算法有K-means、 PCA(Principle Component Analysis)。
聚類算法又叫做“無(wú)監(jiān)督分類”,其目的是將數(shù)據(jù)劃分成有意義或有用的組(或簇)。這種劃分可以基于業(yè)務(wù)需求或建模需求來(lái)完成,也可以單純地幫助我們探索數(shù)據(jù)的自然結(jié)構(gòu)和分布。比如在商業(yè)中,如果手頭有大量的當(dāng)前和潛在客戶的信息,可以使用聚類將客戶劃分為若干組,以便進(jìn)一步分析和開(kāi)展?fàn)I銷活動(dòng)。再比如,聚類可以用于降維和矢量量化,可以將高維特征壓縮到一列當(dāng)中,常常用于圖像、聲音和視頻等非結(jié)構(gòu)化數(shù)據(jù),可以大幅度壓縮數(shù)據(jù)量。
聚類算法與分類算法的比較:
聚類 | 分類 | |
核心 | 將數(shù)據(jù)分成多個(gè)組,探索各個(gè)組的數(shù)據(jù)是否有關(guān)聯(lián) | 從已經(jīng)分組的數(shù)據(jù)中去學(xué)習(xí),把新數(shù)據(jù)放到已經(jīng)分好的組中去 |
學(xué)習(xí)類型 | 無(wú)監(jiān)督學(xué)習(xí)算法,不需要標(biāo)簽進(jìn)行訓(xùn)練 | 有監(jiān)督學(xué)習(xí)算法,需要標(biāo)簽進(jìn)行訓(xùn)練 |
典型算法 | K-Means、DBSCAN、層次聚類等 | K近鄰(KNN)、決策樹(shù)、樸素貝葉斯、邏輯回歸、支持向量機(jī)、隨機(jī)森林等 |
算法輸出 | 無(wú)需預(yù)設(shè)類別,類別數(shù)不確定,類別在學(xué)習(xí)中生成 | 預(yù)設(shè)類別,類別數(shù)不變,適合類別或分類體系已經(jīng)確定的場(chǎng)合 |
K-Means詳解
1. K-Means的工作原理
作為聚類算法的典型代表,K-Means可以說(shuō)是最簡(jiǎn)單的聚類算法,那它的聚類工作原理是什么呢?
概念1:簇與質(zhì)心 |
K-Means算法是將一組N個(gè)樣本的特征矩陣X劃分為K個(gè)無(wú)交集的簇,直觀上來(lái)看是簇是一組一組聚集在一起的數(shù)據(jù),在一個(gè)簇中的數(shù)據(jù)就認(rèn)為是同一類。簇就是聚類的結(jié)果表現(xiàn)。簇中所有數(shù)據(jù)的均值通常被稱為這個(gè)簇的“質(zhì)心”(Centroids)。在一個(gè)二維平面中,一簇?cái)?shù)據(jù)點(diǎn)的質(zhì)心的橫坐標(biāo)就是這一簇?cái)?shù)據(jù)點(diǎn)的橫坐標(biāo)的均值,質(zhì)心的縱坐標(biāo)就是這一簇?cái)?shù)據(jù)點(diǎn)的縱坐標(biāo)的均值。同理可推廣至高維空間。 |
在K-Means算法中,簇的個(gè)數(shù)K是一個(gè)超參數(shù),需要人為輸入來(lái)確定。K-Means的核心任務(wù)就是根據(jù)設(shè)定好的K,找出K個(gè)最優(yōu)的質(zhì)心,并將離這些質(zhì)心最近的數(shù)據(jù)分別分配到這些質(zhì)心代表的簇中去。具體過(guò)程可以總結(jié)如下:
a.首先隨機(jī)選取樣本中的K個(gè)點(diǎn)作為聚類中心;b.分別算出樣本中其他樣本距離這K個(gè)聚類中心的距離,并把這些樣本分別作為自己最近的那個(gè)聚類中心的類別;c.對(duì)上述分類完的樣本再進(jìn)行每個(gè)類別求平均值,求解出新的聚類質(zhì)心;d.與前一次計(jì)算得到的K個(gè)聚類質(zhì)心比較,如果聚類質(zhì)心發(fā)生變化,轉(zhuǎn)過(guò)程b,否則轉(zhuǎn)過(guò)程e;e.當(dāng)質(zhì)心不發(fā)生變化時(shí)(當(dāng)我們找到一個(gè)質(zhì)心,在每次迭代中被分配到這個(gè)質(zhì)心上的樣本都是一致的,即每次新生成的簇都是一致的,所有的樣本點(diǎn)都不會(huì)再?gòu)囊粋€(gè)簇轉(zhuǎn)移到另一個(gè)簇,質(zhì)心就不會(huì)變化了),停止并輸出聚類結(jié)果。K-Means算法計(jì)算過(guò)程如圖1 所示:
圖1 K-Means算法計(jì)算過(guò)程
圖2 K-Means迭代示意圖
例題:
1. 對(duì)于以下數(shù)據(jù)點(diǎn),請(qǐng)采用k-means方法進(jìn)行聚類(手工計(jì)算)。假設(shè)聚類簇?cái)?shù)k=3,初始聚類簇中心分別為數(shù)據(jù)點(diǎn)2、數(shù)據(jù)點(diǎn)3、數(shù)據(jù)點(diǎn)5。
數(shù)據(jù)點(diǎn)1 | -5.379713 | -3.362104 |
數(shù)據(jù)點(diǎn)2 | -3.487105 | -1.724432 |
數(shù)據(jù)點(diǎn)3 | 0.450614 | -3.302219 |
數(shù)據(jù)點(diǎn)4 | -0.392370 | -3.963704 |
數(shù)據(jù)點(diǎn)5 | -3.453687 | 3.424321 |
解:
正在進(jìn)行第1次迭代初始質(zhì)心為B、C、EAB = 2.502785AC = 5.830635AE = 7.054443DB = 3.819911DC = 1.071534DE = 7.997158因此,第一簇:{A,B};第二簇:{C,D};第三簇:{E}即[array([-5.379713, -3.362104]), array([-3.487105, -1.724432])][array([ 0.450614, -3.302219]), array([-0.39237, -3.963704])][array([-3.45368, 3.424321])]所以第一簇的質(zhì)心為F:[-4.433409 -2.543268]第二簇的質(zhì)心為G:[ 0.029122 -3.6329615]第三簇的質(zhì)心為H:[-3.45368 3.424321]###########################################################正在進(jìn)行第2次迭代AF = 1.251393AG = 5.415613AH = 7.054443BF = 1.251393BG = 4.000792BH = 5.148861CF = 4.942640CG = 0.535767CH = 7.777522DF = 4.283414DG = 0.535767DH = 7.997158EF = 6.047478EG = 7.869889EH = 0.000000因此,第一簇:{A,B};第二簇:{C,D};第三簇:{E}即[array([-5.379713, -3.362104]), array([-3.487105, -1.724432])][array([ 0.450614, -3.302219]), array([-0.39237, -3.963704])][array([-3.45368, 3.424321])]所以第一簇的質(zhì)心為:[-4.433409 -2.543268]第二簇的質(zhì)心為:[ 0.029122 -3.6329615]第三簇的質(zhì)心為:[-3.45368 3.424321]###########################################################由于三個(gè)簇的成員保持不變,聚類結(jié)束
綜上所述:第一簇:{A,B};第二簇:{C,D};第三簇:{E}
2. 簇內(nèi)誤差平方和的定義
聚類算法聚出的類有什么含義呢?這些類有什么樣的性質(zhì)?
我們認(rèn)為,被分在同一個(gè)簇中的數(shù)據(jù)是有相似性的,而不同簇中的數(shù)據(jù)是不同的,當(dāng)聚類完畢之后,接下來(lái)需要分別研究每個(gè)簇中的樣本都有什么樣的性質(zhì),從而根據(jù)業(yè)務(wù)需求制定不同的商業(yè)或者科技策略。聚類算法追求“簇內(nèi)差異小,簇外差異大”。而這個(gè) “差異”便是通過(guò)樣本點(diǎn)到其簇質(zhì)心的距離來(lái)衡量。
對(duì)于一個(gè)簇來(lái)說(shuō),所有樣本點(diǎn)到質(zhì)心的距離之和越小,便認(rèn)為這個(gè)簇中的樣本越相似,簇內(nèi)差異越小。而距離的衡量方法有多種,令x表示簇中的一個(gè)樣本點(diǎn),μ表示該簇中的質(zhì)心,n表示每個(gè)樣本點(diǎn)中的特征數(shù)目,i表示組成點(diǎn)x的每個(gè)特征,則該樣本點(diǎn)到質(zhì)心的距離可以由以下距離來(lái)度量:
如采用歐幾里得距離,則一個(gè)簇中所有樣本點(diǎn)到質(zhì)心的距離的平方和為:
其中,m為一個(gè)簇中樣本的個(gè)數(shù),j是每個(gè)樣本的編號(hào)。這個(gè)公式被稱為簇內(nèi)平方和(Cluster Sum of Square),又叫做Inertia。而將一個(gè)數(shù)據(jù)集中的所有簇的簇內(nèi)平方和相加,就得到了整體平方和(Total Cluster Sum of Square),又叫做Total Inertia。Total Inertia越小,代表著每個(gè)簇內(nèi)樣本越相似,聚類的效果就越好。因此K-Means追求的是:求解能夠讓Inertia最小化的質(zhì)心。實(shí)際上,在質(zhì)心不斷變化不斷迭代的過(guò)程中,總體平方和是越來(lái)越小的。我們可以通過(guò)數(shù)學(xué)來(lái)證明,當(dāng)整體平方和達(dá)到最小值的時(shí)候,質(zhì)心就不再發(fā)生變化了。如此,K-Means的求解過(guò)程,就變成了一個(gè)最優(yōu)化問(wèn)題。
在K-Means中,在一個(gè)固定的簇?cái)?shù)K條件下,最小化總體平方和來(lái)求解最佳質(zhì)心,并基于質(zhì)心的存在去進(jìn)行聚類。兩個(gè)過(guò)程十分相似,并且整體距離平方和的最小值其實(shí)可以使用梯度下降來(lái)求解。
大家可以發(fā)現(xiàn), Inertia是基于歐幾里得距離的計(jì)算公式得來(lái)的。實(shí)際上,也可以使用其他距離,每個(gè)距離都有自己對(duì)應(yīng)的Inertia。在過(guò)去的經(jīng)驗(yàn)中,已經(jīng)總結(jié)出不同距離所對(duì)應(yīng)的質(zhì)心選擇方法和Inertia,在K-Means中,只要使用了正確的質(zhì)心和距離組合,無(wú)論使用什么距離,都可以達(dá)到不錯(cuò)的聚類效果。
距離度量 | 質(zhì)心 | Inertial |
歐幾里得距離 | 均值 | 最小化每個(gè)樣本點(diǎn)到質(zhì)心的歐式距離之和 |
曼哈頓距離 | 中位數(shù) | 最小化每個(gè)樣本點(diǎn)到質(zhì)心的曼哈頓距離之和 |
余弦距離 | 均值 | 最小化每個(gè)樣本點(diǎn)到質(zhì)心的余弦距離之和 |
3. K-Means算法的時(shí)間復(fù)雜度
眾所周知,算法的復(fù)雜度分為時(shí)間復(fù)雜度和空間復(fù)雜度,時(shí)間復(fù)雜度是指執(zhí)行算法所需要的計(jì)算工作量,常用大O符號(hào)表述;而空間復(fù)雜度是指執(zhí)行這個(gè)算法所需要的內(nèi)存空間。如果一個(gè)算法的效果很好,但需要的時(shí)間復(fù)雜度和空間復(fù)雜度都很大,那將會(huì)在算法的效果和所需的計(jì)算成本之間進(jìn)行權(quán)衡。
K-Means算法是一個(gè)計(jì)算成本很大的算法。K-Means算法的平均復(fù)雜度是O(k*n*T),其中k是超參數(shù),即所需要輸入的簇?cái)?shù),n是整個(gè)數(shù)據(jù)集中的樣本量,T是所需要的迭代次數(shù)。在最壞的情況下,KMeans的復(fù)雜度可以寫作O(n(k+2)/p),其中n是整個(gè)數(shù)據(jù)集中的樣本量,p是特征總數(shù)。
4. 聚類算法的模型評(píng)估指標(biāo)
不同于分類模型和回歸,聚類算法的模型評(píng)估不是一件簡(jiǎn)單的事。在分類中,有直接結(jié)果(標(biāo)簽)的輸出,并且分類的結(jié)果有正誤之分,所以需要通過(guò)使用預(yù)測(cè)的準(zhǔn)確度、混淆矩陣、ROC曲線等指標(biāo)來(lái)進(jìn)行評(píng)估,但無(wú)論如何評(píng)估,都是在評(píng)估“模型找到正確答案”的能力。而在回歸中,由于要擬合數(shù)據(jù),可以通過(guò)SSE均方誤差、損失函數(shù)來(lái)衡量模型的擬合程度。但這些衡量指標(biāo)都不能夠用于聚類。
聚類模型的結(jié)果不是某種標(biāo)簽輸出,并且聚類的結(jié)果是不確定的,其優(yōu)劣由業(yè)務(wù)需求或者算法需求來(lái)決定,并且沒(méi)有永遠(yuǎn)的正確答案。那如何衡量聚類的效果呢?K-Means的目標(biāo)是確?!按貎?nèi)差異小,簇外差異大”,所以可以通過(guò)衡量簇內(nèi)差異來(lái)衡量聚類的效果。前面講過(guò),Inertia是用距離來(lái)衡量簇內(nèi)差異的指標(biāo),因此,是否可以使用Inertia來(lái)作為聚類的衡量指標(biāo)呢?
「肘部法(手肘法)認(rèn)為圖3的拐點(diǎn)就是k的最佳值」
手肘法核心思想:隨著聚類數(shù)k的增大,樣本劃分會(huì)更加精細(xì),每個(gè)簇的聚合程度會(huì)逐漸提高,那么Inertia自然會(huì)逐漸變小。當(dāng)k小于真實(shí)聚類數(shù)時(shí),由于k的增大會(huì)大幅增加每個(gè)簇的聚合程度,故Inertia的下降幅度會(huì)很大,而當(dāng)k到達(dá)真實(shí)聚類數(shù)時(shí),再增加k所得到的聚合程度回報(bào)會(huì)迅速變小,所以Inertia的下降幅度會(huì)驟減,然后隨著k值的繼續(xù)增大而趨于平緩,也就是說(shuō)Inertia和k的關(guān)系圖是一個(gè)手肘的形狀,而這個(gè)肘部對(duì)應(yīng)的k值就是數(shù)據(jù)的真實(shí)聚類數(shù)。例如下圖,肘部對(duì)于的k值為3(曲率最高),故對(duì)于這個(gè)數(shù)據(jù)集的聚類而言,最佳聚類數(shù)應(yīng)該選3。
圖3 手肘法
那就引出一個(gè)問(wèn)題:Inertia越小模型越好嗎?答案是可以的,但是Inertia這個(gè)指標(biāo)又有其缺點(diǎn)和極限:
a.它的計(jì)算太容易受到特征數(shù)目的影響。b.它不是有界的,Inertia是越小越好,但并不知道何時(shí)達(dá)到模型的極限,能否繼續(xù)提高。c.它會(huì)受到超參數(shù)K的影響,隨著K越大,Inertia必定會(huì)越來(lái)越小,但并不代表模型效果越來(lái)越好。d.Inertia 對(duì)數(shù)據(jù)的分布有假設(shè),它假設(shè)數(shù)據(jù)滿足凸分布,并且它假設(shè)數(shù)據(jù)是各向同性的,所以使用Inertia作為評(píng)估指標(biāo),會(huì)讓聚類算法在一些細(xì)長(zhǎng)簇、環(huán)形簇或者不規(guī)則形狀的流形時(shí)表現(xiàn)不佳。
那又可以使用什么指標(biāo)來(lái)衡量模型效果呢?
(1)輪廓系數(shù)
在99%的情況下,是對(duì)沒(méi)有真實(shí)標(biāo)簽的數(shù)據(jù)進(jìn)行探索,也就是對(duì)不知道真正答案的數(shù)據(jù)進(jìn)行聚類。這樣的聚類,是完全依賴于評(píng)價(jià)簇內(nèi)的稠密程度(簇內(nèi)差異?。┖痛亻g的離散程度(簇外差異大)來(lái)評(píng)估聚類的效果。其中輪廓系數(shù)是最常用的聚類算法的評(píng)價(jià)指標(biāo)。它是對(duì)每個(gè)樣本來(lái)定義的,它能夠同時(shí)衡量:
a)樣本與其自身所在的簇中的其他樣本的相似度a,等于樣本與同一簇中所有其他點(diǎn)之間的平均距離。b)樣本與其他簇中的樣本的相似度b,等于樣本與下一個(gè)最近的簇中的所有點(diǎn)之間的平均距離。根據(jù)聚類“簇內(nèi)差異小,簇外差異大”的原則,我們希望b永遠(yuǎn)大于a,并且大得越多越好。單個(gè)樣本的輪廓系數(shù)計(jì)算為:
公式進(jìn)行展開(kāi)為:
很容易理解輪廓系數(shù)范圍是(-1,1),其中值越接近1表示樣本與自己所在的簇中的樣本很相似,并且與其他簇中的樣本不相似,當(dāng)樣本點(diǎn)與簇外的樣本更相似的時(shí)候,輪廓系數(shù)就為負(fù)。當(dāng)輪廓系數(shù)為0時(shí),則代表兩個(gè)簇中的樣本相似度一致,兩個(gè)簇本應(yīng)該是一個(gè)簇。
如果一個(gè)簇中的大多數(shù)樣本具有比較高的輪廓系數(shù),簇會(huì)有較高的總輪廓系數(shù),則整個(gè)數(shù)據(jù)集的平均輪廓系數(shù)越高,表明聚類是合適的;如果許多樣本點(diǎn)具有低輪廓系數(shù)甚至負(fù)值,則聚類是不合適的,聚類的超參數(shù)K可能設(shè)定得太大或者太小。
輪廓系數(shù)有很多優(yōu)點(diǎn),它在有限空間中取值,使得我們對(duì)模型的聚類效果有一個(gè)“參考”。并且,輪廓系數(shù)對(duì)數(shù)據(jù)的分布沒(méi)有限定,因此在很多數(shù)據(jù)集上都表現(xiàn)良好,它在每個(gè)簇的分割比較清晰時(shí)表現(xiàn)最好。但輪廓系數(shù)也有缺陷,它在凸型的類上表現(xiàn)會(huì)虛高,比如基于密度進(jìn)行的聚類,或通過(guò)DBSCAN獲得的聚類結(jié)果,如果使用輪廓系數(shù)來(lái)衡量,則會(huì)表現(xiàn)出比真實(shí)聚類效果更高的分?jǐn)?shù)。
(2)卡林斯基-哈拉巴斯指數(shù)
除了最常用的輪廓系數(shù),還有卡林斯基-哈拉巴斯指數(shù)(Calinski-Harabaz Index,簡(jiǎn)稱CHI,也被稱為方差比標(biāo)準(zhǔn))、戴維斯-布爾丁指數(shù)(Davies-Bouldin)以及權(quán)變矩陣(Contingency Matrix)可以使用。在這里不多介紹,感興趣的讀者可以自己學(xué)習(xí)。
5. 初始質(zhì)心的問(wèn)題
在K-Means中有一個(gè)重要的環(huán)節(jié),就是放置初始質(zhì)心。如果有足夠的時(shí)間,K-means一定會(huì)收斂,但I(xiàn)nertia可能收斂到局部最小值。是否能夠收斂到真正的最小值很大程度上取決于質(zhì)心的初始化。
初始質(zhì)心放置的位置不同,聚類的結(jié)果很可能也會(huì)不一樣,一個(gè)好的質(zhì)心選擇可以讓K-Means避免更多的計(jì)算,讓算法收斂穩(wěn)定且更快。在之前講解初始質(zhì)心的放置時(shí),是采用“隨機(jī)”的方法在樣本點(diǎn)中抽取k個(gè)樣本作為初始質(zhì)心,這種方法顯然不符合“穩(wěn)定且更快”的需求。
為此,在sklearn中使用random_state參數(shù)來(lái)實(shí)現(xiàn)控制,確保每次生成的初始質(zhì)心都在相同位置,甚至可以畫學(xué)習(xí)曲線來(lái)確定最優(yōu)的random_state參數(shù)。
一個(gè)random_state對(duì)應(yīng)一個(gè)質(zhì)心隨機(jī)初始化的隨機(jī)數(shù)種子。如果不指定隨機(jī)數(shù)種子,則sklearn中的K-Means并不會(huì)只選擇一個(gè)隨機(jī)模式扔出結(jié)果,而會(huì)在每個(gè)隨機(jī)數(shù)種子下運(yùn)行多次,并使用結(jié)果最好的一個(gè)隨機(jī)數(shù)種子來(lái)作為初始質(zhì)心。
在sklearn中也可以使用參數(shù)n_init來(lái)選擇(每個(gè)隨機(jī)數(shù)種子下運(yùn)行的次數(shù)),可以增加這個(gè)參數(shù)n_init的值來(lái)增加每個(gè)隨機(jī)數(shù)種子下運(yùn)行的次數(shù)。
另外,為了優(yōu)化選擇初始質(zhì)心的方法,“k-means ++”能夠使得初始質(zhì)心彼此遠(yuǎn)離,以此來(lái)引導(dǎo)出比隨機(jī)初始化更可靠的結(jié)果。在sklearn中,使用參數(shù)init =‘k-means ++'來(lái)選擇使用k-means++作為質(zhì)心初始化的方案。
6. 聚類算法的迭代問(wèn)題
大家都知道,當(dāng)質(zhì)心不再移動(dòng),Kmeans算法就會(huì)停下來(lái)。在完全收斂之前,sklearn中也可以使用max_iter(最大迭代次數(shù))或者tol兩個(gè)參數(shù)來(lái)讓迭代提前停下來(lái)。有時(shí)候,當(dāng)n_clusters選擇不符合數(shù)據(jù)的自然分布,或者為了業(yè)務(wù)需求,必須要填入n_clusters數(shù)據(jù)提前讓迭代停下來(lái)時(shí),反而能夠提升模型的表現(xiàn)。
max_iter:整數(shù),默認(rèn)300,單次運(yùn)行的k-means算法的最大迭代次數(shù);tol:浮點(diǎn)數(shù),默認(rèn)1e-4,兩次迭代間Inertia下降的量,如果兩次迭代之間Inertia下降的值小于tol所設(shè)定的值,迭代就會(huì)停下。
7. K-Means算法的優(yōu)缺點(diǎn)
(1)K-Means算法的優(yōu)點(diǎn)
- 原理比較簡(jiǎn)單,實(shí)現(xiàn)也是很容易,收斂速度快;
- 聚類效果較優(yōu),算法的可解釋度比較強(qiáng)。
(2)K-Means算法的缺點(diǎn)
- K值的選取不好把握;
- 對(duì)于不是凸的數(shù)據(jù)集比較難收斂;
- 如果各隱含類別的數(shù)據(jù)不平衡,比如各隱含類別的數(shù)據(jù)量嚴(yán)重失衡,或者各隱含類別的方差不同,則聚類效果不佳;
- 采用迭代方法,得到的結(jié)果只是局部最優(yōu);
- 對(duì)噪音和異常點(diǎn)比較的敏感。
結(jié)論
K均值(K-Means)聚類算法原理簡(jiǎn)單,可解釋強(qiáng),實(shí)現(xiàn)方便,可廣泛應(yīng)用在數(shù)據(jù)挖掘、聚類分析、數(shù)據(jù)聚類、模式識(shí)別、金融風(fēng)控、數(shù)據(jù)科學(xué)、智能營(yíng)銷和數(shù)據(jù)運(yùn)營(yíng)等多個(gè)領(lǐng)域,有著廣泛的應(yīng)用前景。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。