k均值聚類算法,是一種無監(jiān)督算法,該算法的主要作用是將相似的樣本自動歸到一個(gè)類別中。所謂的無監(jiān)督算法,就是輸入樣本沒有對應(yīng)的輸出或標(biāo)簽,而聚類試圖將數(shù)據(jù)集中的樣本劃分為若干個(gè)通常是不相交的子集,每個(gè)子集稱為一個(gè)簇。k均值聚類簡單易懂而且非常有效,但是確定合理的k值和k個(gè)初始類簇中心點(diǎn)對于聚類效果的好壞有很大的影響。
1)基本原理
2)k的選擇及初始質(zhì)心
3)k均值的優(yōu)缺點(diǎn)
1.1 k均值聚類算法描述
k均值聚類算法中的一種,其中k表示類別數(shù),是一種通過均值對數(shù)據(jù)點(diǎn)進(jìn)行聚類的算法。適用于大樣本,但需要事先指定分為k個(gè)類。
原理:從n個(gè)數(shù)據(jù)對象任意選擇k個(gè)對象作為初始聚類中心,對剩余的其他對象,則根據(jù)它們與k個(gè)聚類中心的相似度(距離),分別將它們分配給與其最相似的(聚類中心所代表的)聚類;再計(jì)算每個(gè)所獲的新的聚類中心(該聚類中所有對象的均值);不斷重復(fù)這一過程,知道標(biāo)準(zhǔn)測度函數(shù)開始收斂為止。
k均值聚類的特點(diǎn):各聚類本身盡可能的緊湊,而各聚類之間盡可能的分開。
1.2 k均值算法步驟
2.1 k值的選取
對于一個(gè)給定沒有分類的數(shù)據(jù)集,最后具體應(yīng)該分為多少類,這確實(shí)時(shí)一個(gè)讓人頭痛的問題。要使k均值最后分類結(jié)果最好,也就是要使k均值最小化,是要最小化所有的數(shù)據(jù)點(diǎn)與其所關(guān)聯(lián)的聚類中心點(diǎn)之間的距離之和,因此,我們可以設(shè)計(jì)k均值的代價(jià)函數(shù)為:
而k值在這里取到了重要作用。據(jù)統(tǒng)計(jì)發(fā)現(xiàn)k值的增加,其數(shù)據(jù)的代價(jià)損失是不斷變小,如圖,我們發(fā)現(xiàn)在k=3時(shí),代價(jià)函數(shù)隨著k值變化的幅度顯著降低,在k>3之后所帶來的作用也沒有特別明顯,所以我們可以選擇k=3作為我們的聚類數(shù)目。
但實(shí)際應(yīng)用中,k值的變換規(guī)律都不是和上圖一樣存在突變點(diǎn),即拐點(diǎn)。那么這時(shí),k值的選擇主要還是根據(jù)經(jīng)驗(yàn)以及利用k均值聚類的目的來決定。
2.2聚類中心的初始化
一般,在實(shí)際應(yīng)用中,我們都是采取隨機(jī)產(chǎn)生k個(gè)點(diǎn)作為初始的聚類中心,其原因是,簡單快捷。
但k個(gè)初始化的質(zhì)心的位置選擇對最后的聚類結(jié)果和運(yùn)行時(shí)間都有很大的影響,因此需要選擇合適的k個(gè)質(zhì)心。如果僅僅是完全隨機(jī)的選擇,有可能導(dǎo)致算法收斂很慢。k-means++算法就是對k均值隨機(jī)初始化質(zhì)心方法的優(yōu)化。
k-means++算法對于初始化質(zhì)心的優(yōu)化策略也很簡單,如下:
以下是一組用戶的年齡數(shù)據(jù)
我們將K值定義為2對用戶進(jìn)行聚類,并隨機(jī)選擇16和22作為兩個(gè)類別的初始質(zhì)心。
計(jì)算距離并劃分?jǐn)?shù)據(jù)
我們以圖的形式展示聚類的過程,在這組年齡數(shù)據(jù)中,我們選擇16和22作為兩個(gè)類別的初始質(zhì)心,并通過計(jì)算所有用戶的年齡值與初始質(zhì)心的距離對用戶進(jìn)行第一次分類。
通過計(jì)算每個(gè)用戶年齡分別與兩個(gè)初始質(zhì)心的距離,這里我們以黑色實(shí)心圓點(diǎn)表示兩者距離較大,如表2.2.3,第一個(gè)數(shù)據(jù)15,到初始初始質(zhì)心點(diǎn)16的距離為1,到第二個(gè)初始質(zhì)心22的距離為7,相比之下,15與16的距離更近,近的距離以空心圓點(diǎn)標(biāo)記。因此15這個(gè)年齡被劃分到質(zhì)心點(diǎn)為16的一組中,如果年齡數(shù)據(jù)點(diǎn)到兩個(gè)初始質(zhì)心的距離相等時(shí),可任意劃分到這兩組中,例如,數(shù)據(jù)19到16和22的距離都為3,在這里,我們將它劃分到了22中。
上表,我們按歐式距離最小,即相似程度最高對數(shù)據(jù)分為組后,分別計(jì)算分組中數(shù)據(jù)的均值,得分別為15.33和36.25,并以這兩個(gè)均值作為新的質(zhì)心。用新的質(zhì)心代替原有的初始質(zhì)心,迭代計(jì)算每個(gè)年齡數(shù)據(jù)點(diǎn)到新質(zhì)心的距離,直到新的質(zhì)心和上一次的質(zhì)心相同為止。
表2.2.4,以年齡數(shù)據(jù)點(diǎn)到新質(zhì)心的距離值完成分組后,計(jì)算兩組的均值,為18.56和45.9,年齡數(shù)據(jù)點(diǎn)22到18.56的距離為3.44,到45.9的距離為23.9。因此年齡數(shù)據(jù)點(diǎn)22分配到質(zhì)心為18.56的分組中。
這兩個(gè)均值與上一次的質(zhì)心結(jié)果不一樣,故又用新得到的均值代替原來的質(zhì)心。在新的質(zhì)心下,計(jì)算數(shù)據(jù)點(diǎn)到新質(zhì)心的距離,并對比數(shù)據(jù)點(diǎn)到兩個(gè)新質(zhì)心的距離,選擇較小的距離值來確定數(shù)據(jù)點(diǎn)的分組。
表2.2.5,計(jì)算出的新的均值為19.50和47.89,與原來的均值不同,故將新均值代替原有均值作為現(xiàn)在的質(zhì)心。
算法停止條件
開始計(jì)算的第一步,我們就說迭代計(jì)算每個(gè)數(shù)據(jù)到新質(zhì)心的距離,直到新質(zhì)心和原質(zhì)心相同,算法就結(jié)束。使用上一步分組得到的均值19.5和47.89作為新質(zhì)心,并計(jì)算年齡數(shù)據(jù)點(diǎn)到新質(zhì)心的距離,以下計(jì)算結(jié)果。
使用質(zhì)心為19.50和47.89進(jìn)行數(shù)據(jù)分組,并計(jì)算每組的均值作為新的質(zhì)心,從表2.2.6可知,這里的均值和原質(zhì)心相等,也就是說新質(zhì)心與原質(zhì)心相同,都是19.50和47.89。這時(shí)算法停止計(jì)算,年齡數(shù)據(jù)點(diǎn)被劃分為兩類,對應(yīng)取值區(qū)間為15-28和35-65.這就是k均值聚類的一個(gè)全過程。
3.1 k均值聚類的優(yōu)點(diǎn)
1)原理簡單,容易實(shí)現(xiàn)
2)可解釋性較強(qiáng)
3)聚類效果較優(yōu)
3.2 k均值聚類的缺點(diǎn):
1)K值很難確定
2)對噪音和異常點(diǎn)敏感
3)需樣本存在均值(限定數(shù)據(jù)種類)
4)采用迭代方法,得到的結(jié)果很有可能是局部最優(yōu)
5)對于非凸數(shù)據(jù)集或類別規(guī)模差異太大的數(shù)據(jù)效果不好
1)股票k線聚類
2)商業(yè)銀行客戶分類
3)葡萄酒分級
4)高新技術(shù)信用評級
參考文獻(xiàn)
[1] https://www.cnblogs.com/zhzhang/p/5437778.html
[2] https://blog.csdn.net/stayfoolish_fan/article/details/51888717
[3] https://blog.51cto.com/janwool/2058124
[4] https://blog.csdn.net/qq_42828404/article/details/81906809
[5] https://blog.csdn.net/Dhane/article/details/86661208
[6] https://www.cnblogs.com/bourneli/p/3645049.html
(部分文字、圖片來自網(wǎng)絡(luò),如涉及侵權(quán),請及時(shí)與我們聯(lián)系,我們會在第一時(shí)間刪除或處理侵權(quán)內(nèi)容。電話:4006770986 負(fù)責(zé)人:張明)