机器学习——聚类算法

一,聚类的基本概念

聚类是一种无监督算法,即从无标签数据中学习模型。针对对于给定的样本,依据其特征的相似度或距离,将其归并为若干个“类”或“簇”,使得同一个簇内的样本的相似性尽可能大,不同簇中的样本的相似性尽可能小

聚类可分为

  1. 硬聚类:一个样本只能属于一个类: z i = g ( x i ) z_{i}=g(x_{i}) zi=g(xi)
  2. 软聚类:一个样本可属于多个类: P ( Y ∣ X ) P(Y|X) P(YX)

1.1 相似度或距离

对于给定样本集合 X X X X X X m m m维向量空间 R m R^{m} Rm中点的集合,其中 x i , x j ∈ X , x i = ( x 1 i , x 2 i , ⋯   , x m i ) T , x j = ( x 1 j , x 2 j , ⋯   , x m j ) T x_{i},x_{j}\in X,x_{i}=(x_{1i},x_{2i},\cdots,x_{mi})^{T},x_{j}=(x_{1j},x_{2j},\cdots,x_{mj})^{T} xi,xjX,xi=(x1i,x2i,,xmi)T,xj=(x1j,x2j,,xmj)T,样本 x i x_{i} xi x j x_{j} xj之间常用的距离或相似度有:

  • 闵可夫斯基距离:将样本集合看作空间中点的集合,以空间中的距离表示样本之间的相似度
    d i j = ( ∑ k = 1 m ∣ x k i − x k j ∣ p ) 1 / p d_{ij}=\big(\sum_{k=1}^{m}\vert x_{ki}-x_{kj}\vert^{p}\big)^{1/p} dij=(k=1mxkixkjp)1/p
    1. p = 1 p=1 p=1时,为曼哈顿距离(也成为棋盘距离):
      d i j = ∑ k = 1 m ∣ x k i − x k j ∣ d_{ij}=\sum_{k=1}^{m}\vert x_{ki}-x_{kj}\vert dij=k=1mxkixkj
    2. p = 2 p=2 p=2时,为欧氏距离:
      d i j = ( ∑ k = 1 m ∣ x k i − x k j ∣ 2 ) 1 / 2 d_{ij}=\big(\sum_{k=1}^{m}\vert x_{ki}-x_{kj}\vert^{2}\big)^{1/2} dij=(k=1mxkixkj2)1/2
    3. p = ∞ p=\infty p=时,为切比雪夫距离
      d i j = m i n k ∣ x k i − x k j ∣ d_{ij}=\underset{k}{min}\vert x_{ki}-x_{kj} \vert dij=kminxkixkj

闵可夫斯基距离越大,样本相似度越小; 距离越小,相似度越大

  • 马氏距离:考虑样本各个特征之间的相关性并与各个分量的尺度无关
    d i j = [ ( x i − x j ) T S ( x i − x j ) ] 1 2 d_{ij} = [(x_{i}-x_{j})^{T}S(x_{i}-x_{j})]^{\frac{1}{2}} dij=[(xixj)TS(xixj)]21
    其中, S S S表示样本的协方差矩阵: S = 1 N − 1 ∑ i = 1 N ( x i − x ˉ ) ( x i − x ˉ ) T S=\frac{1}{N-1}\sum_{i=1}^{N}(x_{i}-\bar{x})(x_{i}-\bar{x})^{T} S=N11i=1N(xixˉ)(xixˉ)T,并且样本的散度矩阵定义为 A = ∑ i = 1 N ( x i − x ˉ ) ( x i − x ˉ ) T , S = 1 N − 1 A A=\sum_{i=1}^{N}(x_{i}-\bar{x})(x_{i}-\bar{x})^{T},S=\frac{1}{N-1}A A=i=1N(xixˉ)(xixˉ)T,S=N11A,并且 x ˉ = 1 N ∑ i = 1 N x i \bar{x}=\frac{1}{N}\sum_{i=1}^{N}x_{i} xˉ=N1i=1Nxi表示样本均值。

马氏距离越大,样本相似度越小; 距离越小,相似度越大

  • 相关系数:
    r i j = ∑ k = 1 m ( x k i − x ˉ i ) ( x k j − x ˉ j ) [ ∑ k = 1 m ( x k i − x ˉ i ) 2 ∑ k = 1 m ( x k j − x ˉ j ) 2 ] 1 / 2 r_{ij}=\frac{\sum_{k=1}^{m}(x_{ki}-\bar{x}_{i})(x_{kj}-\bar{x}_{j})}{[\sum_{k=1}^{m}(x_{ki}-\bar{x}_{i})^{2}\sum_{k=1}^{m}(x_{kj}-\bar{x}_{j})^{2}]^{1/2}} rij=[k=1m(xkixˉi)2k=1m(xkjxˉj)2]1/2k=1m(xkixˉi)(xkjxˉj)

相关系数越大,样本相似度越大; 相关系数越小,相似度越小

  • 夹角余弦
    c o 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 cos(\theta_{ij})=\frac{\sum_{k=1}^{m}x_{ki}x_{kj}}{(\sum_{k=1}^{m}x_{ki}^{2}\sum_{k=1}^{m}x_{kj}^{2})^{1/2}} cos(θij)=(k=1mxki2k=1mxkj2)1/2k=1mxkixkj

夹角越大,样本相似度越大; 相关系数越小,相似度越小

1.2 类或簇

类和簇有多种定义方式:

  1. T T T为给定的正数,若对于集合 G G G中任意两个样本 x i , x j x_{i},x_{j} xi,xj,有:
    d i j ≤ T d_{ij}\le T dijT则称 G G G为一个类或簇
  2. T T T为给定的正数,若对于集合 G G G中任意一个样本 x i x_{i} xi,一定存在 G G G中的另一个样本 x j x_{j} xj,使得: d i j ≤ T d_{ij}\le T dijT则称 G G G为一个类或簇
  3. T T T为给定的正数,若对于集合 G G G中任意一个样本 x i x_{i} xi G G G中的另一个样本 x j x_{j} xj,满足:
    1 n G ∑ x j ∈ G d i j ≤ T \frac{1}{n_{G}}\sum_{x_{j}\in G}d_{ij}\le T nG1xjGdijT则称 G G G为一个类或簇

类的特征有:

  • 类的均值 x ˉ G \bar{x}_{G} xˉG,也称类中心: x ˉ G = 1 n G ∑ i = 1 n G x i \bar{x}_{G}=\frac{1}{n_{G}}\sum_{i=1}^{n_{G}}x_{i} xˉG=nG1i=1nGxi
  • 类的直径 D G D_{G} DG: D G = m a x x i , x j ∈ G d i j D_{G}=\underset{x_{i},x_{j}\in G}{max}d_{ij} DG=xi,xjGmaxdij
  • 类的散度矩阵: A G = ∑ i = 1 n G ( x i − x ˉ G ) ( x i − x ˉ G ) T A_{G}=\sum_{i=1}^{n_{G}}(x_{i}-\bar{x}_{G})(x_{i}-\bar{x}_{G})^{T} AG=i=1nG(xixˉG)(xixˉG)T
  • 类的协方差矩阵: S G = 1 n G − 1 A G S_{G}=\frac{1}{n_{G}-1}A_{G} SG=nG11AG

1.3 类与类之间的距离

考虑类 G p G_{p} Gp和类 G q G_{q} Gq之间的距离 D ( p , q ) D(p,q) D(p,q)

  • 最短距离: D p q = m i n ( d i j ∣ x i ∈ G p , x j ∈ G q ) D_{pq}=min(d_{ij}\vert x_{i}\in G_{p},x_{j}\in G_{q}) Dpq=min(dijxiGp,xjGq)
  • 最长距离: D p q = m a x ( d i j ∣ x i ∈ G p , x j ∈ G q ) D_{pq}=max(d_{ij}\vert x_{i}\in G_{p},x_{j}\in G_{q}) Dpq=max(dijxiGp,xjGq)
  • 平均距离: D p q = 1 n p n q ∑ x i ∈ G p ∑ x j ∈ G q d i j D_{pq}=\frac{1}{n_{p}n_{q}}\sum_{x_{i}\in G_{p}}\sum_{x_{j}\in G{q}} d_{ij} Dpq=npnq1xiGpxjGqdij
  • 中心距离: D p q = d x ˉ p x ˉ q D_{pq}=d_{\bar{x}_{p}\bar{x}_{q}} Dpq=dxˉpxˉq

二,层次聚类

假设类别之间存在层次结构,将样本聚到层次化的类中
层次聚类可分为两类:

  • 分拆式(自上而下):首先将所有样本作为一个类,然后将已有类中距离最远的样本分到两个新的类中,重复以上操作直到满足停止条件为止
  • 聚合式(自下而上):首先将每个样本视为一个类,然后将距离最近的两个类合并作为一个新类,重复以上操作直至满足停止条件

此处仅讨论聚合聚类,首先需要确定三个要素

  1. 距离或相似度:闵可夫斯基距离,马氏距离,相关系数,夹角余弦
  2. 合并规则:根据类间距离最小合并,;类间距离包括最短,最长,中心,平均距离
  3. 停止条件:类的个数达到阈值(极端情况为一个类)或者类的直径超过阈值

2.1 聚合聚类算法

这里定义欧式距离为样本之间的距离,定义最短距离为类内距离
算法
输入: n n n个样本组成的样本集合以及样本之间距离
输出:对样本集合的一个层次化聚类
(1)计算 n n n个样本之间的欧氏距离 d i j d_{ij} dij,记作矩阵 D = [ d i j ] n × n D=[d_{ij}]_{n\times n} D=[dij]n×n
(2)构造 n n n个类,每个样本为一个类
(3)合并类间最短距离最小的两个类,并将其作为一个新类
(4)计算新类与当前各类的距离。若类的个数为1,中值计算,否则回到步骤(3)

三,K均值聚类

基于样本集合划分的聚类算法,每个样本只属于一个类,属于硬聚类
基本思想:首先选取 k k k个类的中心,将每个样本分到与其最近的中心的类中,得到一个新的聚类结果,然后计算每个类的样本均值,作为新的类中心,重复以上步骤直至收敛
假设样本数 n > k n > k n>k k k k个类 G 1 , G 2 , ⋯   , G k G_{1},G_{2},\cdots,G_{k} G1,G2,,Gk形成对样本集合 X X X的划分,其中 G i ∩ G j = ∅ G_{i}\cap G_{j}=\varnothing GiGj=

3.1 策略

通过损失函数的最小化选取最优的划分或函数:
采用欧式距离的平方作为样本之间的距离 d i j = ∑ k = 1 m ∣ x k i − x k j ∣ 2 = ∥ x i − x j ∥ 2 d_{ij}=\sum_{k=1}^{m}\vert x_{ki}-x_{kj}\vert^{2}=\Vert x_{i}-x_{j}\Vert^{2} dij=k=1mxkixkj2=xixj2
定义样本与其所属类中心的距离的综合为损失函数,即
W ( C ) = ∑ l = 1 k ∑ C i = l ∥ x i − x ˉ l ∥ 2 W(C)=\sum_{l=1}^{k}\sum_{C_{i}=l}\Vert x_{i}-\bar{x}_{l}\Vert^{2} W(C)=l=1kCi=lxixˉl2
其中 x ˉ l \bar{x}_{l} xˉl表示类 l l l的中心, n l = ∑ i = 1 n I ( C ( i ) = l ) n_{l}=\sum_{i=1}^{n}I(C(i)=l) nl=i=1nI(C(i)=l) I ( C ( i ) = l ) I(C(i)=l) I(C(i)=l)表示指示函数,取值为 0 0 0 1 1 1 C C C表示划分

3.2 算法

迭代:

  1. 首先选择 k k k个类的中心,将样本逐个划分到与其最近的中心的类中,得到一个聚类结果
  2. 更新每个类的样本均值,将其作为新的类的中心
    重复以上步骤直至收敛,

算法
输入: n n n个样本的集合
输出:样本集合的聚类 C ∗ C^{*} C
(1)初始化:首先随机选取 k k k个样本作为初始类中心 m ( 0 ) = ( m 1 ( 0 ) , m 2 ( 0 ) , ⋯   , m k ( 0 ) ) m^{(0)}=(m_{1}^{(0)},m_{2}^{(0)},\cdots,m_{k}^{(0)}) m(0)=(m1(0),m2(0),,mk(0))
(2)对样本进行聚类:对固定的类中心 m ( t ) = ( m 1 ( t ) , m 2 ( t ) , ⋯   , m k ( t ) ) m^{(t)}=(m_{1}^{(t)},m_{2}^{(t)},\cdots,m_{k}^{(t)}) m(t)=(m1(t),m2(t),,mk(t)),其中 m l ( t ) m_{l}^{(t)} ml(t)表示第 t t t次迭代时类 l l l的中心,计算每个样本到类中心的距离,并将其指派到与其最近的中心的类中,构造新的聚类结果 C t C^{t} Ct
(3)计算新的类中心,对于聚类结果 C t C^{t} Ct。计算当前各个类中的样本均值,作为新的类中心 m ( t + 1 ) = ( m 1 ( t + 1 ) , m 2 ( t + 1 ) , ⋯   , m k ( t + 1 ) ) m^{(t+1)}=(m_{1}^{(t+1)},m_{2}^{(t+1)},\cdots,m_{k}^{(t+1)}) m(t+1)=(m1(t+1),m2(t+1),,mk(t+1))
(4)如果迭代收敛或者符合停止条件,输出 C ∗ = C t C^{*}=C^{t} C=Ct,否则 t = t + 1 t=t+1 t=t+1,返回步骤(2)

3.3 特点

  • 总体特点:
    1. 基于划分的聚类方式
    2. 类别 k k k实现指定
    3. 以欧氏距离表示样本之间的距离,以中心或样本均值表示类别
    4. 以样本到其所属类中心的距离和作为优化目标
    5. 得到的类别时平坦的,非层次化的
    6. 迭代算法,不能保证是全局最优
  • 收敛性:
    属于启发式算法,不能保证全局最优,且初始中心的选择会直接影响聚类结果
  • 初始类中心的选择:
    根据层次聚类对样本进行聚类,得到 k k k个类时停止,然后从 k k k个类中选取距离类中心最近的样本作为初始类中心
  • 类别数 k k k的选择
    尝试用不同的 k k k聚类,检验各自得到的聚类结果的质量,推测最佳 k k k值。
    聚类结果的质量可以用类的平均直径来衡量。当类别数变小时,类的平均直径会增加,当类别数增加至某个值时,平均直径会不变,而该值就为最优的 k k k
    1. 肘部法:计算不同 k k k值对应的cost损失,cost为损失函数 W ( C ) W(C) W(C)可以得到肘部图,当 k k k值增加至某个值时,继续增大 k k k,cost损失不再减小

其他 k k k值选取方法可见K-Means中K值的选取

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值