Note:本文系笔者学习机器学习过程中的学习笔记,期间加有个人的见解,如有错误,欢迎评论区留言讨论,共同进步。
聚类,即根据数据的“相似性”将数据集中的样本划分成若干个通常是不相交的子集,每一个子集称为一个**“簇”(cluster)**;需注意,聚类过程仅能自动形成簇结构,簇所对应的概念语义需由使用者来把握和命名。
形式化地说,假定样本集 D = { x 1 , x 2 , . . . , x m } D{\rm{ = \{ }}{{\rm{x}}_1}{\rm{,}}{{\rm{x}}_2}{\rm{,}}...{\rm{,}}{{\rm{x}}_m}{\rm{\} }} D={x1,x2,...,xm}包含 m m m个无标记样本,每个样本 x i = ( x i 1 ; x i 2 ; . . . ; x i n ) {x_i} = ({x_{i1}};{x_{i2}};...;{x_{in}}) xi=(xi1;xi2;...;xin)是一个 n n n维特征向量,则聚类算法将文本集 D D D划分为 k k k个不相交的簇 { C l ∣ l = 1 , 2 , . . . , k } \{ {C_l}|l = 1,2,...,k\} {Cl∣l=1,2,...,k},其中 C l ′ ∩ l ′ ≠ l C l = ∅ {C_{l'}}{ \cap _{l' \ne l}}{C_l} = \emptyset Cl′∩l′̸=lCl=∅且 D = ∪ l = 1 k C l D{\rm{ = }} \cup _{l = 1}^k{C_l} D=∪l=1kCl.相应地,我们用 λ j ∈ { 1 , 2 , . . . , k } {\lambda _j} \in \{ 1,2,...,k\} λj∈{1,2,...,k}表示样本 x j {x_j} xj的**“簇标记”(cluster label)**,即 x j ∈ C λ j {x_j} \in {C_{{\lambda _j}}} xj∈Cλj.于是,聚类的结果可用包含 m m m个元素的簇标记向量 λ = ( λ 1 ; λ 2 ; . . . ; λ m ) \lambda = ({\lambda _1};{\lambda _2};...;{\lambda _m}) λ=(λ1;λ2;...;λm)表示。
评估两个不同样本之间的“相似性”(即性能度量),通常使用的方法就是计算两个样本之间的“距离”(即距离计算)。使用不同的方法计算样本之间的距离会关系到聚类结果的好坏。
性能度量,即聚类的有效性指标(validity index)。根据聚类任务,我们希望得到的聚类结果是“簇内相似度”(intra-cluster similarity)高且“簇间相似度”(inter-cluster similarity)低。
对于数据集 D = { x 1 , x 2 , . . . , x m } D{\rm{ = \{ }}{{\rm{x}}_1}{\rm{,}}{{\rm{x}}_2}{\rm{,}}...{\rm{,}}{{\rm{x}}_m}{\rm{\} }} D={x1,x2,...,xm},假定通过聚类给出的簇划分为 C = { C 1 , C 2 , . . . , C k } C = \{ {C_1},{C_2},...,{C_k}\} C={C1,C2,...,Ck},参考模型给出的簇划分为 C ∗ = { C 1 ∗ , C 2 ∗ , . . . , C s ∗ } {C^*} = \{ C_1^*,C_2^*,...,C_s^*\} C∗={C1∗,C2∗,...,Cs∗}.相应地,令 λ \lambda λ与 λ ∗ {\lambda ^*} λ∗分别表示与 C C C和 C ∗ {C^*} C∗对应的簇标记向量.我们将样本两两配对考虑,定义
a = ∣ S S ∣ , S S = { ( x i , x j ) ∣ λ i = λ j , λ i ∗ = λ j ∗ , i < j } , a = \left| {SS} \right|,SS = \{ ({x_i},{x_j})|{\lambda _i} = {\lambda _j},\lambda _i^* = \lambda _j^*,i < j\} , a=∣SS∣,SS={(xi,xj)∣λi=λj,λi∗=λj∗,i<j}, b = ∣ S D ∣ , S D = { ( x i , x j ) ∣ λ i = λ j , λ i ∗ ≠ λ j ∗ , i < j } , b = \left| {SD} \right|,SD = \{ ({x_i},{x_j})|{\lambda _i} = {\lambda _j},\lambda _i^* \ne \lambda _j^*,i < j\} , b=∣SD∣,SD={(xi,xj)∣λi=λj,λi∗̸=λj∗,i<j}, c = ∣ D S ∣ , D S = { ( x i , x j ) ∣ λ i ≠ λ j , λ i ∗ = λ j ∗ , i < j } , c = \left| {DS} \right|,DS = \{ ({x_i},{x_j})|{\lambda _i} \ne {\lambda _j},\lambda _i^* = \lambda _j^*,i < j\} , c=∣DS∣,DS={(xi,xj)∣λi̸=λj,λi∗=λj∗,i<j}, d = ∣ D D ∣ , D D = { ( x i , x j ) ∣ λ i ≠ λ j , λ i ∗ ≠ λ j ∗ , i < j } , d = \left| {DD} \right|,DD = \{ ({x_i},{x_j})|{\lambda _i} \ne {\lambda _j},\lambda _i^* \ne \lambda _j^*,i < j\} , d=∣DD∣,DD={(xi,xj)∣λi̸=λj,λi∗̸=λj∗,i<j},注:由于每个样本对 ( x i , x j ) ( i < j ) ({x_i},{x_j})(i<j) (xi,xj)(i<j)仅能出现在一个集合中,因此有 a + b + c + d = m ( m − 1 ) / 2 a + b + c + d = m(m - 1)/2 a+b+c+d=m(m−1)/2成立。
一般地,我们有以下常用的聚类性能度量外部指标:
对于聚类结果的簇划分 C = { C 1 , C 2 , . . . , C k } C = \{ {C_1},{C_2},...,{C_k}\} C={C1,C2,...,Ck},定义 a v g ( C ) = 2 ∣ C ∣ ( ∣ C ∣ − 1 ) ∑ 1 ≤ i < j ≤ ∣ C ∣ d i s t ( x i , x j ) avg(C) = {2 \over {\left| C \right|(\left| C \right| - 1)}}\sum\nolimits_{1 \le i < j \le \left| C \right|} {dist({x_i},{x_j})} avg(C)=∣C∣(∣C∣−1)2∑1≤i<j≤∣C∣dist(xi,xj) d i a m ( C ) = max 1 ≤ i < j ≤ ∣ C ∣ d i s t ( x i , x j ) diam(C) = {\max _{1 \le i < j \le \left| C \right|}}dist({x_i},{x_j}) diam(C)=1≤i<j≤∣C∣maxdist(xi,xj) d min ( C i , C j ) = min x i ∈ C i , x j ∈ C j d i s t ( x i , x j ) {d_{\min }}({C_i},{C_j}) = {\min _{{x_i} \in {C_i},{x_j} \in {C_j}}}dist({x_i},{x_j}) dmin(Ci,Cj)=xi∈Ci,xj∈Cjmindist(xi,xj) d c e n ( C i , C j ) = d i s t ( μ i , μ j ) {d_{cen}}({C_i},{C_j}) = dist({\mu _i},{\mu _j}) dcen(Ci,Cj)=dist(μi,μj)
其中, d i s t ( ⋅ , ⋅ ) dist( \cdot , \cdot ) dist(⋅,⋅)计算两个样本之间的距离; μ \mu μ代表簇 C C C的中心点 μ = 1 ∣ C ∣ ∑ 1 ≤ i ≤ ∣ C ∣ x i \mu = {1 \over {\left| C \right|}}\sum\nolimits_{1 \le i \le \left| C \right|} {{x_i}} μ=∣C∣1∑1≤i≤∣C∣xi.显然, a v g ( C ) avg(C) avg(C)对应于簇 C C C内样本间的平均距离, d i a m ( C ) diam(C) diam(C)对应于簇 C C C内样本间的最远距离, d min ( C i , C j ) {d_{\min }}({C_i},{C_j}) dmin(Ci,Cj)对应于簇 C i {C_i} Ci与簇 C j {C_j} Cj最近样本间的距离, d c e n ( C i , C j ) {d_{cen}}({C_i},{C_j}) dcen(Ci,Cj)对应于簇 C i {C_i} Ci与簇 C j {C_j} Cj中心点间的距离.
一般地,我们有如下常用聚类性能度量内部指标:
对于 d i s t ( ⋅ , ⋅ ) dist( \cdot , \cdot ) dist(⋅,⋅),其距离度量(distance measure)满足:
对于给定样本 x i = ( x i 1 ; x i 2 ; . . . ; x i n ) {x_i} = ({x_{i1}};{x_{i2}};...;{x_{in}}) xi=(xi1;xi2;...;xin)与 x j = ( x j 1 ; x j 2 ; . . . ; x j n ) {x_j} = ({x_{j1}};{x_{j2}};...;{x_{jn}}) xj=(xj1;xj2;...;xjn),有闵可夫斯基距离(Minkowski distance): d i s t m k ( x i , x j ) = ( ∑ u = 1 n ∣ x i u − x j u ∣ ) 1 p dis{t_{mk}}({x_i},{x_j}) = {\left( {\sum\limits_{u = 1}^n {\left| {{x_{iu}} - {x_{ju}}} \right|} } \right)^{{1 \over p}}} distmk(xi,xj)=(u=1∑n∣xiu−xju∣)p1即 x i − x j {x_{i}} - {x_{j}} xi−xj的 L p {L_p} Lp范数 ∥ x i − x j ∥ 2 {\left\| {{x_i} - {x_j}} \right\|_2} ∥xi−xj∥2;对 p ≥ 1 p \ge 1 p≥1,显然满足距离度量的基本性质。
有如下推广:
p = 2 p=2 p=2时为欧氏距离: d i s t e d ( x i , x j ) = ∥ x i − x j ∥ 2 = ∑ u = 1 n ∣ x i u − x j u ∣ 2 dis{t_{ed}}({x_i},{x_j}) = {\left\| {{x_i} - {x_j}} \right\|_2} = \sqrt {\sum\limits_{u = 1}^n {{{\left| {{x_{iu}} - {x_{ju}}} \right|}^2}} } disted(xi,xj)=∥xi−xj∥2=u=1∑n∣xiu−xju∣2 p = 1 p=1 p=1时为曼哈顿距离: d i s t m a n ( x i , x j ) = ∥ x i − x j ∥ 1 = ∑ u = 1 n ∣ x i u − x j u ∣ dis{t_{man}}({x_i},{x_j}) = {\left\| {{x_i} - {x_j}} \right\|_1} = \sum\limits_{u = 1}^n {\left| {{x_{iu}} - {x_{ju}}} \right|} distman(xi,xj)=∥xi−xj∥1=u=1∑n∣xiu−xju∣
连续属性即“数值属性”,在定义域内有无穷多个取值,因其能直接在属性值上计算距离,故又称为“有序属性”;
离散属性即“列名属性”,在定义域上有有限个取值,因其不能直接在属性值上计算距离,故又称为“无序属性”。