🏠 Home
logo

L4 K-modes聚类分析

Lzz

2025-10-17

大纲

  • 1.1 K-modes聚类分析简介

  • 1.2 K-modes聚类分析步骤

  • 1.3 K-modes聚类分析在R中的实现

  • 1.4 K-modes聚类分析实例

  • 1.5 k-prototypes聚类分析

1.1 什么是K-modes聚类分析?

  • K-means 的局限

    • K-means 聚类要求计算“均值”作为簇中心,并用欧氏距离衡量样本与簇中心的距离。但是对于定性数据(如性别=男/女,职业=教师/医生),均值和欧氏距离都没有意义。
  • K-modes 的改进

    • 由 Huang (1998) 提出,K-modes 将:“均值”改成了“众数”(mode),即每一类在每个特征上的最频繁取值作为簇中心。

    • “欧氏距离”改成了匹配差异系数,即比较每个属性是否相同,不同计 1,相同计 0。

    • K-modes 就是K-means 在定性数据上的自然推广。

K-modes算法

  • 初始化:随机选择K个个案作为初始簇中心

  • 分配步骤:计算每个样本与K个簇中心的距离(匹配差异系数),将样本分配到距离最近的簇

  • 更新步骤:对于每个簇,重新计算簇中心(众数)

  • 重复分配和更新步骤,直到簇中心不再变化或达到最大迭代次数

K-modes优缺点

  • 优点

    • 适用于定性数据

    • 计算效率高,易于实现

    • 能处理大规模数据集

  • 缺点

    • 需要预先指定K值

    • 对初始类中心敏感,可能陷入局部最优

    • 仅适用于定性变量,无法处理混合数据类型

    • 结果解释性较差,难以理解簇的含义

1.2 K-modes聚类分析步骤

数据

第1步: 随机选择3个个案作为初始聚类中心

第2步: 计算个案1与cluster1的匹配差异系数

第2步: 计算个案1与cluster2的匹配差异系数

第2步: 计算每个个案与每个聚类中性的匹配差异系数

第3步: 将个案分配到最近的簇

第3步: 将个案分配到最近的簇

第4步: 对于每个簇,重新计算簇中心(众数)

第1轮聚类结果

重新计算簇中心

重新计算个案与簇中心的匹配差异系数

重新确定个案归属于哪个簇

直到簇中心不再变化或达到最大迭代次数

1.3 K-modes聚类分析在R中的实现

R包:klaR

klaR package

1.4 K-modes聚类分析实例——超市顾客分类

数据简介

数据链接

Download icon 点击下载数据文件: supermarket.xlsx

kmodes R代码

变量含义

1.5 k-prototypes聚类分析

  • k-prototypes算法结合了k-means和k-modes的优点,能够同时处理定量和定性变量。

  • 适用于混合数据类型的聚类分析。

  • 通过调整定量和定性变量的权重,可以更灵活地进行聚类。

  • 适用于市场细分、客户分类等实际应用场景。

  • R包:clustMixType

k-prototypes算法

距离度量

\[ d(x_i, z_j) = \sum_{k \in \text{numerical}}(x_{ik} - z_{jk})^2 + \gamma \sum_{l \in \text{categorical}} \delta(x_{il}, z_{jl}) \]

  • 数值变量使用平方欧氏距离

  • 分类变量使用匹配/不匹配距离(相同=0,不同=1)

  • γ 为权重系数,用于平衡数值和分类变量

聚类步骤

  • 初始化:随机选择K个原型(簇中心),数值部分取均值,分类部分取众数。

  • 分配簇:将每个样本分配给距离最近的簇(使用上面的混合距离度量)。

  • 更新簇中心:

    • 数值变量 → 取簇内均值

    • 分类变量 → 取簇内众数

  • 迭代,直到簇分配不再变化或达到最大迭代次数。

R包:clustMixType

clustMixType package