聚类的简单了解
分类方法是属于有监督学习,聚类是属于无监督学习。K均值聚类是最基础和最常用的聚类算法。它的基本思想是,通过迭代方法寻找K个簇的一种划分方案。通过最小化损失函数来获取最有的划分方案,损失函数可以定义为各个样本距离所属簇中心点的误差平方和。使用的距离通常为欧式距离。
聚类分为硬聚类和软聚类:
硬聚类:一个样本只能属于一个类
软聚类:一个样本可以属于多个类
类是样本的子集,比如有如下基本定义:
描述类的特征的指标有中心、直径、散布矩阵、协方差矩阵

聚类的核心概念
聚类的核心是:相似度或距离
距离
a. 欧式距离
d i j = ( ∑ k = 1 m ∣ x k i − x k j ∣ 2 ) 1 2 d_{ij} = (\sum_{k=1}^m|x_{ki} - x_{kj}|^2)^{\frac 1 2}dij=(k=1∑m∣xki−xkj∣2)21
缺陷:
- 受量纲的影响明显
- 未考虑各变量方差的不同
- 容易受到异常值的影响
- 没有考虑指标之间的相关性
作为改进,可以考虑将数据进行标准化或归一化后在计算距离
b. 闵可夫斯基距离
d i j = ( ∑ k = 1 m ∣ x k i − x k j ∣ p ) 1 p p ≥ 1 d_{ij} = (\sum_{k=1}^m|x_{ki} - x_{kj}|^p)^{\frac 1 p} \\ p \ge 1dij=(k=1∑m∣xki−xkj∣p)p1p≥1
p = 2 时,闵式距离就为欧式距离
p = 1 时,称为曼哈顿距离
p = 无穷时,称为切比雪夫距离,d i j = m a x k ∣ x k i − x k j ∣ d_{ij} = max_k|x_{ki} - x_{kj}|dij=maxk∣xki−xkj∣
缺点:
- 闵式距离与各指标的量纲有关
- 闵式距离的定义没有考虑各个变量之间的相关性与重要性
实际上,闵式距离与欧式距离一样,是把各个变量都同等看待,将两个样本在各个变量上的离差进行了综合。
以上方法在实际应用中有较多问题,由此引出了以下的几种方法,弥补了欧式或闵式距离的缺点。
c. 兰式距离
d i j = 1 m ∑ k = 1 m ∣ x k i − x k j ∣ x k i + x k j d_{ij} = \frac {1} {m} \sum_{k=1}^m \frac {|x_{ki} - x_{kj}|} {x_{ki} + x_{kj}}dij=m1k=1∑mxki+xkj∣xki−xkj∣
缺点:
- 没有考虑指标之间的相关性
- 要求变量观测值必须大于0, 以保证距离总是正值
优点:
- 对大的奇异值不敏感特别使用于高度偏倚的数据
- 考虑了变量的个数
d. 马哈拉诺比斯距离
d i j = [ ( x i − x j ) T S − 1 ( x i − x j ) ] 1 2 d_{ij} = [(x_i - x_j)^TS^{-1}(x_i-x_j)]^{\frac 1 2}dij=[(xi−xj)TS−1(xi−xj)]21
S是样本的协方差矩阵
优点:
- 考虑各个分量之间的相关性
- 与各个分量的尺度无关
e. 斜交空间距离
d i j = [ 1 p 2 ∑ h = 1 m ∑ k = 1 m ( x i h − x j h ) ( x i k − x j k ) γ h k ] 1 2 d_{ij} = [\frac 1 {p^2} \sum_{h=1}^m \sum_{k=1}^m (x_{ih} - x_{jh})(x_{ik}-x_{jk}) \gamma_{hk}]^{\frac 1 2}dij=[p21h=1∑mk=1∑m(xih−xjh)(xik−xjk)γhk]21
γ h k : \gamma_{hk}:γhk: 两变量标准化处理后两者之间的相关系数,当各变量不相关时,斜交变量退化为欧式距离。
相似度
a 相关系数
r i j = ∑ k = 1 m ( x k i − x i ) ( x k f − x f ) [ ∑ k = 1 m ( x k i − x i ) 2 ( x k j − x j ) 2 ] 1 2 r_{ij} = \frac {\sum_{k=1}^m(x_{ki} - x_i)(x_{kf} - x_f)} {[\sum_{k=1}^m(x_{ki} - x_i)^2(x_{kj} - x_j)^2]^{\frac 1 2}}rij=[∑k=1m(xki−xi)2(xkj−xj)2]21∑k=1m(xki−xi)(xkf−xf)
∣ r ∣ < = 1 |r| <= 1∣r∣<=1,相关系数的绝对值越接近于1, 表示样本越相似;越接近于0,表示样本越不相似,但注意的是这里的不相似是指没有线性相似关系,但可能有非线性相关关系。
b. 夹角余弦
s i j = ∑ k = 1 m x k i x k j [ ∑ k = 1 m x k i 2 ∑ k = 1 m x k j 2 ] 1 2 s_{ij} = \frac {\sum_{k=1}^mx_{ki}x_{kj} } {[\sum_{k=1}^mx_{ki}^2 \sum_{k=1}^mx_{kj}^2]^{\frac 1 2}}sij=[∑k=1mxki2∑k=1mxkj2]21∑k=1mxkixkj
这里我们需要注意的是,不同相似度度量得到的结果并不一定一致。
距离度量方法
距离度量方法或系统聚类方法用于类间聚类的计算。以下 r = { G p , G q } r = \{G_p, G_q\}r={Gp,Gq}, l ll 是新类。
最短距离或单链接(SIN):类 G p G_pGp的样本与类 G q G_qGq 的样本之间的最短距离为两类之间的距离。
定义公式:D p d = m i n { d i j , x i ∈ G p , x j ∈ G q } D_{pd} = min\{d_{ij}, x_i \in G_p, x_j \in G_q\}Dpd=min{dij,xi∈Gp,xj∈Gq}
递推公式:D r l = m i n { D q l , D q l } D_{rl} = min\{D_{ql}, D_{ql}\}Drl=min{Dql,Dql}最长距离或完全链接(COM):类 G p G_pGp的样本与类 G q G_qGq 的样本之间的最长距离为两类之间的距离。
定义公式:D p d = m a x { d i j , x i ∈ G p , x j ∈ G q } D_{pd} = max\{d_{ij}, x_i \in G_p, x_j \in G_q\}Dpd=max{dij,xi∈Gp,xj∈Gq}
递推公式:D r l = m a x { D q l , D q l } D_{rl}= max\{D_{ql}, D_{ql}\}Drl=max{Dql,Dql}中心距离法(MED):类 G p G_pGp与类 G q G_qGq 的中心 x ‾ p \overline{x}_pxp 与 x ‾ q \overline{x}_qxq之间的距离为两类之间的距离。
中心:值介于最远距离和最近距离中间
定义公式:D p d = d x ‾ p x ‾ q D_{pd} = d_{\overline{x}_p\overline{x}_q}Dpd=dxpxq
递推公式:D r l 2 = 1 2 D l p 2 + 1 2 D l q 2 − 1 4 D p q 2 D_{rl}^2 = \frac 1 2 D_{lp}^2 + \frac 1 2 D_{lq}^2 - \frac 1 4 D_{pq}^2Drl2=21Dlp2+21Dlq2−41Dpq2重心法(CEM):类 G p G_pGp与类 G q G_qGq 的重心 x ‾ p \overline{x}_pxp 与 x ‾ q \overline{x}_qxq之间的距离为两类之间的距离。
重心: x ‾ p = 1 n p ∑ x i ∈ G p n p x i \overline{x}_p = \frac 1 {n_p} \sum_{x_i \in G_p}^{n_p} x_ixp=np1∑xi∈Gpnpxi
定义公式:D p d = d x ‾ p x ‾ q D_{pd} = d_{\overline{x}_p\overline{x}_q}Dpd=dxpxq递推公式:D r l 2 = n q n r D l p 2 + n q n r D l q 2 − n q n p n r D p q 2 D_{rl}^2 = \frac {n_q} {n_r} D_{lp}^2 + \frac {n_q} {n_r} D_{lq}^2 - \frac {n_qn_p} {n_r} D_{pq}^2Drl2=nrnqDlp2+nrnqDlq2−nrnqnpDpq2
类平均法(AVE):类 G p G_pGp与类 G q G_qGq 任意两个样本之间距离的平均值作为两类之间的距离
定义公式:D p d = 1 n p n q ∑ x i ∈ D p ∑ x j ∈ D q d i j D_{pd} = \frac 1 {n_p n_q} \sum_{x_i\in D_p} \sum_{x_j \in D_q} d_{ij}Dpd=npnq1∑xi∈Dp∑xj∈Dqdij
递推公式:D r l 2 = n p D p l 2 + n q D l q 2 n q + n q D_{rl}^2 = \frac {n_p D_{pl}^2 + n_q D_{lq}^2} {n_q + n_q}Drl2=nq+nqnpDpl2+nqDlq2
可变类平均法:在类平均值法上加上惩罚项
定义公式:D p d = 1 n p n q ∑ x i ∈ D p ∑ x j ∈ D q d i j 2 D_{pd} = \frac 1 {n_p n_q} \sum_{x_i\in D_p} \sum_{x_j \in D_q} d_{ij}^2Dpd=npnq1∑xi∈Dp∑xj∈Dqdij2
递推公式:D r l 2 = ( 1 − β ) n p D p l 2 + n q D l q 2 n q + n q + β D p q 2 D_{rl}^2 = (1-\beta) \frac {n_p D_{pl}^2 + n_q D_{lq}^2} {n_q + n_q} +\beta D_{pq}^2Drl2=(1−β)nq+nqnpDpl2+nqDlq2+βDpq2
离差平方和法(ward):由Ward提出,所以称为Ward法,具体做法是先将n个样本各自为一类,然后每次减少一类,随着类与类的不断聚合,类间的距离平方和必然不断增大,选择是离差平方和增加最小的两类合并,知道所有的样本归为一类为止。
离差平方和:S p = ∑ x i ∈ G p n p ( x i − x ‾ p ) S_p = \sum_{x_i \in G_p}^{n_p}(x_i - \overline{x}_p)Sp=∑xi∈Gpnp(xi−xp),x ‾ p \overline{x}_pxp为G p G_pGp的均值
离差平方和的增量:D p q 2 = S r 2 − S p 2 − S q 2 D_{pq}^2 = S_r^2 - S_p^2 -S_q^2Dpq2=Sr2−Sp2−Sq2
递推公式:D r l 2 = n l + n p n r + n l D p l 2 + n l + n q n r + n l D q l 2 − n l n r + n l D p q 2 D_{rl}^2 = \frac {n_l +n_p} {n_r +n_l} D_{pl}^2 + \frac {n_l +n_q} {n_r +n_l} D_{ql}^2 - \frac {n_l } {n_r +n_l} D_{pq}^2Drl2=nr+nlnl+npDpl2+nr+nlnl+nqDql2−nr+nlnlDpq2
可变方法:让中间距离法的递推公式前两式的系数也依赖于 β \betaβ
递推公式:D r l 2 = 1 − β 2 ( D l p 2 + D l q 2 ) + β D p q 2 D_{rl}^2 = \frac {1- \beta} 2( D_{lp}^2 +D_{lq}^2 ) + \beta D_{pq}^2Drl2=21−β(Dlp2+Dlq2)+βDpq2
距离度量方法的统一
表示八种不同距离度量类方法计算类间距离的统一表达式:
d l r 2 = α p d l p 2 + α q d l q 2 + β d p q 2 + γ ∣ d l p 2 − d l q 2 ∣ r = { w q , w p } d_{lr}^2 = \alpha_p d_{lp}^2 + \alpha_q d_{lq}^2 + \beta d_{pq}^2 + \gamma|d_{lp}^2 - d_{lq}^2| \\ \ \\ r = \{w_q, w_p\}dlr2=αpdlp2+αqdlq2+βdpq2+γ∣dlp2−dlq2∣ r={wq,wp}
| 距离度量方法 | α p \alpha_pαp | α q \alpha_qαq | β \betaβ | γ \gammaγ |
|---|---|---|---|---|
| 最短距离或单链接(SIN) | 1 2 \frac 1 221 | 1 2 \frac 1 221 | 0 | -1 2 \frac 1 221 |
| 最长距离或完全链接(COM) | 1 2 \frac 1 221 | 1 2 \frac 1 221 | 0 | 1 2 \frac 1 221 |
| 中心距离法(MED) | 1 2 \frac 1 221 | 1 2 \frac 1 221 | − 1 4 ≤ β ≤ 0 -\frac 1 4 \le \beta \le 0−41≤β≤0 | 0 |
| 重心法(CEM) | n p n r \frac {n_p} {n_r}nrnp | n q n r \frac {n_q} {n_r}nrnq | α p α q \alpha_p \alpha_qαpαq | 0 |
| 类平均法(AVE) | n p n r \frac {n_p} {n_r}nrnp | n q n r \frac {n_q} {n_r}nrnq | 0 | 0 |
| 可变类平均法 | ( 1 − β ) n p n r (1-\beta)\frac {n_p} {n_r}(1−β)nrnp | ( 1 − β ) n q n r (1-\beta)\frac {n_q} {n_r}(1−β)nrnq | β \betaβ | 0 |
| 离差平方和 | n l + n p n r + n l \frac {n_l +n_p} {n_r +n_l}nr+nlnl+np | n l + n q n r + n l \frac {n_l +n_q} {n_r +n_l}nr+nlnl+nq | n l n r + n l \frac {n_l } {n_r +n_l}nr+nlnl | 0 |
| 可变方法 | 1 − β 2 \frac {1- \beta} 221−β | 1 − β 2 \frac {1- \beta} 221−β | β \betaβ | 0 |
距离度量方法的性质
单调性:除重心法和中间距离法以外的距离度量方法都满足单调性
空间的浓缩与扩张:
(1). 定义矩阵大小:
设 A 和 B 为同阶矩阵。若 A 的每一个元素都不小于 B 中对应位置的元素,则记作 A >= B(2). 聚类方法浓缩与扩张
设两种系统聚类法A 和B,在第 i 步的距离矩阵分别为 Ai 和 Bi, 若 Ai > Bi, 则称方法 A 比方法 B 使空间扩张。(3). 系统聚类法的比较:
D(最短距离法) <= D(类平均法)
D(重心法) <= D(类平均法)
D(最长距离法) >= D(类平均法)
当 0 < β < 1 0 < \beta < 10<β<1时,D(最可变类平均法) <= D(类平均法)
当 β > 0 \beta > 0β>0时,D(最可变类平均法) >= D(类平均法)
确定最佳聚类数
这里只是简单给出一些方法,但是不会具体的应用。。。
- 给定阈值
- 数据点散布图
- 统计量
a. R 2 R^2R2 统计量
b. 半偏R 2 R^2R2 统计量
c. 伪F FF 统计量
d, 伪t 2 t^2t2 统计量 - 谱系图
Bermirmen 提出根据谱系图进行分类的准则:
a. 各类重心间距离较远
b. 确定类中各类包含元素不宜多
c. 分类数符合研究目标
d. 若运用不同的聚类方法处理,则应在各自的聚类图中发现相同的类
聚类方法
层次聚类
层次聚类假设类别之间存在层次结构,将样本聚到层次化的类中。层次聚类又有聚合或自下而上、分裂或自上而下两种方法。
聚合聚类开始将每个样本各自分到一个类;之后将相距最近的两类合并,建立一个新的类,重复此操作直到满足条件;得到层次化的类别。分裂聚合开始将所有样本分到一个类;之后将已有类中相距最远的样本分到两个类,重新此操作直到满足条件;得到层次化的类别。
聚合聚类需要预先确定下面三个要素:
- 聚类或相似度
- 合并规则:类间距离最小
- 停止条件:类的个数达到阈值;类的直径超过阈值;
根据这些概念的不停组合,就可以得到不同的聚类方法
K均值聚类
算法的具体步骤如下:
(1)数据预处理,如归一化、离群点处理等
(2)随机选取 K 个簇中心,记为 μ 1 ( 0 ) , μ 2 ( 0 ) , . . . , μ K ( 0 ) \mu_1^{(0)},\mu_2^{(0)},...,\mu_K^{(0)}μ1(0),μ2(0),...,μK(0)
(3)定义代价函数:J ( c , μ ) = m i n μ m i n c ∑ i = 1 M ∣ ∣ x i − μ c i ∣ ∣ 2 J(c, \mu) = min_{\mu} \ min_c \ \sum_{i=1}^M || x_i - \mu_{c_i} ||^2J(c,μ)=minμ minc ∑i=1M∣∣xi−μci∣∣2
(4)令 t = 0,1,2,… 为迭代步骤,重复下面过程直到 J 收敛
- 对于每一个样本 x i x_ixi, 将其分配到最近的簇
c i ( t ) ← a r g m i n k ∣ ∣ x i − μ k ( t ) ∣ ∣ 2 c_i^{(t)} \leftarrow argmin_k || x_i - \mu_{k}^{(t)} ||^2ci(t)←argmink∣∣xi−μk(t)∣∣2 - 对于每一个类簇 k,重新计算该类簇的中心
μ k ( t + 1 ) ← a r g m i n μ ∑ i : c i ( t ) = k ∣ ∣ x i − μ ∣ ∣ 2 \mu_{k}^{(t+1)} \leftarrow argmin_{\mu} \sum_{i:c_i^{(t)}= k} || x_i - \mu ||^2μk(t+1)←argminμi:ci(t)=k∑∣∣xi−μ∣∣2
算法的特点:
- 基于划分的聚类方法
- 以欧式距离平方表示样本之间的距离或相似度
- 以中心或样本的均值表示类别
- 以样本和其所属类的中心之间的距离的总和为优化的目标函数
- 得到的类别是平坦的、非层次化的
缺点:
- 需要人工预先确定初始 K 值
- 算法是迭代算法,不能保证得到全局最优
- 易受初始值影响
- 无法很好地解决数据簇分布差别比较大的情况(比如一类是另一类样本数量的100倍)
- 不太适用于离散分布
- 易受到噪声点的影响
- 样本只能被划分到单一的类中
优点:
- 对于大数据集,K均值聚类算法相对是可伸缩和高效的
- 计算复杂度是 O(NKt) 接近于线性,其中N 是数据对象的数目,K 是聚类的簇数,t 是迭代的轮数
调优角度:
数据归一化和离群点处理
因为K均值采用的是欧氏距离度量的划分方法,所以原始数据无法直接参与运算和比较,并且离群点或少量的噪声数据会对均值造成较大影响。合理选择 K 值
K 值的选择一般基于经验和多次试验数据。例如手肘法,横轴为 K 的取值,纵轴为误差平法和多定义的损失函数。因为不够自动化,提出了一些更先进的方法,比如 Gap Statistic 方法:
G a p ( K ) = E ( l o g D k ) − l o g D k Gap(K) = E(logD_k) - logD_kGap(K)=E(logDk)−logDk
表示随机样本的损失与实际样本的损失之差, E ( l o g D k ) E(logD_k)E(logDk) 从样本所在的区域内按照均匀分布随机地产生和原始样本数一样多的随机样本,并对这个随机样本做 K 均值。Gap(K)取得最大值所对应的 K 值就是最佳的簇数。采用核函数
核聚类方法的主要思想是通过一个非线性映射,将输入空间中的数据点映射到高维的特征空间中,并在新的特征空间中进行聚类。非线性映射增加了数据点线性可分的概率,从而在经典的聚类算法失效的情况下,通过映入核函数可以达到更为准确的聚类结果。
改进的模型
K-means++ 算法
在选取初始聚类中心时,假设已经 n 个初始聚类中心,则在选取第 n+1 个聚类中心时,距离当前 n 个聚类中心越远的点会有更高的概率被选为第 n+1 个聚类中心。ISODATA 算法
主要思想:当属于某个类别的样本数过少时,把该类别去除;当属于某个类别的样本数过多、分散程度较大时,把该类别分为两个子类别。在K均值算法的基础上增加两个操作:
(1)分裂操作:对应着增加聚类中心数
(2)合并操作:对应着减少聚类中心数
K-means与高斯混合模型的异同
相同点:
- 都是可用于聚类的算法
- 都需要指定K值
- 都是使用 EM 算法来求解
- 往往都只能收敛于局部最优
GMM 的优点:
- 可以给出一个样本属于某类的概率是多少
- 不仅仅可以用于聚类,还可以用于概率密度的估计,可以用于生成新的样本点