【零基础系列】K-Means聚类算法
本文意圖
目錄
本文意圖
第一部分? K-Means步驟
1.1 什么是聚類?
1.2 K-Means詳細(xì)步驟
1.2.1 目標(biāo)函數(shù)
1.2.2 隨機(jī)初始化簇心
1.2.3 數(shù)據(jù)點(diǎn)分簇
1.2.4 重新計(jì)算簇心
1.2.5 迭代過程
第二部分 避免局部最優(yōu)
2.1 隨機(jī)初始化會(huì)導(dǎo)致什么問題?
2.2 用實(shí)驗(yàn)說明
2.3 如何解決隨機(jī)結(jié)果不好的問題?
2.4 實(shí)驗(yàn)中的一些其他細(xì)節(jié)
2.4.1 “距離”度量方式
2.4.2 簇心數(shù)量K的選取
第三部分 平衡聚類
3.1?-balance聚類
3.2 平衡聚類應(yīng)用場(chǎng)景
3.3?-balance方法一——在K-Means上改進(jìn)
3.3.1 方法說明
3.3.2 例子
3.4 -balance方法二——陰陽(yáng)K-Means加速重新分簇
3.4.1 陰陽(yáng)K-Means
3.4.2?對(duì)于方法一的改進(jìn)
第一部分? K-Means步驟
1.1 什么是聚類?
給定一組未加標(biāo)簽的數(shù)據(jù)集,希望通過算法自動(dòng)將數(shù)據(jù)分成有緊密關(guān)聯(lián)的子集或是簇。
假設(shè)我們采集到了一些牡丹花數(shù)據(jù),但我們并不知道這些牡丹花具體是哪個(gè)品種的。植物學(xué)家想要按照特征的相似性,先大致對(duì)牡丹花進(jìn)行粗分類,再對(duì)每個(gè)類別做具體細(xì)致的研究。此時(shí),我們首先想到的就是無監(jiān)督學(xué)習(xí)聚類算法。
?
1.2 K-Means詳細(xì)步驟
1.2.1 目標(biāo)函數(shù)
下面用一個(gè)簡(jiǎn)單的例子,對(duì)K-Means的步驟做說明。假設(shè)我們有一些二維樣本點(diǎn),最終聚類的結(jié)果如下圖所示。K-Means算法是怎樣將這些點(diǎn)聚成兩個(gè)簇的呢?
1.2.2 隨機(jī)初始化簇心
所有樣本點(diǎn)一開始是沒有被聚類的。將K取為2,即我們希望最終聚成2個(gè)簇。完成初始化簇心之后,我們隨機(jī)選中了兩個(gè)樣本作為簇心。
1.2.3 數(shù)據(jù)點(diǎn)分簇
第一次分簇之后,我們將得到下圖所示的2個(gè)簇
1.2.4 重新計(jì)算簇心
由于簇心是到簇內(nèi)所有點(diǎn)距離相等的位置,因此在第一次分簇結(jié)束之后,簇心的位置會(huì)相應(yīng)的發(fā)生改變。我們重新計(jì)算簇心位置,如下圖所示:
1.2.5 迭代過程
重復(fù)1.2.3和1.2.4兩個(gè)步驟,直到在重新計(jì)算簇心時(shí),所有簇的簇心都不再變化為止。下面給出例子的后續(xù)操作,直到聚類完成。
?
第二部分 避免局部最優(yōu)
2.1 隨機(jī)初始化會(huì)導(dǎo)致什么問題?
- 理想情況下,k-means算法會(huì)收斂到一個(gè)全局最優(yōu)解上。下圖就是一個(gè)我們希望看到的聚類結(jié)果。
- 但如果隨機(jī)初始化的結(jié)果不好,k-means算法最終可能會(huì)收斂到局部最優(yōu)解上。下圖就是當(dāng)初始化結(jié)果不好時(shí),算法最終迭代出的結(jié)果,這顯然不是我們希望看到的。
2.2 用實(shí)驗(yàn)說明
- 具體參數(shù):
樣本數(shù):350
特征維度:4
簇?cái)?shù)量:3
距離度量:歐式距離
- 我們希望看到,當(dāng)K-Means迭代收斂時(shí),應(yīng)該為全局最優(yōu)。其效果應(yīng)該如下圖所示。
- 但在實(shí)驗(yàn)中,第一次測(cè)試的結(jié)果就收斂到了一個(gè)效果不怎么好的局部最優(yōu),如下圖所示。
2.3 如何解決隨機(jī)結(jié)果不好的問題?
多隨機(jī)幾次,取最好的結(jié)果!
- 多次隨機(jī)初始化
?
2.4 實(shí)驗(yàn)中的一些其他細(xì)節(jié)
2.4.1 “距離”度量方式
距離實(shí)際上反映了不同樣本之間的相似度。
滿足非負(fù)性、對(duì)稱性、同一性、三角不等式性的度量,如歐氏距離、曼哈頓距離、切比雪夫距離等,都可以作為距離度量。
2.4.2 簇心數(shù)量K的選取
- 肘部原則
嘗試不同的k值,繪制均方誤差曲線圖,找到圖像的肘部為宜
?
第三部分 平衡聚類
3.1?-balance聚類
下圖中一共有12個(gè)樣本點(diǎn)。我們希望將它們分成3個(gè)簇,并且保證分成的簇相對(duì)平衡。在這個(gè)例子中,這是一個(gè)絕對(duì)平衡的分簇,即每個(gè)簇內(nèi)含有的樣本點(diǎn)完全相同。
3.2 平衡聚類應(yīng)用場(chǎng)景
- 數(shù)據(jù)預(yù)處理
①??圖像分類領(lǐng)域,使用詞袋模型對(duì)圖像進(jìn)行分割,分割后需要使用K-Means對(duì)分割除的特征聚類。更平衡的聚類會(huì)得到更準(zhǔn)確的圖像分類結(jié)果。
②??當(dāng)未標(biāo)記的樣本直覺上服從均勻分布時(shí),平衡聚類可以更好的反應(yīng)實(shí)際樣本類別。
?
3.3?-balance方法一——在K-Means上改進(jìn)
3.3.1 方法說明
- 設(shè)定2個(gè)規(guī)則:
- 對(duì)K-Means改進(jìn):
3.3.2 例子
下圖為使用K-Means聚類過程中的中間狀態(tài)。假設(shè)在樣本點(diǎn)重新分簇的過程中,紅色星星代表的樣本需要被重新分配到綠色簇中,如下圖所示:
假設(shè)我們允許每個(gè)簇最大包含5個(gè)樣本。此時(shí),綠色簇已經(jīng)包含了5個(gè)樣本,達(dá)到了上限。我們計(jì)算綠色簇心到紅色星星的距離,拿去和綠色簇的邊界值比較。在這個(gè)例子當(dāng)中,綠色簇心到紅色星星的距離,小于綠色簇的邊界值。因此,我們將綠色簇中距離簇心最遠(yuǎn)的樣本踢出簇,并將紅色星星樣本包含進(jìn)來,如下圖所示:
?
3.4 -balance方法二——陰陽(yáng)K-Means加速重新分簇
3.4.1 陰陽(yáng)K-Means
- 全局過濾
- 組過濾/局部過濾
3.4.2?對(duì)于方法一的改進(jìn)
在方法一中,-balance平衡聚類會(huì)在重新分簇步驟時(shí),將樣本點(diǎn)踢出簇,因此會(huì)比普通的K-Means有更多的重新分簇步驟。因此,在方法二中,平衡聚類的步驟思路和方法一相同,但使用陰陽(yáng)K-Means的思想,加速了重新分簇的步驟,使得算法整體的效率提高。
陰陽(yáng)K-Means具體使用方法,如下圖所示:
?
?
總結(jié)
以上是生活随笔為你收集整理的【零基础系列】K-Means聚类算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: node.js+uniapp计算机毕业设
- 下一篇: OSChina 周日乱弹 —— 局长:怕