【机器学习】聚类【Ⅰ】基础知识与距离度量
主要来自周志华《机器学习》一书,数学推导主要来自简书博主“形式运算”的原创博客,包含自己的理解。
有任何的书写错误、排版错误、概念错误等,希望大家包含指正。由于字数限制,分成五篇博客。
【机器学习】聚类【Ⅰ】基础知识与距离度量
【机器学习】聚类【Ⅱ】原型聚类经典算法
【机器学习】聚类【Ⅲ】高斯混合模型讲解
【机器学习】聚类【Ⅳ】高斯混合模型数学推导
【机器学习】聚类【Ⅴ】密度聚类与层次聚类
聚类
1 聚类任务
在“无监督学习”(unsupervised learning)中,训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的数据分析提供基础.此类学习任务中研究最多、应用最广的是“聚类”(clustering)。
常见的无监督学习任务还有密度估计(density estimation)、异常检测(anomaly detection)等。
聚类试图将数据集中的样本划分为若干个通常是不相交的子集,每个子集称为一个“簇”(cluster)。通过这样的划分,每个簇可能对应于一些潜在的概念(类别),如“浅色瓜” “深色瓜”,“有籽瓜” “无籽瓜”,甚至“本地瓜” “外地瓜”等;需说明的是,这些概念对聚类算法而言事先是未知的,聚类过程仅能自动形成簇结构,簇所对应的概念语义需由使用者来把握和命名。
形式化地说,假定样本集 D={x1,x2,...,xm}D = \{\pmb x_1,\pmb x_ 2,... ,\pmb x_m\}D={xx1,xx2,...,xxm} 包含 mmm 个无标记样本,每个样本 xi=(xi1;xi2;...;xin)\pmb x_i= (x_{i1}; x_{i2}; . . . ; x_{in})xxi=(xi1;xi2;...;xin) 是一个 nnn 维特征向量,则聚类算法将样本集 DDD 划分为 kkk 个不相交的簇 {Cl∣l=1,2,...,k}\{C_l \mid l = 1,2,... ,k\}{Cl∣l=1,2,...,k},其中 Cl′⋂l′≠lCl=∅C_{l'}\bigcap_{l'\ne l} C_l= \varnothingCl′⋂l′=lCl=∅ 且 D=⋂l=1kClD = \bigcap_{l=1}^k C_lD=⋂l=1kCl 。相应地,我们用 λj∈{1,2,...,k}\lambda_j ∈ \{1,2,...,k\}λj∈{1,2,...,k} 表示样本 xj\pmb x_jxxj 的“簇标记”(cluster label),即 xj∈Cλj\pmb x_j ∈ C_{\lambda_j}xxj∈Cλj 。于是,聚类的结果可用包含 mmm 个元素的簇标记向量 λ=(λ1;λ2;...;λm)\pmb \lambda= (\lambda_1;\lambda_2;. ..;\lambda_m)λλ=(λ1;λ2;...;λm) 表示。
聚类既能作为一个单独过程,用于找寻数据内在的分布结构,也可作为分类等其他学习任务的前驱过程。例如,在一些商业应用中需对新用户的类型进行判别,但定义“用户类型”对商家来说却可能不太容易,此时往往可先对用户数据进行聚类,根据聚类结果将每个簇定义为一个类,然后再基于这些类训练分类模型,用于判别新用户的类型。
基于不同的学习策略,人们设计出多种类型的聚类算法。本章后半部分将对不同类型的代表性算法进行介绍,但在此之前,我们先讨论聚类算法涉及的两个基本问题 —— 性能度量和距离计算。
2 性能度量
聚类性能度量亦称聚类“有效性指标”(validity index)。与监督学习中的性能度量作用相似,对聚类结果,我们需通过某种性能度量来评估其好坏;另一方面,若明确了最终将要使用的性能度量,则可直接将其作为聚类过程的优化目标,从而更好地得到符合要求的聚类结果。
可以将性能度量理解为监督学习中的“损失函数”,常见的分类损失函数有“均方误差”等。
聚类是将样本集 DDD 划分为若干互不相交的子集,即样本簇。那么,什么样的聚类结果比较好呢?直观上看,我们希望“物以类聚”,即同一簇的样本尽可能彼此相似,不同簇的样本尽可能不同。换言之,聚类结果的“簇内相似度”(intra-cluster similarity)高且“簇间相似度”(inter-cluster similarity)低。
聚类性能度量大致有两类。一类是将聚类结果与某个“参考模型”(reference model)进行比较,称为“外部指标”(external index),例如将领域专家给出的划分结果作为参考模型;另一类是直接考察聚类结果而不利用任何参考模型,称为“内部指标”(internal index)。
2.1 外部指标
对数据集 D={x1,x2,...,xm}D = \{\pmb x_1,\pmb x_2,. . . ,\pmb x_m\}D={xx1,xx2,...,xxm},假定通过聚类给出的簇划分为 C={C1,C2,...,Ck}\mathcal{C}= \{C_1,C_2,...,C_k\}C={C1,C2,...,Ck},参考模型给出的簇划分为 C∗={C1∗,C2∗,...,Cs∗]}\mathcal {C}^*=\{C_1^*,C_2^*,... ,C_s^*]\}C∗={C1∗,C2∗,...,Cs∗]} 。相应地,令 λ\pmb \lambdaλλ 与 λ∗\pmb \lambda^*λλ∗ 分别表示与 C\mathcal CC 和 C∗\mathcal C^*C∗ 对应的簇标记向量。我们将样本两两配对考虑,定义
a=∣SS∣,SS={(xi,xj)∣λi=λj,λi∗=λj∗,i<j}a=∣SD∣,SD={(xi,xj)∣λi=λj,λi∗≠λj∗,i<j}a=∣DS∣,DS={(xi,xj)∣λi≠λj,λi∗=λj∗,i<j}a=∣DD∣,DD={(xi,xj)∣λi≠λj,λi∗≠λj∗,i<j}\begin{align} a&=|SS|,\space\space SS = \{(\pmb x_i,\pmb x_j) \mid \lambda_i=\lambda_j,\lambda_i^*=\lambda_j^*,i<j\}\tag{1}\\ a&=|SD|,\space\space SD = \{(\pmb x_i,\pmb x_j) \mid \lambda_i=\lambda_j,\lambda_i^*\ne\lambda_j^*,i<j\}\tag{2}\\ a&=|DS|,\space\space DS = \{(\pmb x_i,\pmb x_j) \mid \lambda_i\ne\lambda_j,\lambda_i^*=\lambda_j^*,i<j\}\tag{3}\\ a&=|DD|,\space\space DD = \{(\pmb x_i,\pmb x_j) \mid \lambda_i\ne\lambda_j,\lambda_i^*\ne\lambda_j^*,i<j\}\tag{4}\\ \end{align} aaaa=∣SS∣, SS={(xxi,xxj)∣λi=λj,λi∗=λj∗,i<j}=∣SD∣, SD={(xxi,xxj)∣λi=λj,λi∗=λj∗,i<j}=∣DS∣, DS={(xxi,xxj)∣λi=λj,λi∗=λj∗,i<j}=∣DD∣, DD={(xxi,xxj)∣λi=λj,λi∗=λj∗,i<j}(1)(2)(3)(4)
其中集合 SSSSSS 包含了在 C\mathcal CC 中隶属于相同簇且在 C∗\mathcal C^*C∗ 中也隶属于相同簇的样本对,集合 SDSDSD 包含了在 C\mathcal CC 中隶属于相同簇但在 C∗\mathcal C^*C∗ 中隶属于不同簇的样本对,⋅⋅⋅···⋅⋅⋅ ⋅⋅⋅···⋅⋅⋅ 由于每个样本对 (xi,xj)(\pmb x_i,\pmb x_j)(xxi,xxj) (i<j)(i<j)(i<j) 仅能出现在一个集合中,因此有 a+b+c+d=m(m−1)/2a+b+c+d = m(m -1)/2a+b+c+d=m(m−1)/2 成立。
S:Same,D:Different,方便记忆每个集合标号表示的含义。
基于式 (1)∼(4)(1)\sim(4)(1)∼(4) 可导出下面这些常用的聚类性能度量外部指标:
Jaccard 系数(Jaccard Coefficient,简称 JC)
JC=aa+b+c(5){\rm JC}=\frac{a}{a+b+c}\tag{5} JC=a+b+ca(5)FM 指数(Fowlkes and Mallows Index,简称 FMI)
FMI=aa+b⋅aa+c(6){\rm FMI} = \sqrt{\frac{a}{a+b}·\frac{a}{a+c}}\tag{6} FMI=a+ba⋅a+ca(6)Rand 指数(Rand Index,简称 RI)
RI=2(a+d)m(m−1)(7){\rm RI}=\frac{2(a+d)}{m(m-1)}\tag{7} RI=m(m−1)2(a+d)(7)只有该指标认为集合 DDDDDD 有参考价值,∣DD∣|DD|∣DD∣ 也能够一定程度上说明模型的合理性。
显然,上述性能度量的结果值均在 [0,1][0,1][0,1] 区间,值越大越好。
2.2 内部指标
考虑聚类结果的簇划分 C={C1,C2,...,Ck}\mathcal C= \{C_1,C_2,.. . ,C_k\}C={C1,C2,...,Ck},定义簇内散度为
avg(C)=2∣C∣(∣C∣−1)∑1≤i<j≤∣C∣dist(xi,xj)diam(C)=max1≤i<j≤∣C∣dist(xi,xj)\begin{align} {\rm avg}(C)&=\frac{2}{|C|(|C|-1)} \sum_{1\le i < j \le |C|} {\rm dist} (\pmb x_i, \pmb x_j)\tag{8} \\ {\rm diam}(C)&= \max_{1\le i < j \le |C|} {\rm dist}(\pmb x_i, \pmb x_j) \tag{9} \\ \end{align} avg(C)diam(C)=∣C∣(∣C∣−1)21≤i<j≤∣C∣∑dist(xxi,xxj)=1≤i<j≤∣C∣maxdist(xxi,xxj)(8)(9)
定义簇间散度为
dmin(Ci,Cj)=minxi∈Ci,xj∈Cjdist(xi,xj)dcen(Ci,Cj)=dist(μi,μj)\begin{align} d_{\rm min}(C_i,C_j)&=\min_{\pmb x_i∈C_i,\pmb x_j∈\pmb C_j} {\rm dist}(\pmb x_i,\pmb x_j)\tag{10} \\ d_{\rm cen}(C_i,C_j)&={\rm dist}(\pmb \mu_i, \pmb \mu_j)\tag{11} \\ \end{align} dmin(Ci,Cj)dcen(Ci,Cj)=xxi∈Ci,xxj∈CCjmindist(xxi,xxj)=dist(μμi,μμj)(10)(11)
其中,dist(⋅,⋅){\rm dist}(·,·)dist(⋅,⋅) 用于计算两个样本之间的距离,距离越大则样本的相似度越低;μ\pmb \muμμ 代表簇 CCC 的中心点 μ=1∣C∣∑1≤i≤∣C∣xi\pmb \mu=\frac{1}{|C|}\sum_{1\le i\le |C|} \pmb x_iμμ=∣C∣1∑1≤i≤∣C∣xxi 。显然,avg(C){\rm avg}(C)avg(C) 对应于簇 CCC 内样本间的平均距离,diam(C){\rm diam}(C)diam(C) 对应于簇 CCC 内样本间的最远距离,dmin(Ci,Cj)d_{\rm min}(C_i,C_j)dmin(Ci,Cj) 对应于簇 CiC_iCi 与簇 CjC_jCj 最近样本间的距离,dcen(Ci,Cj)d_{\rm cen}(C_i,C_j)dcen(Ci,Cj) 对应于簇 CiC_iCi 与簇 CjC_jCj 中心点间的距离。
“散度”与“相似度”是两个相反的概念,即散度越大相似度越低。考虑到式 (8)∼(11)(8)\sim(11)(8)∼(11) 计算出的值越大相似度越低,因此认为这些公式描述的是散度而不是相似度会更加形象。
基于式 (8)∼(11)(8)\sim(11)(8)∼(11) 可导出下面这些常用的聚类性能度量内部指标:
DB 指数(Davies-Bouldin Index,简称 DBI)
DBI=1k∑i=1kmaxj≠i(avg(Ci)+avg(Cj)dcen(μi,μj))(12){\rm DBI} = \frac{1}{k}\sum_{i=1}^k\max_{j\ne i}\left(\frac{{\rm avg}(C_i)+{\rm avg}(C_j)}{d_{\rm cen}(\pmb \mu_i,\pmb \mu_j)}\right)\tag{12} DBI=k1i=1∑kj=imax(dcen(μμi,μμj)avg(Ci)+avg(Cj))(12)语言描述该指标的含义:对于每个簇,我们找到另一个簇,满足两个簇的簇内散度(以 avg\rm avgavg 来度量)之和与簇间散度(以 dcend_{\rm cen}dcen 来度量)的比值最大,最后计算 kkk 个比值的均值。
Dunn 指数(Dunn Index,简称DI)
DI=min1≤i≤k{minj≠i(dmin(Ci,Cj)max1≤l≤kdiam(Cl))}(13){\rm DI}=\min_{1\le i\le k}\left\{\min_{j\ne i}\left(\frac{d_{\rm min}(C_i,C_j)}{\max_{1\le l \le k} {{\rm diam}(C_l)}}\right)\right\}\tag{13} DI=1≤i≤kmin{j=imin(max1≤l≤kdiam(Cl)dmin(Ci,Cj))}(13)式 (13)(13)(13) 可化为
DI=min1≤i≤k{minj≠idmin(Ci,Cj)}max1≤l≤kdiam(Cl){\rm DI}=\frac{\min_{1\le i\le k}\left\{\min_{j\ne i}{d_{\rm min}(C_i,C_j)}\right\}}{\max_{1\le l \le k} {{\rm diam}(C_l)}} DI=max1≤l≤kdiam(Cl)min1≤i≤k{minj=idmin(Ci,Cj)}
对于确定的模型和数据集而言,max1≤l≤kdiam(Cl)\max_{1\le l \le k} {{\rm diam}(C_l)}max1≤l≤kdiam(Cl) 是固定值,确定最大的簇内散度;只要找到两个不同的簇,满足簇间散度最小(以 dmind_{\rm min}dmin 来度量),计算最小簇间散度与最大簇内散度的比值。
内部指标对应的性能度量公式会紧扣聚类「高内聚低耦合」的目标,所以公式会涉及对簇内散度和簇间散度两部分的度量。
显然,DBI 的值越小越好,而 DI 则相反,值越大越好。
3 距离度量
观察式 (8)∼(11)(8)\sim (11)(8)∼(11) 发现,无论是对簇内散度的度量还是对簇间散度的度量都离不开函数 dist(⋅,⋅){\rm dist}(·,·)dist(⋅,⋅) ,dist(⋅,⋅){\rm dist}(·,·)dist(⋅,⋅) 描述了样本之间的距离或相似度,也就是说,簇内散度和簇间散度本质上都是通过样本相似度进行度量的。
3.1 可度量距离
如果函数 dist(⋅,⋅){\rm dist}(·,·)dist(⋅,⋅) 描述的是可度量的距离,则需要满足一些基本性质:
非负性:dist(xi,xj)≥0同一性:dist(xi,xj)=0当且仅当 xi=xj对称性:dist(xi,xj)=dist(xj,xi)直递性:dist(xi,xj)≤dist(xi,xk)+dist(xk,xj)\begin{align} 非负性&:{\rm dist}(\pmb x_i,\pmb x_j)≥0 \tag{14} \\ 同一性&:{\rm dist}(\pmb x_i,\pmb x_j)=0 \space 当且仅当\space \pmb x_i=\pmb x_j \tag{15} \\ 对称性&:{\rm dist}(\pmb x_i,\pmb x_j) = {\rm dist}(\pmb x_j,\pmb x_i)\tag{16} \\ 直递性&:{\rm dist}(\pmb x_i,\pmb x_j)≤{\rm dist}(\pmb x_i , \pmb x_k ) + {\rm dist}(\pmb x_k, \pmb x_j)\tag{17} \end{align} 非负性同一性对称性直递性:dist(xxi,xxj)≥0:dist(xxi,xxj)=0 当且仅当 xxi=xxj:dist(xxi,xxj)=dist(xxj,xxi):dist(xxi,xxj)≤dist(xxi,xxk)+dist(xxk,xxj)(14)(15)(16)(17)
直递性常被直接称为“三角不等式”。
给定样本 xi=(xi1;xi2;⋅⋅⋅;xin)\pmb x_i=(x_{i1}; x_{i2};··· ; x_{in})xxi=(xi1;xi2;⋅⋅⋅;xin) 与 xj=(xj1;xj2;⋅⋅⋅;xjn)\pmb x_j = (x_{j1}; x_{j2};···; x_{jn})xxj=(xj1;xj2;⋅⋅⋅;xjn),最常用的是“闵可夫斯基距离”(Minkowski distance),也称为“闵氏距离”或“明氏距离”
distmk(xi,xj)=(∑u=1n∣xiu−xju∣p)1p(18){\rm dist}_{\rm mk}(\pmb x_i,\pmb x_j)=\left( \sum_{u=1}^n|x_{iu}-x_{ju}|^p \right)^{\frac{1}{p}}\tag{18} distmk(xxi,xxj)=(u=1∑n∣xiu−xju∣p)p1(18)
根据式 (18)(18)(18) 的形式可以看出,这就是 xi−xj\pmb x_i-\pmb x_jxxi−xxj 的 Lp{\rm L}_pLp 范数 ∥xi−xj∥p\Vert \pmb x_i-\pmb x_j \Vert_p∥xxi−xxj∥p 。对 p≥1p\ge 1p≥1 ,式 (18)(18)(18) 显然满足式 (14)∼(17)(14)\sim (17)(14)∼(17) 的距离度量基本性质。
范数定义中要求范数满足”三角不等式“。规定 p≥1p\ge1p≥1 ,因为当 0<p<10\lt p\lt 10<p<1 时不满足三角不等式。
没有找到正确且严谨的数学证明,暂时只能通过举例子的方式直观理解。
注意文中规定的 x={x1;x2;⋅⋅⋅;xn}\pmb x=\{x_1;x_2;···;x_n\}xx={x1;x2;⋅⋅⋅;xn} 与 xi=(xi1;xi2;⋅⋅⋅;xin)\pmb x_i=(x_{i1}; x_{i2};··· ; x_{in})xxi=(xi1;xi2;⋅⋅⋅;xin) 。
当 p=1p=1p=1 时,闵可夫斯基距离即曼哈顿距离(Manhattan distance)
distman(xi,xj)=∥xi−xj∥1=∑u=1n∣xiu−xju∣(19){\rm dist}_{\rm man}(\pmb x_i,\pmb x_j)=\Vert \pmb x_i - \pmb x_j \Vert_1 = {\sum_{u=1}^n\vert x_{iu}-x_{ju} \vert}\tag{19} distman(xxi,xxj)=∥xxi−xxj∥1=u=1∑n∣xiu−xju∣(19)
当 p=2p=2p=2 时,闵可夫斯基距离即欧氏距离(Euclidean distance)
disted(xi,xj)=∥xi−xj∥2=∑u=1n∣xiu−xju∣2(20){\rm dist}_{\rm ed}(\pmb x_i,\pmb x_j)=\Vert \pmb x_i - \pmb x_j \Vert_2 = \sqrt{\sum_{u=1}^n\vert x_{iu}-x_{ju} \vert^2}\tag{20} disted(xxi,xxj)=∥xxi−xxj∥2=u=1∑n∣xiu−xju∣2(20)
当 p→∞p\rightarrow \inftyp→∞ 时,闵可夫斯基距离即切比雪夫距离(Chebyshev distance)
distche(xi,xj)=∥xi−xj∥∞=maxu∣xiu−xju∣(21){\rm dist}_{\rm che}(\pmb x_i,\pmb x_j)=\Vert \pmb x_i - \pmb x_j \Vert_{\infty} = {\max_u\vert x_{iu}-x_{ju} \vert}\tag{21} distche(xxi,xxj)=∥xxi−xxj∥∞=umax∣xiu−xju∣(21)
切比雪夫公式推导:
由定义 ∥x∥p=(∣x1∣p+∣x2∣p+⋅⋅⋅+∣xn∣p)1p\Vert\pmb x \Vert_p=\left(\vert x_1 \vert^p+\vert x_2 \vert^p+···+\vert x_n \vert^p\right)^\frac{1}{p}∥xx∥p=(∣x1∣p+∣x2∣p+⋅⋅⋅+∣xn∣p)p1 ,记 x={x1;x2;⋅⋅⋅;xn}\pmb x = \{x_1;x_2;···;x_n\}xx={x1;x2;⋅⋅⋅;xn}, xmax=max(∣x1∣,∣x2∣,⋅⋅⋅,∣xn∣)x_{\rm max}=\max {\left( \vert x_1 \vert,\vert x_2 \vert,···,\vert x_n \vert \right)}xmax=max(∣x1∣,∣x2∣,⋅⋅⋅,∣xn∣) 。
limp→∞∥x∥p=limp→∞xmax⋅((∣x1∣xmax)p+(∣x2∣xmax)p+⋅⋅⋅+(∣xn∣xmax)p)1p=xmax⋅limp→∞((∣x1∣xmax)p+(∣x2∣xmax)p+⋅⋅⋅+(∣xn∣xmax)p)1p\begin{align} \lim_{p\rightarrow\infty}\Vert \pmb x \Vert_p&=\lim_{p\rightarrow\infty} x_{\rm max}·\left(\left(\frac{\vert x_1 \vert}{x_{\rm max}}\right)^p+\left(\frac{\vert x_2 \vert}{x_{\rm max}}\right)^p+···+\left(\frac{\vert x_n \vert}{x_{\rm max}}\right)^p\right)^\frac{1}{p}\\ &=x_{\rm max} · \lim_{p\rightarrow\infty} \left(\left(\frac{\vert x_1 \vert}{x_{\rm max}}\right)^p+\left(\frac{\vert x_2 \vert}{x_{\rm max}}\right)^p+···+\left(\frac{\vert x_n \vert}{x_{\rm max}}\right)^p\right)^\frac{1}{p}\\ \end{align} p→∞lim∥xx∥p=p→∞limxmax⋅((xmax∣x1∣)p+(xmax∣x2∣)p+⋅⋅⋅+(xmax∣xn∣)p)p1=xmax⋅p→∞lim((xmax∣x1∣)p+(xmax∣x2∣)p+⋅⋅⋅+(xmax∣xn∣)p)p1
因为 1≤∑i=1n(∣xi∣xmax)p≤n1\le \sum \limits_{i=1}^n \left( \frac{\vert x_i \vert}{x_{\rm max}} \right)^p\le n1≤i=1∑n(xmax∣xi∣)p≤n ,故由 limp→∞n1p=1\lim \limits_{p\rightarrow\infty} n^\frac{1}{p}=1p→∞limnp1=1 和夹逼定理,有
limp→∞((∣x1∣xmax)p+(∣x2∣xmax)p+⋅⋅⋅+(∣xn∣xmax)p)1p=1\lim_{p\rightarrow\infty} \left(\left(\frac{\vert x_1 \vert}{x_{\rm max}}\right)^p+\left(\frac{\vert x_2 \vert}{x_{\rm max}}\right)^p+···+\left(\frac{\vert x_n \vert}{x_{\rm max}}\right)^p\right)^\frac{1}{p}=1 p→∞lim((xmax∣x1∣)p+(xmax∣x2∣)p+⋅⋅⋅+(xmax∣xn∣)p)p1=1
从而 limp→∞∥x∥p=max(∣x1∣,∣x2∣,⋅⋅⋅,∣xn∣)\lim \limits_{p\rightarrow\infty} \Vert\pmb x \Vert_p = \max {\left( \vert x_1 \vert,\vert x_2 \vert,···,\vert x_n \vert \right)}p→∞lim∥xx∥p=max(∣x1∣,∣x2∣,⋅⋅⋅,∣xn∣) 。
我们常将属性划分为“连续属性”(continuous attribute)和“离散属性”(categorical attribute),前者在定义域上有无穷多个可能的取值,后者在定义域上是有限个取值。然而,在讨论距离计算时,属性上是否定义了“序”关系更为重要。例如定义域为 {1,2,3}\{1,2,3\}{1,2,3} 的离散属性与连续属性的性质更接近一些,能直接在属性值上计算距离:“ 111 ”与“ 222 ”比较接近、与“ 333 ”比较远,这样的属性称为“有序属性”(ordinal attribute);而定义域为 {飞机,火车,轮船}\{飞机,火车,轮船\}{飞机,火车,轮船} 这样的离散属性则不能直接在属性值上计算距离,称为“无序属性”(non-ordinalattribute)。显然,闵可夫斯基距离可用于有序属性。
关于有序属性,大概可以这样理解:假设身高的属性有 {矮,中,高}\{矮,中,高\}{矮,中,高},为了计算方便,我们把它们转成数字 {1,2,3}\{1,2,3\}{1,2,3},111 和 222 较接近(“矮”和”中“相差较小),111 和 333 较远(“矮”和“高”相差较大),发现这样的转化基本可以反应原先属性间的关系。类似这样的属性可以认为是有序属性,可以直接转化成数字。
关于无序属性,比如颜色这个属性,假设有 {红,黄,蓝}\{红,黄,蓝\}{红,黄,蓝},我们不能简单的转化为 {1,2,3}\{1,2,3\}{1,2,3},因为原先的属性间没有明显的大小远近等“序”的关系,如果转化为 {1,2,3}\{1,2,3\}{1,2,3},当计算距离时,会无形中引入这种序的关系(“红”和“黄”更接近,“红”和“蓝”更远)。类似这样的属性可以认为是无序属性。当然,无序属性通常可以转化为向量处理,比如转化为 {[1,0,0],[0,1,0],[0,0,1]}\{[1,0,0],[0,1,0],[0,0,1]\}{[1,0,0],[0,1,0],[0,0,1]} 这三个属性。
对无序属性可采用 VDM(Value Difference Metric)。令 mu,am_{u,a}mu,a 表示在属性 uuu 上取值为 aaa 的样本数,mu,a,im_{u,a,i}mu,a,i 表示在第 iii 个样本簇中在属性 uuu 上取值为 aaa 的样本数,kkk 为样本簇数,则属性 uuu 上两个离散值 aaa 与 bbb 之间的 VDM 距离为
VDMp(a,b)=∑i=1k∣mu,a,imu,amu,b,imu,b∣p(22){\rm VDM}_p(a,b)=\sum_{i=1}^k \left|\frac{m_{u,a,i}}{m_{u,a}} \frac{m_{u,b,i}}{m_{u,b}} \right|^p\tag{22} VDMp(a,b)=i=1∑k∣∣mu,amu,a,imu,bmu,b,i∣∣p(22)
语言描述其含义为:对于每个簇而言,计算簇内两个不同的属性取值(同一个属性列)出现次数占全部样本中该属性取值的出现次数的比例之差,计算差值的 ppp 次幂后求和。
于是,将闵可夫斯基距离和 VDM 结合即可处理混合属性。假定有 ncn_cnc 个有序属性、n−ncn - n_cn−nc 个无序属性,不失一般性,令有序属性排列在无序属性之前,则
MinkovDMp(xi,xj)=(∑u=1nc∣xiu−xju∣p+∑u=nc+1nVDMp(xiu,xju))1p(23){\rm MinkovDM}_p(\pmb x_i , \pmb x_j ) = \left( \sum_{u=1}^{n_c}\vert x_{iu}-x_{ju} \vert^p + \sum_{u=n_c+1}^n {\rm VDM}_p(x_{iu}, x_{ju}) \right)^\frac{1}{p}\tag {23} MinkovDMp(xxi,xxj)=(u=1∑nc∣xiu−xju∣p+u=nc+1∑nVDMp(xiu,xju))p1(23)
当样本空间中不同属性的重要性不同时,可使用“加权距离”(weighted distance)。以加权闵可夫斯基距离为例:
distwmk(xi,xj)=(w1⋅∣xi1−xj1∣p+⋅⋅⋅+wn⋅∣xin−xjn∣p)1p(24){\rm dist_{wmk}}(\pmb x_i, \pmb x_j)=(w_1·|x_{i1}-x_{j1}|^p+···+w_n·|x_{in}-x_{jn}|^p)^\frac{1}{p} \tag{24} distwmk(xxi,xxj)=(w1⋅∣xi1−xj1∣p+⋅⋅⋅+wn⋅∣xin−xjn∣p)p1(24)
其中权重 wi≥0w_i \ge 0wi≥0 (i=1,2,...,n)(i= 1,2,. .. , n)(i=1,2,...,n) 表征不同属性的重要性,通常 ∑i=1nwi=1\sum_{i=1}^nw_i=1∑i=1nwi=1 。
3.2 非度量距离
如果函数 dist(⋅,⋅){\rm dist}(·,·)dist(⋅,⋅) 描述的不是可度量的距离,这样的距离称为”非度量距离“(non-metric distance)。通常我们是基于某种形式的距离来定义“相似度度量”(similarity measure),距离越大,相似度越小。然而,对于”非度量距离“而言,尽管也是用于度量相似度,但不必满足”可度量距离“的所有基本性质,尤其是直递性 (17)(17)(17)。例如在某些任务中我们可能希望有这样的相似度度量:“人”和“马”分别与“人马”相似,但“人”与“马”很不相似;要达到这个目的,可以令“人”和“马”与“人马”之间的距离都比较小,但“人”与“马”之间的距离很大,如图 111 所示,此时该距离不再满足直递性。
所谓的”可度量距离“是我为了区分”非度量距离“起的称呼,这仅仅是为了区分前者满足四条性质,而后者不满足,具体意义与名称关系不密切。
图 1 非度量距离的一个例子
此外,该部分介绍的距离计算式都是事先定义好的,但在不少现实任务中,有必要基于数据样本来确定合适的距离计算式,这可通过“距离度量学习”(distance metric learning)来实现。有关”距离度量学习“的相关知识放在其他文章中讲解。
注意理解一些概念及其关系:
聚类追求的目标可以概述为”高内聚低耦合“,为了衡量聚类效果的好坏,引入了”性能度量“,所以”性能度量“必须要能够度量”簇内散度“和”簇间散度“两个方面。簇内散度度量和簇间散度度量的粒度都是”簇“,它们都是通过样本间相关性(样本间距离)来表达的,因此引入了”距离度量“。“距离度量”中提到了许多度量样本间相关性的公式,可见它们的粒度是”样本“。
3.3 无量纲化
样本的不同属性往往表示不同的物理意义,不同属性的取值具有不同的形式或单位,这种属性在形式或者单位上的不同称为”量纲“不同。由式 (18)∼(21)(18)\sim(21)(18)∼(21) 可知,在计算两个样本的距离时需要计算全部属性的数值差值之和,每个样本具有多方面的属性,直接计算不同属性对应差值之和是不妥的,当各属性的测量值相差悬殊时,常发生“大数吃小数”的现象,即大数会起主导作用。举个例子,
年龄 | 收入 | 家庭人口 | |
---|---|---|---|
甲 | 30 | 3000 | 1 |
乙 | 40 | 4200 | 3 |
计算两个样本的欧氏距离 d=(30−40)2+(3000−4200)2+(1−3)2d=\sqrt{(30-40)^2+(3000-4200)^2 + (1-3)^2}d=(30−40)2+(3000−4200)2+(1−3)2 ,显然计算距离中“收入”起主导作用,使得“家庭人口”对距离的影响非常小,这就是量纲不统一带来的问题。
为消除量纲的影响,通常先将每个属性进行标准化或归一化。
标准化
将一组数据线性变换为均值为 000,方差为 111 的分布,与原始数据具有相同的分布(这里所说的“分布”更准确来说是“形状”或者“分布函数名称”,允许分布参数不同)。比如原始数据满足正态分布,则变换后仍满足正态分布,但均值和方差发生了改变,在本文中认为这样也属于具有相同的分布。
第 iii 个样本的属性 uuu 标准化后
xiu′=xiu−μuσu(25)x_{iu}'=\frac{x_{iu}-\mu_u}{\sigma_u}\tag{25} xiu′=σuxiu−μu(25)
对数据集 D={x1,x2,...,xm}D = \{\pmb x_1,\pmb x_2,. . . ,\pmb x_m\}D={xx1,xx2,...,xxm},样本 xi=(xi1;xi2;⋅⋅⋅;xin)\pmb x_i=(x_{i1}; x_{i2};··· ; x_{in})xxi=(xi1;xi2;⋅⋅⋅;xin),标准化后的样本 xi′={xi1′;xi2′;⋅⋅⋅;xin′}\pmb x_i'=\{x_{i1}';x_{i2}';···;x_{in}'\}xxi′={xi1′;xi2′;⋅⋅⋅;xin′},全部样本属性 uuu 的均值 μu=1m∑i=1mxiu\mu_u=\frac{1}{m}\sum_{i=1}^m x_{iu}μu=m1∑i=1mxiu,全部样本属性 uuu 的标准差 σu=1m∑i=1m(xiu−μu)2\sigma_u=\sqrt{\frac{1}{m}\sum_{i=1}^m (x_{iu} - \mu_u)^2}σu=m1∑i=1m(xiu−μu)2 。可见,标准化是针对全部样本的某一属性列进行的,并非针对单个样本。比如对属性“体重”进行标准化,则需要计算出全部样本“体重”均值和标准差,据此按照式 (25)(25)(25) 对全部样本的“体重”进行标准化。
归一化
将一组数据线性映射到固定区间内,通常这个区间是 [0,1][0, 1][0,1] 。广义的讲,可以是各种区间,比如映射到 [0,1][0,1][0,1] 后可以继续映射到其他范围,在图像处理中可能会映射到 [0,255][0,255][0,255],其他情况可能映射到 [−1,1][-1,1][−1,1] 。
第 iii 个样本的属性 uuu 归一化到区间 [0,1][0,1][0,1] 后
xiu′=xiu−xuminxumax−xumin(26)x_{iu}'=\frac{x_{iu}-x_{u_{\rm min}}}{x_{u_{\rm max}}- x_{u_{\rm min}}}\tag{26} xiu′=xumax−xuminxiu−xumin(26)
全部样本属性 uuu 的最小值 xumin=minixiux_{u_{\rm min}}=\min \limits_{i} x_{iu}xumin=iminxiu,全部样本属性 uuu 的最大值 xumax=maxixiux_{u_{\rm max}}=\max\limits_{i} x_{iu}xumax=imaxxiu 。与“标准化”类似,归一化也是对全部样本的同一属性进行的。
标准化与归一化的差异
二者的差异使得在机器学习中,标准化是更常用的手段,而归一化的应用场景有限。
标准化更好保持了样本间距。当样本中有异常点时,归一化有可能将正常的样本“挤”到一起去。比如三个样本,某个特征的值为 {1,2,10000}\{1,2,10000\}{1,2,10000},假设 100001000010000 这个值是异常值,用归一化的方法后,正常的 111 和 222 就会被“挤”得非常近。如果实际情况中两个样本的标签是相反或者不同的,那么在无监督聚类时参考归一化后的该属性值,显然会对结果起一定的误导作用。
标准化更符合统计学假设。对一个数值属性来说,很大可能它是服从正态分布的。标准化只是将其线性变换为标准正态分布。
【机器学习】聚类【Ⅰ】基础知识与距离度量相关推荐
- AI入门:机器学习领域基础知识
本章要点: AI与人类大脑的联系: 对输入/输出建模: 分类和回归: 时间序列: 训练. 外行人都以为人工智能是人造大脑,并且总把它和科幻电影中的机器人联系起来,而实际上这些科幻场景与现如今的人工智能 ...
- 机器学习之基础知识(从数据处理到模型评估)
1.数据预处理 1.1归一化 在机器学习算法实践中,我们往往有着将不同规格的数据转换到同一规格,或不同分布的数据转换到某个特定分布 的需求,这种需求统称为将数据"无量纲化". ...
- 机器学习平台基础知识
分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 什么是机器学习平台? 机器学习平台是面向数据科学团队 ...
- 机器学习之基础知识(全)
目录 1.机器学习概述 1.1 人工智能概述 1.1.1 人工智能使用场景 1.1.2 人工智能小案例 1.2 人工智能发展历程 1.2.1 图灵测试 1.2.2 发展历程 1.2.3 小结 1.3 ...
- 机器学习算法基础知识
在我们了解了需要解决的机器学习问题的类型之后,我们可以开始考虑搜集来的数据的类型以及我们可以尝试的机器学习算法.在这个帖子里,我们会介绍一遍最流行的机器学习算法.通过浏览主要的算法来大致了解可以利用的 ...
- 机器学习Tensorflow基础知识、张量与变量
TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库.节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组, ...
- [机器学习]Python基础知识笔记整理
机器学习主要语言Python,C++,把之前收集和总结的笔记: 目录列表: 字符编码声明 字符串String 列表list 列表与字符串 元组 字典dic 集合set 控制结构 猜拳游戏练习 列表生成 ...
- 独家 | 机器学习基础知识梳理,新手必备!(附链接)
翻译:吴金笛 校对:丁楠雅 本文约4000字,建议阅读16分钟. 本文介绍了机器学习以及几个易与其混淆的术语,并给出了几个机器学习的应用. 介绍 在过去的几年里,人们对机器学习重新产生了兴趣. 这种复 ...
- 自治系统 AS 及 BGP 协议的基础知识
目录 1. 自治系统 (Autonomous System, AS) 1.1. 基本概念 1.2. 自治系统号 (Autonomous System Number, ASN) 1.3. 相关查询网址 ...
最新文章
- 深入讲解配置Cisco路由器日志中的速率限制问题(三)
- 这些建议需要竞赛组委会酌情考虑
- 【FPGA】流水线学习笔记
- 做自适应网站专业乐云seo_乐云分享新站SEO优化实践经验,收录和排名持续稳定上升方...
- 分布式事务中间件Fescar—全局写排它锁解读
- 笔记-项目采购管理-合同类型-成本加激励费用合同
- Faster-RCNN的一些记录。
- java怎么设有滚动的标签,html标签overflow属性和javascript实现div标签滚动
- linux 后台程序 cout输入到文件,istringstream在读文件时候的应用
- pythondocx模板_使用python-docx-template修改word文档
- Linux学习6-CentOS搭建appium服务
- 读书学习:我编程我快乐(一.2)
- 【图像压缩】多层超先验模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》
- eclipse 的preferences下没有server
- 什么是4k视频分辨率
- 阅读笔记:利用Python进行数据分析第2版——第8章 数据规整:聚合、合并和重塑
- Windows10系统如何多开微信程序(上班划水必备)
- 这是一篇儿正儿八经的自我介绍~
- Java爬虫后台微信小程序之音乐播放器(下)
- Linux内核版本说明
热门文章
- Xcode_修改默认名称和公司
- 机器学习损失函数 / 激活函数 / 优化算法 总览
- 密歇根大学计算机硕士学制,密歇根大学安娜堡分校学专业设置及学制介绍
- 【k8s的持久化存储】PV、PVC、StorageClass讲解
- iPhone5s ios 12.5.4越狱后可以ssh登录但是不能打开界面
- 1.5 DICOM图像CT值转RGB
- 算法推荐女朋友,靠谱吗?
- Python核心编程读书笔记
- android apn xml,android 批改默认APN
- 用一个原始密码针对不同软件生成不同密码并保证相对安全