《统计学习方法》(第十四章)——聚类方法

聚类基本概念

相似度或距离

  • 相似度或距离:
       聚类的核心是相似度或距离的定义,它将直接影响到聚类的结果
    • 闵可夫斯基距离
      d i j = ( ∑ k = 1 m ∣ x k i − x k j ∣ ) 1 p d_{ij}=(\sum\limits_{k=1}^m|x_{ki}-x_{kj}|)^{\frac{1}{p}} dij=(k=1mxkixkj)p1
      p = 2 时 偶 啦 距 离 p=2时偶啦距离 p=2
      p = 1 时 曼 哈 顿 距 离 p=1时曼哈顿距离 p=1
      p = ∞ 时 为 切 比 雪 夫 距 离 p=\infty时为切比雪夫距离 p=
    • 马哈拉诺比斯距离
      d i j = [ ( x i − x j ) S − 1 ( x i − x j ) ] , 其 中 S − 1 为 协 方 差 矩 阵 d_{ij}=[(x_i-x_j)S^{-1}(x_i-x_j)],其中S^{-1}为协方差矩阵 dij=[(xixj)S1(xixj)],S1
    • 相关系数
      r i j = ∑ k = 1 m ( x k i − x ^ i ) ( x k j − x ^ j ) [ ∑ k = 1 n ( x k i − x ^ i ) 2 ∑ k = 1 m ( x k j − x ^ j ) 2 ] 1 2 r_{ij}=\frac{\sum\limits_{k=1}^m(x_{ki}-\hat{x}_i)(x_{kj}-\hat{x}_j)}{[\sum\limits_{k=1}^n(x_{ki}-\hat{x}_i)^2\sum\limits_{k=1}^m(x_{kj}-\hat{x}_j)^2]^{\frac{1}{2}}} rij=[k=1n(xkix^i)2k=1m(xkjx^j)2]21k=1m(xkix^i)(xkjx^j)
      绝对值越接近1表示越相似,越接近0表示越不相似
    • 夹角余弦
      越接近1表示越相似,越接近0表示越不相似
      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\limits_{k=1}^mx_{ki}x_{kj}}{[\sum\limits_{k=1}^mx_{ki}^2\sum\limits_{k=1}^mx_{kj}^2]^{\frac{1}{2}}} sij=[k=1mxki2k=1mxkj2]21k=1mxkixkj

类或簇

n G n_G nG为类中的样本个数
  如果一个样本只属于一个类,则为硬聚类
  如果一个样本可以属于多个类,则为软聚类

  • 定义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 − 1 ∑ x j ∈ G d i j ≤ T \frac{1}{n_G-1}\sum\limits_{x_j \in G}d_{ij}\le T nG11xjGdijT则称 G G G为一个类或簇
  • 定义4
      设 T T T V V V为给定的两个正数,如果集合 G G G中任意两个样本 x i , x j x_i,x_j xi,xj的距离 d i j d_{ij} dij满足
    1 n G ( n G − 1 ) ∑ x i ∈ G ∑ x j ∈ G d i j ≤ T \frac{1}{n_G(n_G-1)}\sum\limits_{x_i \in G}\sum\limits_{x_j \in G}d_{ij} \le T nG(nG1)1xiGxjGdijT
    d i j ≤ V d_{ij}\le V dijV
    则称 G G G为一个类或簇
    以上四个定义,第一个定义最常用,并且可以推导出其他三个定义
  • 类均值
    x ^ G = 1 n G ∑ i = 1 n G x i \hat{x}_G=\frac{1}{n_G}\sum\limits_{i=1}^{n_G}x_i x^G=nG1i=1nGxi
  • 类直径
    D G = max ⁡ x i , x j ∈ G d i j D_G=\max\limits_{x_i,x_j \in G} d_{ij} DG=xi,xjGmaxdij
  • 样本散布矩阵
    A G = ∑ i = 1 n G ( x i − x ^ G ) ( x i − x ^ G ) T A_G=\sum\limits_{i=1}^{n_{G}}(x_i-\hat{x}_G)(x_i-\hat{x}_G)^T AG=i=1nG(xix^G)(xix^G)T
  • 协方差矩阵
    S G = 1 m − 1 A G S_G=\frac{1}{m-1}A_G SG=m11AG

类与类之间的距离

  • 最短距离或单连接
    D p q = min ⁡ { d i j ∣ x i ∈ G p , x j ∈ G q } D_{pq}=\min\{d_{ij}|x_i\in G_p,x_j \in G_q\} Dpq=min{dijxiGp,xjGq}
  • 最长距离或单连接
    D p q = max ⁡ { d i j ∣ x i ∈ G p , x j ∈ G q } D_{pq}=\max\{d_{ij}|x_i\in G_p,x_j \in G_q\} Dpq=max{dijxiGp,xjGq}
  • 中心距离
    D p q = d x ^ p x ^ q D_{pq}=d_{\hat{x}_p\hat{x}_q} Dpq=dx^px^q
  • 平均距离
    D p q = 1 n p n q ∑ x i ∈ G p ∑ x i ∈ G p d i j D_{pq}=\frac{1}{n_pn_q}\sum\limits_{x_i \in G_p}\sum\limits_{x_i \in G_p}d_{ij} Dpq=npnq1xiGpxiGpdij

层次聚类

分为两类
( 1 ) (1) (1)聚合:自下而上,每次选最近的类进行合并,直到满足条件
( 2 ) (2) (2)分裂:自上而下,每次在选择一个类进行分裂,直到满足条件
算法:
输入:n个样本组合的样本集以及样本之间的距离
输出:对样本集合的一个层次化聚类
( 1 ) (1) (1)计算n个样本两两之间的距离,记作矩阵 D = [ d i j ] n × n D=[d_{ij}]_{n×n} D=[dij]n×n
( 2 ) (2) (2)构造n个类,每个类只包含一个样本
( 3 ) (3) (3)合并类间距离最小的两个类,其中最短距离为类间的距离,构造新类
( 4 ) (4) (4)计算新类与当前各类的句子,满足条件则停止,否则回到 ( 3 ) (3) (3)

K均值聚类

模型

   给定n个样本 X = { x 1 , x 2 , . . . , x n } X=\{x_1,x_2,...,x_n\} X={x1,x2,...,xn}每个样本由一个特征向量表示,特征向量维度为m,k均值聚类为对数据进行划分 G 1 , G 2 , . . . , G k G_1,G_2,...,G_k G1,G2,...,Gk其中 G i ⋂ G j = ∅ , ⋃ i = 1 k G i = X G_i\bigcap G_j=\varnothing,\bigcup\limits_{i=1}^kG_i=X GiGj=,i=1kGi=X
   划分 C C C对应着一个多对一的函数,学习 C ( x i ) = l C(x_i)=l C(xi)=l其中 l l l为类

策略

  最小化损失函数得到函数 C C C
W ( C ) = ∑ l = 1 k ∑ C ( i ) = l ∣ ∣ x i − x ^ l ∣ ∣ W(C)=\sum\limits_{l=1}^k\sum\limits_{C(i)=l}||x_i-\hat{x}_l|| W(C)=l=1kC(i)=lxix^l
x ^ l \hat{x}_l x^l为第 l l l类的均值
C ∗ = arg min ⁡ C W ( C ) C^*=\argmin\limits_{C}W(C) C=CargminW(C)

算法

输入:n个样本的集合 X X X
输出:样本集合聚类 C ∗ C^* C
( 1 ) (1) (1)初始化.
随机选 k k k个样本为k类中心 m ( 0 ) = ( m 1 ( 0 ) , m 1 ( 0 ) , . . . , m k ( 0 ) ) m^{(0)}=(m^{(0)}_1,m^{(0)}_1,...,m^{(0)}_k) m(0)=(m1(0),m1(0),...,mk(0))
( 2 ) (2) (2)对样本进行聚类
m ( t ) = ( m 1 ( t ) , m 1 ( t ) , . . . , m k ( t ) ) m^{(t)}=(m^{(t)}_1,m^{(t)}_1,...,m^{(t)}_k) m(t)=(m1(t),m1(t),...,mk(t)),对每个样本,选择归入类距离最小的类中
( 3 ) (3) (3)重新计算中心点 m ( t + 1 ) = ( m 1 ( t + 1 ) , m 1 ( t + 1 ) , . . . , m k ( t + 1 ) ) m^{(t+1)}=(m^{(t+1)}_1,m^{(t+1)}_1,...,m^{(t+1)}_k) m(t+1)=(m1(t+1),m1(t+1),...,mk(t+1))
( 4 ) (4) (4)重复迭代直到满足条件否则 ( 2 ) , t = t + 1 (2),t=t+1 (2),t=t+1

算法特效

  • 总体特点
    基于划分的聚类方法,类别k事先给定,以及距离的定义事先给定,不能保证全局最优
  • 收敛性
    不能保证收敛到全局最优,初始中心的选择直接影响结果,类中心在聚类过程中会发生移动,但移动的距离不会太大
  • 初始类的选择
    选择不同的初始点,会有不同的结果
  • 类别个数k
    k一般需要指定,当类数增加的时候,类平均直径会减少,到最后基本不变,而这个点一般是最优的k

你可能感兴趣的:(机器学习)