k-中心聚类算法(k-medoids)算法是一种分区聚类方法,用于将数据集划分为 k 个簇,其中 k 是由用户指定的簇的数量

与K-means算法不同,K-medoids算法选择实际的数据点作为簇的中心(称为medoids)而不是计算簇内数据点的均值

这样,K-medoids算法对异常值更加鲁棒,因为它不会受到极端值的影响。

K-medoids算法的主要步骤如下:

  1. 初始化:随机选择 k 个数据点作为初始的 medoids。

  2. 分配:将每个数据点分配给最近的 medoids,形成 k 个簇。

  3. 更新:对于每个簇,计算所有 非medoids 点与 当前medoids 交换后的总成本变化。如果更换medoids能减少总成本,则进行更换。

  4. 重复步骤2和3,直到没有更好的medoids可选或达到最大迭代次数。

涉及到的公式:

目标函数(准则函数)

假设我们有 n 个数据点和 k 个簇,目标是最小化以下函数:

∑i=1k∑j∈Cid(oj,mi) \sum_{i=1}^{k}\sum_{j \in C_i} d(o_j, m_i) i=1kjCid(oj,mi)

这里:

  • ojo_joj 表示数据集中的任意一个数据点。
  • mim_imi 是簇 CiC_iCi 的 medoids。
  • CiC_iCi 是由medoids mim_imi 代表的所有数据点组成的簇。
  • d(oj,mi)d(o_j, m_i)d(oj,mi) 是数据点 ojo_joj 和medoids mim_imi 之间的距离。
距离度量

最常见的距离度量是欧几里得距离,定义为:

d(oj,mi)=∑l=1p(ojl−mil)2 d(o_j, m_i) = \sqrt{\sum_{l=1}^{p}(o_{jl} - m_{il})^2} d(oj,mi)=l=1p(ojlmil)2

这里:

  • ppp数据点的维度。
  • ojlo_{jl}ojlmilm_{il}mil 分别是数据点 ojo_joj 和medoids mim_imi 在第 lll 上的值。

解释每个字符:

  • ∑\sum:求和符号,表示对一系列数值进行累加。
  • iii:簇的索引。
  • jjj:数据点的索引。
  • ojo_joj:数据点 jjj
  • mim_imi:簇 iii 的medoids。
  • CiC_iCi:簇 iii 中的所有数据点集合。
  • ddd:距离函数。
  • ppp:数据点的维度。
  • lll:维度的索引。
  • ojlo_{jl}ojl:数据点 jjj 在第 lll 维的值。
  • milm_{il}mil:medoids mim_imi 在第 lll 维的值。

K-medoids算法的目标是通过上述公式最小化簇内的总距离,从而获得更紧凑、更一致的簇。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐