其他分享
首页 > 其他分享> > 聚类

聚类

作者:互联网

聚类

clustering

形式化地说,假定样本集 \(D=\left\{\boldsymbol{x}_{1},\boldsymbol{x}_{2},\ldots,\boldsymbol{x}_{m}\right\}\) 包含 \(m\) 个无标记样本,每个样本 \(\boldsymbol{x}_{i}=\left(x_{i 1} ; x_{i 2} ; \ldots ; x_{i n}\right)\) 是一个 \(n\) 维特征向量,则聚类算法将样本集 \(D\) 划分为 \(k\) 个不相交的簇 \(\left\{C_{l} \mid l=1,2 ; \ldots,k\right\}\),其中 \(C_{l^{\prime}} \bigcap_{l^{\prime} \neq l} C_{l}=\varnothing\) 且 \(D=\bigcup_{l=1}^{k} C_{l}\)。相应地,我们用 \(\lambda_{j} \in\{1,2,\ldots,k\}\) 表示样本 \(\boldsymbol{x}_{j}\) 的 “簇标 记" (cluster label),即 \(\boldsymbol{x}_{j} \in C_{\lambda_{j}}\)。于是,聚类的结果可用包含 \(m\) 个元素的簇标 记向量 \(\boldsymbol{\lambda}=\left(\lambda_{1} ; \lambda_{2} ; \ldots ; \lambda_{m}\right)\) 表示.

性能度量

聚类性能度量亦称聚类“有效性指标”(validity index)。与监督学习中的性能度量作用相似,对聚类结果,我们需通过某种性能度量来评估其好坏;另一方面,若明确了最终将要使用的性能度量,则可直接将其作为聚类过程的优化目标,从而更好地得到符合要求的聚类结果。

聚类是将样本集D划分为若干互不相交的子集,即样本簇。那么,什么样的聚类结果比较好呢?直观上看,我们希望“物以类聚”,即同一簇的样本尽可能彼此相似,不同簇的样本尽可能不同。换言之,聚类结果的“簇内相似度”(intra-cluster similarity)高且“簇间相似度”(inter-cluster similarity)低。

聚类性能度量大致有两类。一类是将聚类结果与某个“参考模型”(reference model)进行比较,称为“外部指标”(external index);另一类是直接考察聚类结果而不利用任何参考模型,称为“内部指标”(internalindex)。

书上给出了

外部指标:

内部指标:

距离计算

距离函数需要满足的基本性质:

最常用的是 “闵可夫斯基距离”(Minkowski distance)

其特殊情况,p=2 为欧氏距离

p=1 为曼哈顿距离

有序与无序

用于无序属性的 VDM 距离

原型聚类

“原型”是指样本空间中具有代表性的点

原型聚类亦称“基于原型的聚类”(prototype-based clustering),此类算法假设聚类结构能通过一组原型刻画,在现实聚类任务中极为常用。通常情形下,算法先对原型进行初始化,然后对原型进行迭代更新求解。采用不同的原型表示、不同的求解方式,将产生不同的算法。下面介绍几种著名的原型聚类算法.

k 均值聚类

给定样本集 \(D=\left\{\boldsymbol{x}_{1}, \boldsymbol{x}_{2}, \ldots, \boldsymbol{x}_{m}\right\}, " k\) 均值” \((k\)-means) \()\) 算法针对聚类所得簇划分 \(\mathcal{C}=\left\{C_{1}, C_{2}, \ldots, C_{k}\right\}\) 最小化平方误差

\[E=\sum_{i=1}^{k} \sum_{\boldsymbol{x} \in C_{i}}\left\|\boldsymbol{x}-\boldsymbol{\mu}_{i}\right\|_{2}^{2}, \tag{9.24} \]

其中 \(\mu_{i}=\frac{1}{\left|C_{i}\right|} \sum_{\boldsymbol{x} \in C_{i}} \boldsymbol{x}\) 是簇 \(C_{i}\) 的均值向量。直观来看,式(9.24) 在一定程度上刻画了簇内样本围绕簇均值向量的紧密程度, \(E\) 值越小则笶内样本相似度越高。

最小化式(9.24)并不容易,找到它的最优解需考察样本集 \(D\) 所有可能的簇划分,这是一个 NP 难问题[Aloise et al., 2009]。因此, \(k\) 均值算法采用了贪心策略,通过迭代优化来近似求解式 (9.24)。

image

为避免运行时间过长,通常设置一个最大运行轮数或最小调整幅度阈值,若达到最大轮数或调整幅度小于阈值,则停止运行.

学习向量量化

与 \(k\) 均值算法类似, “学习向量量化” (Learning Vector Quantization,简 称 LVQ)也是试图找到一组原型向量来刻画聚类结构,但与一般聚类算法不同的是,LVQ 假设数据样本带有类别标记,学习过程利用样本的这些监督信息来辅助聚类。

给定样本集 \(D=\left\{\left(\boldsymbol{x}_{1}, y_{1}\right),\left(\boldsymbol{x}_{2}, y_{2}\right), \ldots,\left(\boldsymbol{x}_{m}, y_{m}\right)\right\}\),每个样本 \(\boldsymbol{x}_{j}\) 是由 \(n\) 个 属性描述的特征向量 \(\left(x_{j 1} ; x_{j 2} ; \ldots ; x_{j n}\right), y_{j} \in \mathcal{Y}\) 是样本 \(\boldsymbol{x}_{j}\) 的类别标记。LVQ 的 目标是学得一组 \(n\) 维原型向量 \(\left\{\boldsymbol{p}_{1}, \boldsymbol{p}_{2}, \ldots, \boldsymbol{p}_{q}\right\}\),每个原型向量代表一个聚类簇,簇标记 \(t_{i} \in \mathcal{Y}\).

可看作通过聚类来形成类别“子类”结构,每个子类对应一个聚类簇.

image

在学得一组原型向量 ${\bold{p}_1,\bold{p}_2,..,\bold{p}_q}$后,即可实现对样本空间 \(\chi\) 的簇划分。对任意样本 \(\boldsymbol{x}\),它将被划入与其距离最近的原型向量所代表的簇中;换言之,每个原型向量 \(\boldsymbol{p}_{i}\) 定义了与之相关的一个区域 \(R_{i}\),该区域中每个样本与 \(\boldsymbol{p}_{i}\) 的距离不大于它与其他原型向量 \(\boldsymbol{p}_{i^{\prime}}\left(i^{\prime} \neq i\right)\) 的距离,即

\[R_{i}=\left\{\boldsymbol{x} \in \mathcal{X} \mid\left\|\boldsymbol{x}-\boldsymbol{p}_{i}\right\|_{2} \leqslant\left\|\boldsymbol{x}-\boldsymbol{p}_{i^{\prime}}\right\|_{2}, i^{\prime} \neq i\right\} \tag{9.27} \]

由此形成了对样本空间 \(\mathcal{X}\) 的簇划分 \(\left\{R_{1}, R_{2}, \ldots, R_{q}\right\}\), 该划分通常称为 "Voronoi剖分" (Voronoi tessellation).

若将 \(R_i\)中样本全用原型向量 \(\bold{p}_i\) 表示,则可实现数据的“有损压缩”(lossy compression),这称为“向量量化”(vectorquantization); LVQ由此而得名.

高斯混合聚类

与k均值、LVQ用原型向量来刻画聚类结构不同,高斯混合(Mixture-of-Gaussian)聚类采用概率模型来表达聚类原型。

我们先简单回顾一下(多元)高斯分布的定义。对n维样本空间X中的随机向量a,若α服从高斯分布,其概率密度函数为

\[p(\bold{x}) = \frac{1}{(2 \pi)^{\frac{n}{2}}|\sum|^{\frac{1}{2}}} e^{-\frac{1}{2}(\bold{x}-\bold{\mu})^T \sum^{-1}(\bold{x}-\bold{\mu})}\tag{9.28} \]

其中 \(\mu\) 是 n 维均值向量,\(\sum\)是 \(n \times n\) 的协方差矩阵。由式(9.28)可看出,高斯分布完全由均值向量 \(\mu\) 和协方差矩阵习这两个参数确定。为了明确显示高斯分布与相应参数的依赖关系,将概率密度函数记为 \(p(\bold{x}|\bold{\mu}, \sum)\)。

我们可定义高斯混合分布

\[p_{M}(\bold{x})=\sum^{k}_{i=1}a_i p(\bold{x}|\bold{\mu}_i, \sum_i) \tag{9.29} \]

p_{M}(·) 也是概率密度函数,\(\int p_M(x)dx=1\)

该分布共由k个混合成分组成,每个混合成分对应一个高斯分布.其中\(\mu_i\)与\(\sum_i\)是第i个高斯混合成分的参数,而 \(a_i > 0\) 为相应的“混合系数”(mixturecoefficient),\(\sum^k_{t=1}a_i=1\)。

若训练集 \(D=\left\{\boldsymbol{x}_{1}, \boldsymbol{x}_{2}, \ldots, \boldsymbol{x}_{m}\right\}\) 由上述过程生成,令随机变量 \(z_{j} \in\{1 , 2, \ldots, k\}\) 表示生成样本 \(\boldsymbol{x}_{j}\) 的高斯混合成分,其取值末知。显然, \(z_{j}\) 的先验概率 \(P\left(z_{j}=i\right)\) 对应于 \(\alpha_{i}(i=1,2, \ldots, k)\)。根据贝叶斯定理,\(z_{j}\) 的后验分布对应于

\[\begin{aligned} p_{\mathcal{M}}\left(z_{j}=i \mid \boldsymbol{x}_{j}\right) &=\frac{P\left(z_{j}=i\right) \cdot p_{\mathcal{M}}\left(\boldsymbol{x}_{j} \mid z_{j}=i\right)}{p_{\mathcal{M}}\left(\boldsymbol{x}_{j}\right)} \\ &=\frac{\alpha_{i} \cdot p\left(\boldsymbol{x}_{j} \mid \boldsymbol{\mu}_{i}, \boldsymbol{\Sigma}_{i}\right)}{\sum_{l=1}^{k} \alpha_{l} \cdot p\left(\boldsymbol{x}_{j} \mid \boldsymbol{\mu}_{l}, \boldsymbol{\Sigma}_{l}\right)} \end{aligned} \tag{9.30} \]

换言之, \(p_{\mathcal{M}}\left(z_{j}=i \mid \boldsymbol{x}_{j}\right)\) 给出了样本 \(\boldsymbol{x}_{j}\) 由第 i 个高斯混合成分生成的后验概率。为方便叙述,将其简记为 \(\gamma_{j i}(i=1,2, \ldots, k)\) 。
当高斯混合分布 (9.29) 已知时, 高斯混合聚类将把样本集 D 划分为 k 个簇 \(\mathcal{C}=\left\{C_{1}, C_{2}, \ldots, C_{k}\right\}\) , 每个样本 $\boldsymbol{x}_{j} $ 的簇标记 \(\lambda_{j}\) 如下确定:

\[\lambda_{j}=\underset{i \in\{1,2, \ldots, k\}}{\arg \max } \gamma_{j i} .\tag{9.31} \]

因此,从原型聚类的角度来看,高斯混合聚类是采用概率模型(高斯分布)对原型进行刻画,簇划分则由原型对应后验概率确定。

那么, 对于式 (9.29),模型参数 \(\left\{\left(\alpha_{i}, \boldsymbol{\mu}_{i},\boldsymbol{\Sigma}_{i}\right) \mid 1 \leqslant i \leqslant k\right\}\) 如何求解呢?显然,给定样本集 D ,可采用极大似然估计,即最大化(对数)似然

\[\begin{aligned} L L(D) &=\ln \left(\prod_{j=1}^{m} p_{\mathcal{M}}\left(\boldsymbol{x}_{j}\right)\right) \\ &=\sum_{j=1}^{m} \ln \left(\sum_{i=1}^{k} \alpha_{i} \cdot p\left(\boldsymbol{x}_{j} \mid \boldsymbol{\mu}_{i}, \boldsymbol{\Sigma}_{i}\right)\right) \end{aligned} \tag{9.32} \]

常采用 EM 算法进行迭代优化求解。推导看书P209 《周志华-机器学习》

推导过程就是现 最大化:让 LL(D) 分别对 \(\sum_i\) \(\mu_i\) 求导使导数为0求新的\(\sum_i\) \(\mu_i\)的值,对于 \(a_i\)由于要满足 \(a_i \geq 0, \sum^k_{i=1}a_i=1\) 所以需要用 LL(D)的格拉朗日形式:

\[LL(D) +\lambda (\sum^k_{i=1}a_i-1) \tag{9.36} \]

由上述推导即可获得高斯混合模型的EM 算法:在每步迭代中,先根据当前参数来计算每个样本属于每个高斯成分的后验概率 \(\gamma_{ji}\) (E步),再根据式上面所说的极大似然估计更新模型参数\(\{(a_i, \mu_i,\sum_i)|1≤i≤k\}\)(M步).

算法流程如下:

image

密度聚类

密度聚类亦称 “基于密度的聚类” (density-based clustering), 此类算法假设聚类结构能通过样本分布的紧密程度确定。通常情形下,密度聚类算法从样本密度的角度来考察样本之间的可连接性,并基于可连接样本不断扩展聚类簇以获得最终的聚类结果。

全称“Density-Based s-patial Clustering of Appli-cations with Noise” .

DBSCAN 是一种著名的密度聚类算法,它基于一组 “邻域” (neighborhood) 参数 \((\epsilon , MinPts )\) 来刻画样本分布的紧密程度。给定数据集 \(D=\left\{\boldsymbol{x}_{1}, \boldsymbol{x}_{2}, \ldots, \boldsymbol{x}_{m}\right\}\) ,定义下面这几个概念:

密度直达关系通常不满足对称性.

密度可达关系满足直递性,但不满足对称性.

密度相连关系满足对称性.

image

基于这些概念,DBSCAN 将 “簇” 定义为:由密度可达关系导出的最大的密度相连样本集合。形式化地说,给定邻域参数$ ( \epsilon , MinPts)$,簇 \(C \subseteq D\) 是满足 以下性质的非空样本子集:

那么, 如何从数据集 D 中找出满足以上性质的聚类簇呢? 实际上, 若 \(\boldsymbol{x}\) 为核心对象, 由 \(\boldsymbol{x}\) 密度可达的所有样本组成的集合记为 \(X=\left\{x^{\prime} \in D \mid\right. \boldsymbol{x}^{\prime} 由 \boldsymbol{x} 密度可达 \}\) , 则不难证明 \(X\) 即为满足连接性与最大性的簇.

D中不属于任何簇的样本被认为是噪声(noise)或异常(anomaly)样本.

于是, DBSCAN 算法先任选数据集中的一个核心对象为 “种子” (seed), 再由此出发确定相应的聚类簇, 算法描述如图 9.9 所示. 在第 \(1 \sim 7\) 行中, 算法 先根据给定的邻域参数\(( \epsilon , MinPts )\) 找出所有核心对象; 然后在第 \(10 \sim 24\) 行中, 以任一核心对象为出发点, 找出由其密度可达的样本生成聚类簇, 直到所有核心对象均被访问过为止.

image

层次聚类

层次聚类(hierarchical clustering)试图在不同层次对数据集进行划分,从而形成树形的聚类结构。数据集的划分可采用“自底向上”的聚合策略,也可采用“自顶向下”的分拆策略。

AGNES是AGglomerative NESting的简写.

AGNES是一种采用自底向上聚合策略的层次聚类算法。它先将数据集中的每个样本看作一个初始聚类簇,然后在算法运行的每一步中找出距离最近的两个聚类簇进行合并,该过程不断重复,直至达到预设的聚类簇个数。这里的关键是如何计算聚类簇之间的距离。实际上,每个簇是一个样本集合,因此,只需采用关于集合的某种距离即可。例如,给定聚类簇\(C_i\)与\(C_j\),可通过下面的式子来计算距离:

显然,最小距离由两个簇的最近样本决定,最大距离由两个簇的最远样本决定,而平均距离则由两个簇的所有样本共同决定.当聚类簇距离由 \(d_{min}、d_{max}\) 或\(d_{avg}\) 计算时,AGNES算法被相应地称为 “单链接”(single-linkage)、“全链接”(complete-linkage)或“均链接”(average-linkage)算法.

集合间的距离计算常采用豪斯多夫距离(Haus-dorff distance). 在下面这个算法中主要还是常用以上三个距离:\(d_{min}、d_{max}\) 或\(d_{avg}\)

image

第12行 \(C_{i*}<C_{j*}\)

标签:right,sum,boldsymbol,样本,聚类,left
来源: https://www.cnblogs.com/eiyi/p/16321494.html