分类方法是属于有监督学习,聚类是属于无监督学习。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 1 dij=(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∣
缺点:
优点:
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 l l 是新类。
最短距离或单链接(SIN):类 G p G_p Gp的样本与类 G q G_q Gq 的样本之间的最短距离为两类之间的距离。
定义公式: 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_p Gp的样本与类 G q G_q Gq 的样本之间的最长距离为两类之间的距离。
定义公式: 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_p Gp与类 G q G_q Gq 的中心 x ‾ p \overline{x}_p xp 与 x ‾ q \overline{x}_q xq之间的距离为两类之间的距离。
中心:值介于最远距离和最近距离中间
定义公式: 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}^2 Drl2=21Dlp2+21Dlq2−41Dpq2
重心法(CEM):类 G p G_p Gp与类 G q G_q Gq 的重心 x ‾ p \overline{x}_p xp 与 x ‾ q \overline{x}_q xq之间的距离为两类之间的距离。
重心: 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_i xp=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}^2 Drl2=nrnqDlp2+nrnqDlq2−nrnqnpDpq2
类平均法(AVE):类 G p G_p Gp与类 G q G_q Gq 任意两个样本之间距离的平均值作为两类之间的距离
定义公式: 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}^2 Dpd=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}^2 Drl2=(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}_p xp为 G p G_p Gp的均值
离差平方和的增量: D p q 2 = S r 2 − S p 2 − S q 2 D_{pq}^2 = S_r^2 - S_p^2 -S_q^2 Dpq2=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}^2 Drl2=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}^2 Drl2=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 2 21 | 1 2 \frac 1 2 21 | 0 | - 1 2 \frac 1 2 21 |
最长距离或完全链接(COM) | 1 2 \frac 1 2 21 | 1 2 \frac 1 2 21 | 0 | 1 2 \frac 1 2 21 |
中心距离法(MED) | 1 2 \frac 1 2 21 | 1 2 \frac 1 2 21 | − 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} 2 21−β | 1 − β 2 \frac {1- \beta} 2 21−β | β \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 < 1 0<β<1时,D(最可变类平均法) <= D(类平均法)
当 β > 0 \beta > 0 β>0时,D(最可变类平均法) >= D(类平均法)
这里只是简单给出一些方法,但是不会具体的应用。。。
层次聚类假设类别之间存在层次结构,将样本聚到层次化的类中。层次聚类又有聚合或自下而上、分裂或自上而下两种方法。
聚合聚类开始将每个样本各自分到一个类;之后将相距最近的两类合并,建立一个新的类,重复此操作直到满足条件;得到层次化的类别。分裂聚合开始将所有样本分到一个类;之后将已有类中相距最远的样本分到两个类,重新此操作直到满足条件;得到层次化的类别。
聚合聚类需要预先确定下面三个要素:
根据这些概念的不停组合,就可以得到不同的聚类方法
算法的具体步骤如下:
(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} ||^2 J(c,μ)=minμ minc ∑i=1M∣∣xi−μci∣∣2
(4)令 t = 0,1,2,… 为迭代步骤,重复下面过程直到 J 收敛
算法的特点:
缺点:
优点:
调优角度:
数据归一化和离群点处理
因为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_k Gap(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)合并操作:对应着减少聚类中心数
相同点:
GMM 的优点: