机器学习(八)聚类

机器学习 聚类Clustering

将无标签的数据进行分类,一个好的聚类应满足:

  • 簇内相似度高
  • 簇间相似度低

flat or partitional clustering 扁平的聚类:各分类之间相互独立
hierarchical clustering 层次式聚类

K-Means K均值分类

给定一系列的数据点 X = { x 1 , x 2 , x N } ( x i ∈ R D ) X = \{ x_1,x_2,x_N\} (x_i \in\mathbb{R}^D) X={x1,x2,xN}(xiRD),把N个数据点分到K个集合 { C k } k = 1 , 2 , . . . , K \{C_k\}_{k=1,2,...,K} {Ck}k=1,2,...,K中,使得簇内欧氏距离二次方之和最小。
arg ⁡ min ⁡ C k ∑ i = 1 k ∑ x ∈ C k ∥ x − u i ∥ 2 \arg\min_{C_k}\sum_{i=1}^k\sum_{x\in C_k}\|x-u_i\|^2 argCkmini=1kxCkxui2
u i u_i ui C i C_i Ci内所有点的均值

K-Means 算法

初始化: 产生随机种子点
在每次迭代过程中:
1、将每个点重新分类到,距离最近的中心点所属的簇中(基于欧氏距离)
C k = { x i ∣ ∥ x i − u k ∥ 2 ≤ ∥ x i − u k ′ ∥ 2 , f o r ∀ k ′ ≠ k } C_k = \{ x_i | \|x_i - u_k\|^2 \leq \|x_i-u_{k'}\|^2 ,for \forall k' \neq k \} Ck={xixiuk2xiuk2,fork=k}
2、更新每一个簇的均值
u k = m e a n ( C k ) = 1 ∣ C k ∣ ∑ x ∈ C k x u_k = mean(C_k) = \frac{1}{|C_k|}\sum_{x\in C_k}x uk=mean(Ck)=Ck1xCkx
停止迭代:当簇的mean或者loss基本不变时
随机两个种子点
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

K-Means 的loss function

u 1 , u 2 , . . . , u k u_1,u_2,...,u_k u1,u2,...,uk 是 K个簇的均值
z i , k z_{i,k} zi,k是一个指示
z i , k = { 1 , x i ∈ C k 0 , o r t h e r w i s e z_{i,k} = \left\{\begin{matrix} 1,\quad x_i \in C_k\\ 0, ortherwise \end{matrix}\right. zi,k={1,xiCk0,ortherwise
z i = [ z i , 1 , z i , 2 , . . . , z i , k ] T z_i = [z_{i,1}, z_{i,2},...,z_{i,k}]^T zi=[zi,1,zi,2,...,zi,k]T
∑ k = 1 K z i , k = 1 \sum_{k=1}^K z_{i,k} = 1 k=1Kzi,k=1,表明一个点智能属于其中的一类。

对xi来说,loss是
l ( { u k } k = 1 , 2 , . . . , K , x i , z i ) = ∑ k = 1 K z i , k ∥ x i − u k ∥ 2 l(\{u_k\}_{k=1,2,...,K}, x_i, z_i) = \sum_{k=1}^Kz_{i,k}\|x_i - u_k\|^2 l({uk}k=1,2,...,K,xi,zi)=k=1Kzi,kxiuk2
将总的所有的点的loss 定义为 K-means 的损失函数
L ( μ , X , z ) = ∑ i = 1 N ∑ k = 1 K z i , k ∥ x i − μ k ∥ 2 = ∥ X − Z μ ∥ 2 L(\mu,X,z) = \sum_{i=1}^N\sum_{k=1}^Kz_{i,k}\|x_i - \mu_k\|^2 = \|X-Z\mu\|^2 L(μ,X,z)=i=1Nk=1Kzi,kxiμk2=XZμ2
在这里插入图片描述
z i T μ z_i^T\mu ziTμ是xi 所属的簇的均值。

  • 上式是一个非凸函数,可能会有许多局部最优
  • 也是一个NP-Hard问题
  • 使用启发式的方法解决
  • 固定u,改变Z使得loss更小
  • 固定Z,改变u使得loss更小
    因为有局部最优不同算法可能收敛到不同的局部最优

K-mean 的收敛

在每一步更新u,Z时,目标不会增大
update Z from Z ( t − 1 ) Z^{(t-1)} Z(t1) to Z ( t ) Z^{(t)} Z(t)
L ( μ ( t − 1 ) , Z , Z ( t ) ) ≤ L ( μ ( t − 1 ) , X , Z ( t − 1 ) ) L(\mu^{(t-1)},Z,Z^{(t)}) \leq L(\mu^{(t-1)},X,Z^{(t-1)}) L(μ(t1),Z,Z(t))L(μ(t1),X,Z(t1))
因为 Z ( t ) = arg ⁡ min ⁡ Z L ( μ ( t − 1 ) , X , Z ) Z^{(t)} = \arg\min_Z L(\mu^{(t-1)},X,Z) Z(t)=argminZL(μ(t1),X,Z)

update μ \mu μ from μ ( t − 1 ) \mu^{(t-1)} μ(t1) to μ ( t ) \mu^{(t)} μ(t)
L ( μ ( t ) , Z , Z ( t − 1 ) ) ≤ L ( μ ( t − 1 ) , X , Z ( t − 1 ) ) L(\mu^{(t)},Z,Z^{(t-1)}) \leq L(\mu^{(t-1)},X,Z^{(t-1)}) L(μ(t),Z,Z(t1))L(μ(t1),X,Z(t1))
因为 μ ( t ) = arg ⁡ min ⁡ μ L ( μ , X , Z ( t − 1 ) ) \mu^{(t)} = \arg\min_{\mu} L(\mu,X,Z^{(t-1)}) μ(t)=argminμL(μ,X,Z(t1))

请添加图片描述

K-means 一些限制

  • 硬分类 hard assignment,一个点要么属于一类,要么完全不属于。
  • 更适合每个簇的大小差不多的情况
  • 当分类的簇是个圆形的表现好,当簇不是圆形的,是个非凸的表现不好。
  • kernel K-means可以解决非凸的情况。
  • 在这里插入图片描述

kernel K-means

基本思想: 将K-means 里的欧式举例替换成 kernel的形式。
d ( x i , μ k ) = ∥ ϕ ( x i ) − ϕ ( μ k ) ∥ d(x_i,\mu_k) = \|\phi( x_i) - \phi(\mu_k) \| d(xi,μk)=ϕ(xi)ϕ(μk)
∥ ϕ ( x i ) − ϕ ( μ k ) ∥ 2 = ∥ ϕ ( x i ) ∥ 2 + ∥ ϕ ( μ k ) ∥ 2 − 2 ϕ ( x i ) T ϕ ( μ k ) \| \phi( x_i) - \phi(\mu_k) \|^2 = \|\phi( x_i)\|^2 + \|\phi( \mu_k)\|^2 - 2\phi(x_i)^T\phi(\mu_k) ϕ(xi)ϕ(μk)2=ϕ(xi)2+ϕ(μk)22ϕ(xi)Tϕ(μk)
d ( x i , μ k ) 2 = k ( x i , k i ) + k ( μ k , μ k ) − 2 k ( x i , μ k ) d(x_i,\mu_k)^2 = k(x_i,k_i) + k(\mu_k,\mu_k) - 2k(x_i,\mu_k) d(xi,μk)2=k(xi,ki)+k(μk,μk)2k(xi,μk)
在这里插入图片描述

层次聚类 Hierarchical Clustering

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

度量两个数据点间的距离的方法

给定数据点 a = ( a 1 , a 2 , . . , a n ) , b = ( b 1 , b 2 , . . . , b n ) a = (a_1,a_2,..,a_n), b = (b_1,b_2,...,b_n) a=(a1,a2,..,an),b=(b1,b2,...,bn)

  • 欧氏距离: ∥ a − b ∥ 2 = ∑ i ( a i − b i ) 2 \|a-b\|_2 =\sqrt{\sum_i(a_i-b_i)^2} ab2=i(aibi)2
  • 欧式距离平方: ∥ a − b ∥ 2 … … 2 = ∑ i ( a i − b i ) 2 \|a-b\|_2……2 =\sum_i(a_i-b_i)^2 ab22=i(aibi)2
  • 曼哈顿距离: ∥ a − b ∥ 1 = ∑ i ∣ a i − b i ∣ \|a-b\|_1 = \sum_i|a_i-b_i| ab1=iaibi
  • 最大距离: ∥ a − b ∥ ∞ = max ⁡ i ∣ a i − b i ∣ \|a-b\|_\infty = \max_i|a_i-b_i| ab=maxiaibi
  • 马氏距离: ( a − b ) T S − 1 ( a − b ) \sqrt{(a-b)^TS^{-1}(a-b)} (ab)TS1(ab)
如何度量两个集合之间的距离

min-link:会导致cluster非常大
d ( R , S ) = min ⁡ x R ∈ R , x S ∈ S d ( x R , x S ) d(R,S) = \min_{x_R\in R,x_S\in S} d(x_R,x_S) d(R,S)=xRR,xSSmind(xR,xS)
max-link: 会使得 cluster 小,并且呈圆形

d ( R , S ) = max ⁡ x R ∈ R , x S ∈ S d ( x R , x S ) d(R,S) = \max_{x_R\in R,x_S\in S} d(x_R,x_S) d(R,S)=xRR,xSSmaxd(xR,xS)
average-link
d ( R , S ) = 1 ∣ R ∣ ∣ S ∣ max ⁡ x R ∈ R , x S ∈ S d ( x R , x S ) d(R,S) = \frac{1}{|R||S|}\max_{x_R\in R,x_S\in S} d(x_R,x_S) d(R,S)=RS1xRR,xSSmaxd(xR,xS)

Flat vs Hierarchical Clustering

  • flat clustering 产生单个的分割
  • 层次clustering 在不同层次产生不同分割
  • flat clustering 需要制定簇的数量
  • 层次聚类不需要指定簇的数量
  • flat 聚类更高效
  • 没有明确的理由说明这两个哪个好那个坏。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值