本文是周志華《機器學習》第九章的學習筆記。
“無監督學習”通過對無標記訓練樣本的學習來揭示資料的內在性質及規律。通常,“無監督學習”包含的任務型別有“聚類”、“密度估計”、“異常檢測”等,下述將主要對“聚類”進行討論。
(1)“聚類”任務可以作為一個單獨過程,也可以作為分類等其他學習任務的前去過程,即根據聚類結果將每個“簇”定義為一個“類”,然後基於這些類訓練分類模型。(2)“聚類”任務中使用的樣本可以帶有標籤,也可以不帶標籤。對無標籤樣本進行聚類,其數學語言描述如下:假定樣本集D={x1,x2,⋯,xm}
D=\{\boldsymbol{x}_1,\boldsymbol{x}_2,\cdots,\boldsymbol{x}_m\}
包含
mm
個無標記樣本,每個樣本
xi=(xi1;xi2;⋯;xin)\boldsymbol{x}_i=(x_{i1};x_{i2};\cdots;x_{in})
是一個
nn
維特徵向量,則聚類演算法將樣本集
DD
劃分成
kk
個互斥且完備的簇
{Cl|l=1,2,⋯,k}\{C_l|l=1,2,\cdots,k\}
,即
Cl′⋂l′≠lCl=∅D=⋃kl=1ClD=\bigcup_{l=1}^{k}C_{l}
。用
λj∈{1,2,⋯,k}\lambda_{j}\in\{1,2,\cdots,k\}
表示樣本
xj\boldsymbol{x}_{j}
的“簇標記”,即
xj∈Cλj\boldsymbol{x}_{j}\in C_{\lambda_{j}}
。則樣本集
DD
對應的聚類結果可表示為
λ=(λ1,λ2,⋯,λm)\boldsymbol{\lambda}=(\lambda_{1},\lambda_{2},\cdots,\lambda_{m})
。
聚類演算法的預期目標是“簇內相似度”高,“簇間相似度”低。通過“效能度量”評估聚類結果好壞,將“效能度量”作為“聚類過程優化的目標”。聚類效能度量主要有兩大類:(1)外部指標:將聚類結果與某個“參考模型”進行比較;(2)內部指標:直接參考聚類結果而不利用
外部指標:
對資料集D={x1,x2,⋯,xm}
D=\{\boldsymbol{x}_1,\boldsymbol{x}_2,\cdots,\boldsymbol{x}_m\}
的簇劃分
={C1,C2,⋯,Ck}\mathcal{C}=\{C_1,C_2,\cdots,C_k\}
參考
模型給出的簇劃分∗={C∗1,C∗2,⋯,C∗k}\mathcal{C^*}=\{C^*_1,C^*_2,\cdots,C^*_k\}
,且
λ\boldsymbol{\lambda}
表示
\mathcal{C}
對應的簇標記向量、
λ∗\boldsymbol{\lambda^*}
表示
∗\mathcal{C^*}
對應的簇標記向量,則可定義
a=|SS|,SS={(xi,xj)|λi=λj,λ∗i=λ∗j,i<j}b=|SD|,SD={(xi,xj)|λi=λj,λ∗i≠λ∗j,i<j}c=|DS|,DS={(xi,xj)|λi≠λj,λ∗i=λ∗j,i<j}d=|DD|,DD={(xi,xj)|λi≠λj,λ∗i≠λ∗j,i<j}
\begin{matrix}
a=|SS|,SS=\{(\boldsymbol{x}_i,\boldsymbol{x}_j)|\lambda_i=\lambda_j,\lambda^*_i=\lambda^*_j,i<j\}\\
b=|SD|,SD=\{(\boldsymbol{x}_i,\boldsymbol{x}_j)|\lambda_i=\lambda_j,\lambda^*_i\neq\lambda^*_j,i<j\}\\
c=|DS|,DS=\{(\boldsymbol{x}_i,\boldsymbol{x}_j)|\lambda_i\neq\lambda_j,\lambda^*_i=\lambda^*_j,i<j\}\\
d=|DD|,DD=\{(\boldsymbol{x}_i,\boldsymbol{x}_j)|\lambda_i\neq\lambda_j,\lambda^*_i\neq\lambda^*_j,i<j\}\\
\end{matrix}
- Jaccard係數:JC=aa+b+c
\displaystyle JC=\frac{a}{a+b+c}
- FM指數:FMI=aa+b⋅aa+c‾‾‾‾‾‾‾‾‾‾‾‾‾√
\displaystyle FMI=\sqrt{\frac{a}{a+b}\cdot\frac{a}{a+c}}
- Rand指數:RI=2(a+d)m(m−1)
\displaystyle RI=\frac{2(a+d)}{m(m-1)}
其中,JC,FMI,RI∈[0,1]
JC,FMI,RI\in[0,1]
,且值越大代表聚類效果越好。
內部指標:
根據對資料集D={x1,x2,⋯,xm}
D=\{\boldsymbol{x}_1,\boldsymbol{x}_2,\cdots,\boldsymbol{x}_m\}
的簇劃分
={C1,C2,⋯,Ck}\mathcal{C}=\{C_1,C_2,\cdots,C_k\}
,定義
簇C內樣本間平均距離:avg(C)=2|C|(|C|−1)∑1≤i<j≤|C|dist(xi,xj)簇C內樣本間最遠距離:diam(C)=max1≤i<j≤|C|dist(xi,xj)簇Ci和Cj最近樣本間的距離:dmin(Ci,Cj)=minxi∈Ci,xj∈Cjdist(xi,xj)簇Ci和Cj中心點間的距離:dcen(Ci,Cj)=dist(μi,μj)
\begin{matrix}
簇C內樣本間平均距離:\displaystyle avg(C)=\frac{2}{|C|(|C|-1)}\sum_{1\leq i<j\leq|C|}dist(\boldsymbol{x}_i,\boldsymbol{x}_j) \\
簇C內樣本間最遠距離:\displaystyle diam(C)=\max_{1\leq i<j\leq|C|}dist(\boldsymbol{x}_i,\boldsymbol{x}_j)\\
簇C_i和C_j最近樣本間的距離:\displaystyle d_{min}(C_i,C_j)=\min_{\boldsymbol{x}_i\in C_i,\boldsymbol{x}_j\in C_j}dist(\boldsymbol{x}_i,\boldsymbol{x}_j)\\
簇C_i和C_j中心點間的距離:\displaystyle d_{cen}(C_i,C_j)=dist(\boldsymbol{\mu}_i,\boldsymbol{\mu}_j)\\
\end{matrix}
上式中
dist(⋅,⋅)dist(\cdot,\cdot)
計算兩樣本間的距離,
μ\boldsymbol{\mu}
代表簇
CC
的中心點
μ=1|C|∑1≤i≤|C|xi\displaystyle\boldsymbol{\mu}=\frac{1}{|C|}\sum_{1\leq i\leq|C|}\boldsymbol{x}_i
。
- DB指數:DBI=1k∑i=1kmaxj≠i(avg(Ci)+avg(Cj)dcen(μi,μj))
\displaystyle DBI=\frac{1}{k}\sum_{i=1}^{k}\max\limits_{j\neq i}\Big(\frac{avg(C_i)+avg(C_j)}{d_{cen}(\boldsymbol{\mu}_i,\boldsymbol{\mu}_j)}\Big)
- Dunn指數:DI=min1≤i≤k{minj≠i(dmin(Ci,Cj)max1≤l≤kdiam(Cl))}
\displaystyle DI=\min\limits_{1\leq i\leq k}\Big\{\min\limits_{j\neq i}\Big(\frac{d_{min}(C_i,C_j)}{\max_{1\leq l\leq k}diam(C_l)}\Big)\Big\}
滿足非負性、對稱性、傳遞性的基本度量距離,即L1,L2,Lp範數:
distman(xi,xj)=||xi−xj||1=∑u=1n|xiu−xju|disted(xi,xj)=||xi−xj||2=∑u=1n|xiu−xju|2‾‾‾‾‾‾‾‾‾‾‾‾‾√distmk(xi,xj)=(∑u=1n|xiu−xju|p)1p
\begin{matrix}
dist_{man}(\boldsymbol{x}_i,\boldsymbol{x}_j)=||\boldsymbol{x}_i-\boldsymbol{x}_j||_1=\sum\limits_{u=1}^{n}|x_{iu}-x_{ju}|\\
dist_{ed}(\boldsymbol{x}_i,\boldsymbol{x}_j)=||\boldsymbol{x}_i-\boldsymbol{x}_j||_2=\sqrt{\sum\limits_{u=1}^{n}|x_{iu}-x_{ju}|^{2}}\\
dist_{mk}(\boldsymbol{x}_i,\boldsymbol{x}_j)=\Big(\sum\limits_{u=1}^{n}|x_{iu}-x_{ju}|^{p}\Big)^{\frac{1}{p}}\\
\end{matrix}
“連續屬性”:在定義域上有無窮多個可能的取值
“離散屬性”:在定義域上是有限個取值
“有序屬性”:在該屬性上定義了“序”關係,如{1,2,3}
\{1,2,3\}
裡“
11
”與“
22
”比較接近,與“
33
”相距較遠。
“無序屬性”:如
{飛機,汽車,輪船}\{飛機,汽車,輪船\}
這樣的離散屬性即為無序屬性。
可以直接在有序屬性上計算距離,但不能直接在無序屬性上計算距離。
(1)無序屬性可利用VDM距離度量:
- VDMp(a,b)=∑i=1k∣∣∣mu,a,imu,a−mu,b,imu,b∣∣∣p
\displaystyle VDM_p(a,b)=\sum\limits_{i=1}^{k}\Big|\frac{m_{u,a,i}}{m_{u,a}}-\frac{m_{u,b,i}}{m_{u,b}}\Big|^p
上式中mu,a
m_{u,a}
表示在屬性
uu
上取值為
aa
的樣本數,
mu,a,im_{u,a,i}
表示在第
ii
個簇中在屬性
uu
上取值為
aa
的樣本數,
kk
為簇數。
(2)混合屬性(樣本向量不同維度,既包含有序屬性又包含無序屬性)可將Minkowski(Lp範數)距離和VDM結合:
原型指樣本空間裡“具有代表性的點”,可通過一組原型刻畫聚類結構。基於原型的聚類演算法——對原型初始化,對原型迭代更新。
“K均值”演算法對樣本集D={x1,x2,⋯,xm}
D=\{\boldsymbol{x}_1,\boldsymbol{x}_2,\cdots,\boldsymbol{x}_m\}
聚類,得到的簇劃分
={C1,C2,⋯,Ck}\mathcal{C}=\{C_1,C_2,\cdots,C_k\}
對應的最小化平方誤差:
E=∑i=1k∑x∈Ci||x−μi||22,其中μi=1Ci∑x∈Cix是簇Ci的均值向量
\displaystyle E=\sum\limits_{i=1}^{k}\sum\limits_{\boldsymbol{x}\in C_i}||\boldsymbol{x}-\boldsymbol{\mu}_i||^2_2,其中\boldsymbol{\mu}_i=\frac{1}{C_i}\sum\limits_{\boldsymbol{x}\in C_i}\boldsymbol{x}是簇C_i的均值向量
EE
刻畫了簇內樣本圍繞簇均值向量的緊密程度,
EE
值越小表示簇內樣本相似度越高。要想求
EE
的最優解,需要遍歷考查樣本集
DD
所有可能的簇劃分,是NP難問題;實際操作中,常採用貪心策略,通過迭代優化近似求解。
- 輸入:樣本集D={x1,x2,⋯,xm}
D=\{\boldsymbol{x}_1,\boldsymbol{x}_2,\cdots,\boldsymbol{x}_m\}
;聚類簇數kk
.
- 演算法流程:
- (1)從D
D
裡隨機選kk
個樣本作為初始均值向量{μ1,μ2,⋯,μk}\{\boldsymbol{\mu}_1,\boldsymbol{\mu}_2,\cdots,\boldsymbol{\mu}_k\}
.
- (2)通過迴圈逐個生成簇,目標是生成k
k
個聚類簇:
- 對D
D
裡每個樣本xi\boldsymbol{x}_i
:
- a.)計算該樣本與各均值向量μi
\boldsymbol{\mu}_i
的距離:dji=||xj−μi||2d_{ji}=||\boldsymbol{x}_j-\boldsymbol{\mu}_i||_2
,
- b.)對應可得樣本μi
\boldsymbol{\mu}_i
所歸屬的簇標記λj=argmini∈{1,2,⋯,k}dji\lambda_j=argmin_{i\in\{1,2,\cdots,k\}}d_{ji}
,
- c.)把樣本xi
\boldsymbol{x}_i
加入簇Cλj=Cλj⋃xjC_{\lambda_{j}}=C_{\lambda_{j}}\bigcup{\boldsymbol{x}_j}
.
- 更新各個聚類簇的均值向量μ′i=1|Ci|∑x∈Cix
\displaystyle\boldsymbol{\mu}^{'}_i=\frac{1}{|C_i|}\sum_{\boldsymbol{x}\in C_i}\boldsymbol{x}
,
- 判斷μ′i
\boldsymbol{\mu}^{'}_i
與μi\boldsymbol{\mu}_i
是否相等,相等則該聚類簇中心不變,不相等則更新為μ′i\boldsymbol{\mu}^{'}_i
.
- (3)重複以上過程(2),直到達到最大迭代次數限制;或對所有i
i
滿足|μ′i−μi|≤ϵ(ϵ是任意正數)|\boldsymbol{\mu}^{'}_i-\boldsymbol{\mu}_i|\leq \epsilon(\epsilon是任意正數)
時,停止迭代.
LVQ演算法裡假設資料樣本帶有“類別標籤”,簇劃分過程需要記住“類別標籤”輔助學習。即,對於給定的樣本集D={(x1,y1),(x2,y2),⋯,(xm,ym)}
D=\{(\boldsymbol{x}_1,y_1),(\boldsymbol{x}_2,y_2),\cdots,(\boldsymbol{x}_m,y_m)\}
,
nn
維屬性
xj=(xj1,xj2,⋯,xjn)\boldsymbol{x}_j=(x_{j1},x_{j2},\cdots,x_{jn})
,樣本
xj\boldsymbol{x}_j
的類標記
yj∈y_j\in\mathcal{Y}
。
LVQ的目標是
學習到一組“代表各個聚類簇”的nn
維原型向量{p1,p2,⋯,pq}\{\boldsymbol{p}_1,\boldsymbol{p}_2,\cdots,\boldsymbol{p}_q\}
,即原型向量和樣本的屬性具有相同的維度。由此,LVQ初始化第
qq
個簇的原型向量的一種方法:從類別標記為
tqt_q
的樣本里,隨機選取一個“樣本屬性向量”作為“初始原型向量”。
- 輸入:樣本集D={(x1,y1),(x2,y2),⋯,(xm,ym)}
D=\{(\boldsymbol{x}_1,y_1),(\boldsymbol{x}_2,y_2),\cdots,(\boldsymbol{x}_m,y_m)\}
;原型向量個數qq
;各原型向量初始類別標記{t1,t2,⋯,tq}\{t_1,t_2,\cdots,t_q\}
;學習率η∈(0,1)\eta\in(0,1)
.
- 演算法流程:
- (1)從類別標記為ti(i=1,2,⋯,q)
t_i(i=1,2,\cdots,q)
的樣本里,隨機選取一個“樣本屬性向量”作為初始原型向量pi(i=1,2,⋯,q)\boldsymbol{p}_i(i=1,2,\cdots,q)
;得初始化原型向量組{p1,p2,⋯,pq}\{\boldsymbol{p}_1,\boldsymbol{p}_2,\cdots,\boldsymbol{p}_q\}
.
- (2)遍歷更新每個原型向量:
- 隨機選取D
D
內的一個樣本(xj,yj)(\boldsymbol{x}_j,y_j)
:
- a.)計算該樣本與各個原型向量pi(i=1,2,⋯,q)
\boldsymbol{p}_i(i=1,2,\cdots,q)
的距離:dji=||xj−pi||2d_{ji}=||\boldsymbol{x}_j-\boldsymbol{p}_i||_2
,
- b.)找出與xj
\boldsymbol{x}_j
距離最近的原型向量p∗i\boldsymbol{p}^*_i
,i∗=argmini∈{1,2,⋯,q}djii^*=argmin_{i\in\{1,2,\cdots,q\}}d_{ji}
,
- c.)更新原型向量:如yj=t∗i
y_j=t^*_i
,則p′=p∗i+η⋅(xj−p∗i)\boldsymbol{p}^{'}=\boldsymbol{p}^*_i+\eta\cdot(\boldsymbol{x}_j-\boldsymbol{p}^*_i)
(原型向量靠近xjx_j
);否則,p′=p∗i−η⋅(xj−p∗i)\boldsymbol{p}^{'}=\boldsymbol{p}^*_i-\eta\cdot(\boldsymbol{x}_j-\boldsymbol{p}^*_i)
(原型向量遠離xjx_j
).
- (3)重複以上過程(2),直到達到最大迭代次數限制;或“原型向量”更新很小甚至不更新時,停止迭代.
高斯混合聚類採用“概率模型”來表達聚類原型,定義高斯混合分佈
p(x)=∑i=1kαi⋅p(x|μi,Σi)=∑i=1kαi⋅1(2π)n2|Σi|12e−12(x−μi)TΣ−1i(x−μi)
p_\mathcal{M}(\boldsymbol{x})=\sum\limits_{i=1}^{k}\alpha_i\cdot p(\boldsymbol{x}|\boldsymbol{\mu}_i,\boldsymbol{\Sigma}_i)=\sum\limits_{i=1}^{k}\alpha_i\cdot \frac{1}{(2\pi)^{\frac{n}{2}}|\boldsymbol{\Sigma}_i|^{\frac{1}{2}}}e^{-\frac{1}{2}(\boldsymbol{x}-\boldsymbol{\mu}_i)^{T}\boldsymbol{\Sigma}_i^{-1}(\boldsymbol{x}-\boldsymbol{\mu}_i)}
上式,
μi\boldsymbol{\mu}_i
是第
ii
個高斯混合成分的
nn
維均值矩陣;
Σi\boldsymbol{\Sigma}_i
是第
ii
個高斯混合成分的
n×nn\times n
維協方差矩陣;
αi>0\alpha_i>0
是第
ii
個高斯混合成分的“混合係數”,且
∑i=1kαi=1\sum\limits_{i=1}^k\alpha_i=1
。
樣本生成過程:根據“混合係數”定義的先驗分佈,選擇該樣本所屬的高斯混合成分(其中αi
\alpha_i
是選擇第
ii
個高斯混合成分的概率),根據被選擇的高斯混合成分的“概率密度函式”進行“取樣”,從而生成相應的樣本。
定義隨機變數zj∈{1,2,⋯,k}
z_j\in\{1,2,\cdots,k\}
表示生成樣本
xj\boldsymbol{x}_j
的高斯混合成分,則
zjz_j
的
先驗概率P(zj=i)=αiP(z_j=i)=\alpha_i
,由貝葉斯公式
zjz_j
的
後驗分佈
p(zj=i|xj)=P(zj=i)⋅p(xj|zj=i)p(xj)=αi⋅p(xj|μi,Σi)∑l=1kαl⋅p(xj|μl,Σl)≜γji
p_\mathcal{M}(z_j=i|\boldsymbol{x}_j)=\frac{P(z_j=i)\cdot p_\mathcal{M}(\boldsymbol{x}_j|z_j=i)}{p_\mathcal{M}(\boldsymbol{x}_j)}=\frac{\alpha_i\cdot p(\boldsymbol{x}_j|\boldsymbol{\mu}_i,\boldsymbol{\Sigma}_i)}{\sum\limits_{l=1}^k \alpha_l\cdot p(\boldsymbol{x}_j|\boldsymbol{\mu}_l,\boldsymbol{\Sigma}_l)}\triangleq\gamma_{ji}
(1)若模型引數已知,即模型確定時,將樣本集
DD
劃分為
kk
個簇
={C1,C2,⋯,Ck}\mathcal{C}=\{C_1,C_2,\cdots,C_k\}
的方法:每個樣本
xj\boldsymbol{x}_j
的簇標記
λj=argmaxi∈{1,2,⋯,k}γji\lambda_j=\underset{i\in\{1,2,\cdots,k\}}{arg\max} \gamma_{ji}
。
(2)模型引數
{(αi,μi,Σi)|1≤i≤k}\{(\alpha_i,\boldsymbol{\mu}_i,\boldsymbol{\Sigma}_i)|1\leq i\leq k\}
利用“極大似然估計求導和EM演算法迭代”學習:
LL(D)=ln(∏j=1mp(xj))=ln(∏j=1m(∑i=1kP(zj=i)⋅p(xj|zj=i)))=ln(∏j=1m(∑i=1kαi⋅p(xj|μi,Σi)))=∑j=1mln(∑i=1kαi⋅p(xj|μi,Σi))
LL(D)=ln\Big(\prod\limits_{j=1}^m p_\mathcal{M}(\boldsymbol{x}_j)\Big)=ln\Big(\prod\limits_{j=1}^m\big(\sum\limits_{i=1}^k P(z_j=i)\cdot p_\mathcal{M}(\boldsymbol{x}_j|z_j=i)\big)\Big)\\
=ln\Big(\prod\limits_{j=1}^m\big(\sum\limits_{i=1}^k \alpha_i\cdot p(\boldsymbol{x}_j|\boldsymbol{\mu}_i,\boldsymbol{\Sigma}_i)\big)\Big)=\sum\limits_{j=1}^m ln\Big(\sum\limits_{i=1}^k \alpha_i\cdot p(\boldsymbol{x}_j|\boldsymbol{\mu}_i,\boldsymbol{\Sigma}_i)\Big)
由
∂LL(D)∂μi=0\displaystyle\frac{\partial LL(D)}{\partial\boldsymbol{\mu}_i}=0
可求得
μi=∑j=1mγjixj∑j=1mγji\displaystyle\boldsymbol{\mu}_i=\frac{\sum\limits_{j=1}^m \gamma_{ji}\boldsymbol{x}_j}{\sum\limits_{j=1}^m \gamma_{ji}}
;由
∂LL(D)∂Σi=0\displaystyle\frac{\partial LL(D)}{\partial\boldsymbol{\Sigma}_i}=0
可求得
Σi=∑j=1mγji(xj−μi)(xj−μi)T∑j=1mγji\displaystyle\boldsymbol{\Sigma}_i=\frac{\sum\limits_{j=1}^m \gamma_{ji}(\boldsymbol{x}_j-\boldsymbol{\mu}_i)(\boldsymbol{x}_j-\boldsymbol{\mu}_i)^T}{\sum\limits_{j=1}^m \gamma_{ji}}
;將約束
αi>0,∑i=1kαi=1\alpha_i>0,\sum\limits_{i=1}^k\alpha_i=1
轉化成Lagrange乘子後求導,即
∂(LL(D)+λ(∑i=1kαi−1))∂αi=0\displaystyle\frac{\partial\Big(LL(D)+\lambda(\sum\limits_{i=1}^k\alpha_i-1)\Big)}{\partial\alpha_i}=0
,可求得
αi=1m∑j=1mγji\displaystyle\alpha_i=\frac{1}{m}\sum\limits_{j=1}^m \gamma_{ji}
。
- 輸入:樣本集D={x1,x2,⋯,xm}
D=\{\boldsymbol{x}_1,\boldsymbol{x}_2,\cdots,\boldsymbol{x}_m\}
;高斯混合成分個數kk
.
- 演算法流程:
- (1)初始化高斯混合分佈的模型引數{(αi,μi,Σi)|1≤i≤k}
\{(\alpha_i,\boldsymbol{\mu}_i,\boldsymbol{\Sigma}_i)|1\leq i\leq k\}
.
- (2)遍歷更新每個樣本:
- (3)更新每個高斯混合成分的引數:
- a.)計算新均值向量μ′i=∑j=1mγjixj∑j=1mγji
\displaystyle\boldsymbol{\mu^{'}}_i=\frac{\sum\limits_{j=1}^m \gamma_{ji}\boldsymbol{x}_j}{\sum\limits_{j=1}^m \gamma_{ji}}
,
- b.)計算新協方差矩陣Σ′i=∑j=1mγji(xj−μi)(xj−μi)T∑j=1mγji
\displaystyle\boldsymbol{\Sigma^{'}}_i=\frac{\sum\limits_{j=1}^m \gamma_{ji}(\boldsymbol{x}_j-\boldsymbol{\mu}_i)(\boldsymbol{x}_j-\boldsymbol{\mu}_i)^T}{\sum\limits_{j=1}^m \gamma_{ji}}
,
- c.)計算新混合係數α′i=1m∑j=1mγji
\displaystyle\alpha^{'}_i=\frac{1}{m}\sum\limits_{j=1}^m \gamma_{ji}
.
- (4)根據後驗概率γji
\gamma_{ji}
,對每個樣本確定簇標記λj=argmaxi∈{1,2,⋯,k}γji\lambda_j=\underset{i\in\{1,2,\cdots,k\}}{arg\max} \gamma_{ji}
,則第CλjC_{\lambda_j}
個簇更新為Cλj=Cλj⋃{xj}C_{\lambda_j}=C_{\lambda_j}\bigcup\{\boldsymbol{x}_j\}
.
此類方法通過“樣本分佈的緊密程度”確定聚類結構。即,從樣本密度角度考察樣本之間的可連線性,並基於可連線樣本不斷擴充套件聚類簇,以獲得最終的聚類結果。
密度聚類演算法DBSCAN
該演算法是對給定的資料集D={x1,x2,⋯,xm}
D=\{\boldsymbol{x}_1,\boldsymbol{x}_2,\cdots,\boldsymbol{x}_m\}
,基於一組“鄰域”引數
(ϵ,MinPts)(\epsilon,MinPts)
,刻畫樣本分佈的緊密程度。首先,給出如下定義:
(1)
ϵ−\epsilon-
鄰域:
xj∈D\boldsymbol{x}_j\in D
的
ϵ−\epsilon-
鄰域指該鄰範圍內包含的所有其餘樣本點集合,
Nϵ(xj)={xi∈D|dist(xi,xj)≤ϵ}N_{\epsilon}(\boldsymbol{x}_j)=\{\boldsymbol{x}_i\in D|dist(\boldsymbol{x}_i,\boldsymbol{x}_j)\leq\epsilon\}
.
(2)
核心物件:某樣本
xj\boldsymbol{x}_j
是核心樣本,指其
ϵ−\epsilon-
鄰域內至少包含
MinPtsMinPts
個樣本點,即
|Nϵ(xj)|≥MinPts|N_{\epsilon}(\boldsymbol{x}_j)|\geq MinPts
.
(3)
密度直達:
xj\boldsymbol{x}_j
是核心物件
xi\boldsymbol{x}_i
的
ϵ−\epsilon-
鄰域內的點,稱
xj\boldsymbol{x}_j
由
xi\boldsymbol{x}_i
密度直達.
(4)
密度可達:若有樣本序列
xi=p1,p2,⋯,pn=xj\boldsymbol{x}_i=\boldsymbol{p}_1,\boldsymbol{p}_2,\cdots,\boldsymbol{p}_n=\boldsymbol{x}_j
,且後一樣本點
pi+1\boldsymbol{p}_{i+1}
由前一樣本點
pi\boldsymbol{p}_i
密度直達,則
xj\boldsymbol{x}_j
由
xi\boldsymbol{x}_i
密度可達.
(5)
密度相連:若樣本點
xi\boldsymbol{x}_i
和
xj\boldsymbol{x}_j
均由
xk\boldsymbol{x}_k
密度可達,則
xi\boldsymbol{x}_i
和
xj\boldsymbol{x}_j
密度相連.
DBSCAN演算法的“簇”是由
密度可達匯出的“最大”
密度相連的“樣本的集合”。若
x\boldsymbol{x}
為
核心物件,
由x\boldsymbol{x}
密度可達的所有樣本組合的集合,即形成一個
聚類簇。最後,簇劃分確定後,資料集
DD
中不屬於任何簇的樣本,通常看作“噪聲”或“異常樣本”。
層次聚類是在“不同層次”對資料集進行劃分,形成“樹形的聚類結構”。資料集的劃分方式:(1)“自底向上”聚合(2)“自頂向下”分拆。
AGNES自底向上聚合的層次聚類演算法
該演算法初始將每個樣本看成一個聚類簇,每一步對“距離最近的兩個聚類簇”合併,重複以上過程直到達到預設的聚類簇個數。
計算聚類簇間距離的不同定義:
最小距離:dmin(Ci,Cj)=minx∈Ci,z∈Cjdist(x,z)最大距離:dmax(Ci,Cj)=maxx∈Ci,z∈Cjdist(x,z)平均距離:davg(Ci,Cj)=1|Ci||Cj|∑x∈Ci∑z∈Cjdist(x,z)
\begin{matrix}
最小距離:\displaystyle d_{\min}(C_i,C_j)=\min\limits_{\boldsymbol{x}\in C_{i},\boldsymbol{z}\in C_{j}}dist(\boldsymbol{x},\boldsymbol{z}) \\
最大距離:\displaystyle d_{\max}(C_i,C_j)=\max\limits_{\boldsymbol{x}\in C_{i},\boldsymbol{z}\in C_{j}}dist(\boldsymbol{x},\boldsymbol{z}) \\
平均距離:\displaystyle d_{avg}(C_i,C_j)=\frac{1}{|C_i||C_j|}\sum\limits_{\boldsymbol{x}\in C_{i}}\sum\limits_{\boldsymbol{z}\in C_{j}}dist(\boldsymbol{x},\boldsymbol{z})\\
\end{matrix}
- 輸入:樣本集D={x1,x2,⋯,xm}
D=\{\boldsymbol{x}_1,\boldsymbol{x}_2,\cdots,\boldsymbol{x}_m\}
;聚類簇聚類度量函式dd
;聚類簇數kk
.
- 演算法流程:
- (1)初始化,每個樣本作為一個聚類簇Cj={xj},j=1,2,⋯,m
C_j=\{\boldsymbol{x}_j\},j=1,2,\cdots,m
.
- (2)遍歷每個樣本,計算距離矩陣:
- 對於任意兩個樣本,計算距離,得距離矩陣M(i,j)=d(Ci,Cj),M(i,j)=M(j,i),j>i
M(i,j)=d(C_i,C_j),M(i,j)=M(j,i),j>i
.
- (3)若聚類簇個數大於預計聚類簇數,則合併距離最近的兩個聚類簇,更新距離矩陣:
- (4)重複以上過程(3),直到聚類簇聚合到預期聚類簇數,停止迭代.