k-中心聚类算法(k-medoids)
k-中心聚类算法(k-medoids)算法是一种分区聚类方法,用于将数据集划分为 k 个簇,其中 k 是由用户指定的簇的数量。
与K-means算法不同,K-medoids算法选择实际的数据点作为簇的中心(称为medoids),而不是计算簇内数据点的均值。
这样,K-medoids算法对异常值更加鲁棒,因为它不会受到极端值的影响。
K-medoids算法的主要步骤如下:
-
初始化:随机
选择 k 个数据点作为初始的 medoids。 -
分配:将每个数据点分配给
最近的 medoids,形成 k 个簇。 -
更新:对于每个簇,计算所有
非medoids点与当前medoids交换后的总成本变化。如果更换medoids能减少总成本,则进行更换。 -
重复步骤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=1∑kj∈Ci∑d(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=1∑p(ojl−mil)2
这里:
- ppp 是
数据点的维度。 - ojlo_{jl}ojl 和 milm_{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算法的目标是通过上述公式最小化簇内的总距离,从而获得更紧凑、更一致的簇。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)