聚類分析演算法
什麼是聚類
聚類分析是將資料物件的集合分成相似物件類的過程。使得 同一簇 (或類)中的物件之間具有較高的 相似性 ,而 不同簇 中的物件具有較高的 相異性 。
簇是資料物件(如資料點)的集合,這些物件與同一簇中的物件彼此相似,而與其他簇的物件相異。
例:對客戶資料中的“年齡”和“收入”進行聚類處理

孤立點可以用來分析極低或極高收入客戶的消費行為。
相似性度量
物件之間的相似性是聚類分析的核心。物件之間的距離越近表示它們越相似。若每個物件用$m$個屬性來描述(稱為描述屬性),即物件$o_i$表示為$o_i=(o_{i1},o_{i2},…,o_{im})$,常用的距離度量如下:
曼哈頓距離:$dist(o_i,o_j) = \sum_{k=1}^{m}|o_{ik}-o_{jk}|$
歐幾里得距離:$dist(o_i,o_j) = \sqrt {\sum_{k=1}^{m} (o_{ik}-o_{jk})^2}$
閔科夫斯基距離:$dist(o_i,i_j) = \sqrt[q]{\sum_{k=1}^{m}|o_{ik}-o_{jk}|^q}$
其實仔細觀察上面三個公式,曼哈頓距離和歐式距離就是閔科夫斯基距離的兩種特殊情況,分別取$q=1$和$q=2$
通常相似度函式$sim(o_i,o_j)$與距離成反比,在確定好距離函式後,可設計相似度函式如下:
$$
Sim(o_i,o_j)=\frac{1}{1+dist(o_i,o_j)}
$$
K-均值演算法及其應用
$k$-均值($k-means$)演算法是一種基於距離的聚類演算法,採用歐幾里得距離作為相似性的評價指標,即認為兩個物件的距離越近,其相似度就越大。該演算法認為簇是由距離靠近的物件組成的,因此把得到緊湊且獨立的簇作為最終目標。
$k-means$演算法不適合離散型屬性,但對於連續型屬性具有較好的聚類效果
$K-means$演算法描述
- 選擇k個樣品作為初始凝聚點,或者將所有樣品分成k個初始類,然後將這k個類的重心(均值)作為初始凝聚點
- 對除凝聚點之外的所有樣品逐個歸類,將每個樣品歸入凝聚點離它最近的那個類(通常採用歐氏距離),該類的凝聚點更新為這一類目前的均值,直至所有樣品都歸了類
- 重複步驟2,直至所有的樣品都不能再分配為止
最終的聚類結果在一定程度上依賴於初始凝聚點或初始分類的選擇。經驗表明,聚類過程中的絕大多數重要變化均發生在第一次再分配中
聚類分析終止的條件:
- 當前的迭代次數等於指定的迭代次數(spss預設為10)時終止聚類
- 類中心點偏移程度。新確定的類中心點距上個類中心點的最大偏移量小於指定的量(spss預設為0.02)時終止聚類
例題
設有五個樣本分別是1,2,6,8,11,採用K均值法聚類,指定K=2
(1)我們隨意將這些樣品分成$G_1^{(0)}=\{1,6,8\}$和$G_2^{(0)}=\{2,11\}$兩類,則這兩個初始類的均值分別是5和6.5
(2)計算1到兩個類的歐氏距離
$$
\begin{align}
& d(1,G_1^{(0)})=|1-5|=4\\
& d(1,G_2^{(0)})=|1-6.5|=5.5\\
\end{align}
$$
由於1到$G_1^{(0)}$的距離小於到$G_2^{(0)}$的距離,因此1不用重新分配,計算6到兩個類的距離
$$
\begin{align}
& d(6,G_1^{(0)})=|6-5|=1\\
& d(6,G_2^{(0)})=|6-6.5|=0.5\\
\end{align}
$$
故6應重新分配到$G_2^{(0)}$中,修正後的兩個類為$G_1^{(1)}=\{1,8\},G_2^{(1)}=\{2,6,11\}$,新的類均值分別為4.5和6.3,計算
$$
\begin{align}
& d(8,G_1^{(1)})=|8-4.5|=3.5\\
& d(8,G_2^{(1)})=|8-6.3|=1.7\\
\end{align}
$$
結果8重新分配到$G_2^{(1)}$中,兩個新類為$G_1^{(2)}=\{1\},G_2^{(2)}=\{2,6,8,11\}$,其類均值分別為1和6.75,再計算
$$
\begin{align}
& d(2,G_1^{(2)}=|2-1|=1 \\
& d(2,G_2^{(2)})=|2-6.75|=4.75 \\
\end{align}
$$
重新分配2到$G_1^{(2)}$中,兩個新類為$G_1^{(3)}=\{1,2\},G_2^{(3)}=\{6,8,11\}$,其均值分別為1.5和8.3
(3)再次計算每個樣品到類均值的距離,結果列於下表

可見,每個樣品都已被分給了類均值離他更近的類。因此,最終得到的兩個類為{1,2}和{6,8,11}