聚类算法-K均值

1.聚类的定义
   聚类是对大量未标注的数据集,按数据的内在相似性将数据分为多个类别,使类别内的数据相似度较大,而类别间的数据相似度较小。
2.相似度/计算方法相似
   闵可夫斯基距离/欧拉距离: dist ⁡ ( X , Y ) = ( ∑ i = 1 n ∣ x i − y i ∣ p ) 1 p \operatorname{dist}(X, Y)=\left(\sum_{i=1}^{n}\left|x_{i}-y_{i}\right|^{p}\right)^{\frac{1}{p}} dist(X,Y)=(i=1nxiyip)p1
      p=1,曼哈顿距离
      p=2,欧式距离
      p取无穷大,是分量差的最大值,也叫切比雪夫距离。
   杰卡德相似系数: J ( A , B ) = ∣ A ∩ B ∣ ∣ A ∪ B ∣ J(A, B)=\frac{|A \cap B|}{|A \cup B|} J(A,B)=ABAB
   余弦相似度: cos ⁡ ( θ ) = a T b ∣ a ∣ ⋅ ∣ b ∣ \cos (\theta)=\frac{a^{T} b}{|a| \cdot|b|} cos(θ)=abaTb

   皮尔森相似系数: ρ x y = cov ⁡ ( X , Y ) σ X σ Y = E [ ( X − μ X ) ( Y − μ Y ) ] σ X σ Y = ∑ i = 1 n ( X i − μ X ) ( Y i − μ Y ) ∑ i = 1 n ( X i − μ X ) 2 ∑ i = 1 n ( Y i − μ Y ) 2 \rho_{x y}=\frac{\operatorname{cov}(X, Y)}{\sigma_{X} \sigma_{Y}}=\frac{E\left[\left(X-\mu_{X}\right)\left(Y-\mu_{Y}\right)\right]}{\sigma_{X} \sigma_{Y}}=\frac{\sum_{i=1}^{n}\left(X_{i}-\mu_{X}\right)\left(Y_{i}-\mu_{Y}\right)}{\sqrt{\sum_{i=1}^{n}\left(X_{i}-\mu_{X}\right)^{2}} \sqrt{\sum_{i=1}^{n}\left(Y_{i}-\mu_{Y}\right)^{2}}} ρxy=σXσYcov(X,Y)=σXσYE[(XμX)(YμY)]=i=1n(XiμX)2 i=1n(YiμY)2 i=1n(XiμX)(YiμY)
      余弦相似度和皮尔森相似系数之间的关系:
        n维向量x和n维向量y的夹角记作 θ \theta θ,其余弦值为 cos ⁡ ( θ ) = x T y ∣ x ∣ ⋅ ∣ y ∣ = ∑ i = 1 n x i y i ∑ i = 1 n x i 2 ∑ i = 1 n y i 2 \cos (\theta)=\frac{x^{T} y}{|x| \cdot|y|}=\frac{\sum_{i=1}^{n} x_{i} y_{i}}{\sqrt{\sum_{i=1}^{n} x_{i}^{2}} \sqrt{\sum_{i=1}^{n} y_{i}^{2}}} cos(θ)=xyxTy=i=1nxi2 i=1nyi2 i=1nxiyi
        可知,相关系数就是将x,y的坐标各自平移到原点后的余弦值。这即解释了为何文档间求距离使用夹角余弦,这一物理量表征了文档去均值化后的随机向量的相关系数。
   相对熵: D ( p ∥ q ) = ∑ x p ( x ) log ⁡ p ( x ) q ( x ) = E p ( x ) log ⁡ p ( x ) q ( x ) D(p \| q)=\sum_{x} p(x) \log \frac{p(x)}{q(x)}=E_{p(x)} \log \frac{p(x)}{q(x)} D(pq)=xp(x)logq(x)p(x)=Ep(x)logq(x)p(x)
   Hellinger距离:
D α ( p ∥ q ) = 2 1 − α 2 ( 1 − ∫ p ( x ) 1 + α 2 q ( x ) 1 − α 2 d x ) D_{\alpha}(p \| q)=\frac{2}{1-\alpha^{2}}\left(1-\int p(x)^{\frac{1+\alpha}{2}} q(x)^{\frac{1-\alpha}{2}} d x\right) Dα(pq)=1α22(1p(x)21+αq(x)21αdx)
     特别地,当 α = 0 \alpha=0 α=0时,有
D α ( p ∥ q ) = 2 1 − α 2 ( 1 − ∫ p ( x ) 1 + α 2 q ( x ) 1 − α 2 d x ) ⇒ D H ( p ∥ q ) = 2 ( 1 − ∫ p ( x ) q ( x ) d x )  s.t.  α = 0 = 2 − 2 ∫ p ( x ) q ( x ) d x = ∫ p ( x ) d x + ∫ q ( x ) d x − ∫ 2 p ( x ) q ( x ) d x = ∫ ( p ( x ) − 2 p ( x ) q ( x ) + q ( x ) ) d x = ∫ ( p ( x ) − q ( x ) ) 2 d x \begin{aligned} &D_{\alpha}(p \| q)=\frac{2}{1-\alpha^{2}}\left(1-\int p(x)^{\frac{1+\alpha}{2}} q(x)^{\frac{1-\alpha}{2}} d x\right)\\ &\Rightarrow D_{H}(p \| q)=2\left(1-\int \sqrt{p(x) q(x)} d x\right) \quad \text { s.t. } \alpha=0\\ &=2-2 \int \sqrt{p(x) q(x)} d x\\ &=\int p(x) d x+\int q(x) d x-\int 2 \sqrt{p(x) q(x)} dx\\ &=\int(p(x)-2 \sqrt{p(x) q(x)}+q(x)) d x\\ &=\int(\sqrt{p(x)}-\sqrt{q(x)})^{2} d x \end{aligned} Dα(pq)=1α22(1p(x)21+αq(x)21αdx)DH(pq)=2(1p(x)q(x) dx) s.t. α=0=22p(x)q(x) dx=p(x)dx+q(x)dx2p(x)q(x) dx=(p(x)2p(x)q(x) +q(x))dx=(p(x) q(x) )2dx
   实际的物理点,使用欧式距离,集合相关杰卡得相似度,nlp相关使用余弦相似度,函数度量使用后面三种。
3.聚类的基本思想:
   给定一个有N的对象的数据集,构造数据的k个簇, k ≤ n o \mathrm{k} \leq \mathrm{n}_{\mathrm{o}} kno满足以下条件:
     每一个簇至少包含一个对象
     每一个对象属于且仅属于一个簇
     将满足上述条件的k个簇称为一个合理的划分
   对于给定的类别数目k,首先给出合理划分,通过迭代改变样本和簇的隶属关系,使得每一次改进之后的划分方案都比前一次好。
4.K-means算法
   假定输入样本为 S = x 1 , x 2 , … , x m \mathrm{S}=\mathrm{x}_{1}, \mathrm{x}_{2}, \ldots, \mathrm{x}_{\mathrm{m}} S=x1,x2,,xm,则算法步骤为
     选择初始的k个类别中心 μ 1 μ 2 … μ k \mu_{1} \mu_{2} \dots \mu_{k} μ1μ2μk
     对于每个样本 x i x_i xi,将其标记为距离类别中心最近的类别,即  label  i = arg ⁡ min ⁡ 1 ≤ j ≤ k ∥ x i − μ j ∥ \text { label }_{i}=\underset{1 \leq j \leq k}{\arg \min }\left\|x_{i}-\mu_{j}\right\|  label i=1jkargminxiμj
     将每个类别中心更新为隶属于改类别的所有样本均值
μ j = 1 ∣ c j ∣ ∑ i e c j x i \mu_{j}=\frac{1}{\left|c_{j}\right|} \sum_{i e c_{j}} x_{i} μj=cj1iecjxi
     重复最后两步,直到类别中心的变化小于某阀值。
   终止条件:
     迭代次数/簇中心变化率/最小平方误差MSE。
4.对k-Means的思考
   k-Means将簇中所有点的均值作为新质心,若簇中含有异常点,将导致均值偏离严重。以一维数据为例:
     数组1,2,3,4,100的均值为22,显然距离大多数数据1,2,3,4比较远;
     改成求数组的中位数3,在该实例中更为稳妥。这种聚类方式即为k-Mediods聚类(k中值聚类)
5.k-Means的公式化解释
   记K个簇中心为 μ 1 , μ 2 , ⋯   , μ k \mu_{1}, \mu_{2}, \cdots, \mu_{k} μ1,μ2,,μk,每个簇的样本数目为 N 1 , N 2 , ⋯   , N k N_{1}, N_{2}, \cdots, N_{k} N1,N2,,Nk
   使用平方误差作为目标函数:
J ( μ 1 , μ 2 , ⋯ μ k ) = 1 2 ∑ j = 1 K ∑ i = 1 N j ( x i − μ j ) 2 J\left(\mu_{1}, \mu_{2}, \cdots \mu_{k}\right)=\frac{1}{2} \sum_{j=1}^{K} \sum_{i=1}^{N_{j}}\left(x_{i}-\mu_{j}\right)^{2} J(μ1,μ2,μk)=21j=1Ki=1Nj(xiμj)2
   对关于 μ 1 , μ 2 , ⋯   , μ k \mu_{1}, \mu_{2}, \cdots, \mu_{k} μ1,μ2,,μk的函数求偏导
∂ J ∂ μ j = − ∑ i = 1 N j ( x i − μ j ) ⟶ ↔ 0 ⇒ μ j = 1 N j ∑ i = 1 N j x i \frac{\partial J}{\partial \mu_{j}}=-\sum_{i=1}^{N_{j}}\left(x_{i}-\mu_{j}\right) \stackrel{\leftrightarrow}{\longrightarrow} 0 \Rightarrow \mu_{j}=\frac{1}{N_{j}} \sum_{i=1}^{N_{j}} x_{i} μjJ=i=1Nj(xiμj)0μj=Nj1i=1Njxi
6.Mini-batch k-means算法描述
在这里插入图片描述
7.k-means聚类算法总结:
   优点:是解决聚类问题的一种经典算法,简单,快速;
      对处理大数据集,该算法保持可伸缩性和高效率;
      当簇近似为高斯分布时,它的效果较好。
   缺点:在簇的平均值可被定义的情况下才能使用,可能不适用某些应用;
      必须事先给出k(要生成的簇的数目),而且对初值敏感,对于不同的初始值,可能会导致不同的结果;
      不适合于发现非凸形状的簇或者大小差别很大的簇;
      对噪声和孤立点数据敏感。
   可作为其他聚类方法的基础算法,如谱聚类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值