聚类基本概念
相似度或距离
- 相似度或距离:
聚类的核心是相似度或距离的定义,它将直接影响到聚类的结果
- 闵可夫斯基距离
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=1∑m∣xki−xkj∣)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=[(xi−xj)S−1(xi−xj)],其中S−1为协方差矩阵
- 相关系数
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=1∑n(xki−x^i)2k=1∑m(xkj−x^j)2]21k=1∑m(xki−x^i)(xkj−x^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=1∑mxki2k=1∑mxkj2]21k=1∑mxkixkj
类或簇
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 dij≤T则称 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 dij≤T则称 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 nG−11xj∈G∑dij≤T则称 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(nG−1)1xi∈G∑xj∈G∑dij≤T
d i j ≤ V d_{ij}\le V dij≤V
则称 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=1∑nGxi
- 类直径
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,xj∈Gmaxdij
- 样本散布矩阵
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=1∑nG(xi−x^G)(xi−x^G)T
- 协方差矩阵
S G = 1 m − 1 A G S_G=\frac{1}{m-1}A_G SG=m−11AG
类与类之间的距离
- 最短距离或单连接
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{dij∣xi∈Gp,xj∈Gq}
- 最长距离或单连接
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{dij∣xi∈Gp,xj∈Gq}
- 中心距离
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=npnq1xi∈Gp∑xi∈Gp∑dij
层次聚类
分为两类
( 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 Gi⋂Gj=∅,i=1⋃kGi=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=1∑kC(i)=l∑∣∣xi−x^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