聚類:通過(guò)物品來(lái)計(jì)算距離,并自動(dòng)分類到不同的群集或組中刁品。有兩種聚類算法比較常用:
(1)K-means聚類算法
需要提前告訴算法要將數(shù)據(jù)分成幾個(gè)組。
K-means算法過(guò)程可概括為:
- 隨機(jī)選取k個(gè)元素作為中心點(diǎn)
- 根據(jù)距離將各個(gè)點(diǎn)分配給中心點(diǎn)
- 計(jì)算新的中心點(diǎn)
- 重復(fù)2,3,直至滿足條件
K-means是一種最大期望算法分冈,這類算法會(huì)在“期望”和“最大化”兩個(gè)階段不斷迭代派哲,比如k-means的期望階段是將各個(gè)點(diǎn)分配到他們所期望的分類中,然后在最大化階段重新計(jì)算中心點(diǎn)的位置志群。
補(bǔ)充:登山式算法
假設(shè)我們想要登上一座山的頂峰着绷,可以通過(guò)以下步驟實(shí)現(xiàn):
- 在山上隨機(jī)選取一個(gè)點(diǎn)作為開始
- 向高處爬一點(diǎn)
-
重復(fù)第2步,直到?jīng)]有更高的點(diǎn)
對(duì)于如下的山峰看起來(lái)很合理:
K-means也是這樣的一種算法锌云,它并不能保證最終結(jié)果是最優(yōu)的荠医,因?yàn)槲覀円婚_始選擇的中心點(diǎn)是隨機(jī)的,很有可能就會(huì)選到A點(diǎn),最終獲得局部最優(yōu)解B點(diǎn)彬向。因此兼贡,最終的聚類結(jié)果和起始點(diǎn)的選擇有很大的關(guān)系。但盡管如此娃胆,k-means通常還是能夠獲得良好的結(jié)果的遍希。
誤差平凡和SSE
可以用誤差平凡和(或稱為離散程度)來(lái)評(píng)判聚類結(jié)果的好壞,他的計(jì)算方法是計(jì)算每個(gè)點(diǎn)到中心點(diǎn)的距離平凡和
注意:雖然指定了K的值缕棵,但不代表最終結(jié)果就會(huì)有k個(gè)分類孵班,這通常是好事,比如招驴,指定k=10篙程,但結(jié)果有2個(gè)為空,那很可能這個(gè)數(shù)據(jù)集本來(lái)就該分成8個(gè)類別别厘,因此可以嘗試用k=8來(lái)重新計(jì)算虱饿。
K-means++
k-means算法有一個(gè)明顯的缺點(diǎn),在算法一開始需要隨機(jī)選取k個(gè)起始點(diǎn)触趴,這個(gè)隨機(jī)會(huì)有問題氮发。有時(shí)選取的點(diǎn)能產(chǎn)生最佳結(jié)果,而有時(shí)會(huì)讓結(jié)果變得很差冗懦。K-means++則改進(jìn)了起始點(diǎn)的選取過(guò)程爽冕,其余和k-means一致。
k-means++選取起始點(diǎn)的過(guò)程:
- 隨機(jī)選取一個(gè)點(diǎn)
- 重復(fù)以下步驟披蕉,直到選完k個(gè)點(diǎn)
I. 計(jì)算沒個(gè)數(shù)據(jù)點(diǎn)(dp)到各個(gè)中心點(diǎn)的距離(D)颈畸,選取最小的值,記為D(dp)
II. 根據(jù)D(dp)的概率來(lái)隨機(jī)選取一個(gè)點(diǎn)作為中心點(diǎn)
K-means++選取起始點(diǎn)的方法總結(jié)下來(lái)就是:第一個(gè)點(diǎn)還是隨機(jī)的没讲,但后續(xù)的點(diǎn)就會(huì)盡量選擇離現(xiàn)有中心點(diǎn)更遠(yuǎn)的點(diǎn)
(2)層次聚類算法
不需要預(yù)先指定分類的數(shù)量眯娱,這個(gè)方法會(huì)將每條數(shù)據(jù)都當(dāng)做是一個(gè)分類,每次迭代的時(shí)候合并距離最近的兩個(gè)分類爬凑,直到剩下一個(gè)分類為止徙缴。
在合并的時(shí)候會(huì)計(jì)算兩個(gè)分類之間的距離,可以采用不同的方法:
內(nèi)容來(lái)源:《dataminmingguide》---聚類