如何对比K-means与GMM在用户分群的效果?

解读

面试官想验证三件事:

  1. 你是否真正跑过国内真实用户数据(DAU、付费、券敏感度等),而不是只背论文;
  2. 能否用业务语言把算法指标翻译成运营结论(“这个群就是618高潜”);
  3. 是否知道中文App环境下的常见坑:ID映射、埋点缺失、羊毛党、iOS14隐私新政。
    回答必须“算法—指标—业务”三段闭环,且给出可落地的AB实验设计,否则会被判“不接地气”。

知识点

  1. 核心假设差异

    • K-means:硬性边界、球形簇、等方差,对“羊毛党vs.高净值”这种重叠分布容易误判。
    • GMM:软性归属,可建模不同方差与协方差,更适合“付费意愿连续渐变”的中国用户。
  2. 评估指标

    • 算法层:轮廓系数(Silhouette)Calinski-HarabaszBIC(GMM专用)。
    • 业务层:分群后7日LTV提升券核销率差异召回实验响应率;国内老板只看后者。
  3. 中文数据特有的预处理

    • 多平台ID打通:微信 OpenID + 手机号 MD5,需做一致性哈希归一
    • 异常清洗:拼多多型“0元购”订单金额设为缺失,否则会把K-means质心拉到负值。
  4. 运营落地

    • 分群结果必须可解释≤3个标签,例如“高客单+晚间活跃+小程序来源”。
    • 最终上线前做人群包A/B:对照组用老规则“近30天有购买”,实验组用GMM高潜群,看14天GMV增量是否>5%。

答案

“我在上一家公司负责电商大促用户运营,DAU 1800 万。为了把‘618 蓄水期’预算花在刀刃上,我用 4000 万行埋点数据对比了 K-means 与 GMM。
第一步,特征工程:选取最近30天支付金额、商详页停留时长、优惠券点领率、分享裂变次数四个核心指标,并对金额做幂变换解决右偏。
第二步,网格搜索:K-means 试 3~8 簇,GMM 试全协方差与对角协方差两种,用BIC选簇数;GMM 在 5 簇时 BIC 最低,K-means 轮廓系数最高 0.42,但Calinski-Harabasz 仅 268,低于 GMM 的 310。
第三步,业务验证:把两种模型结果推送到字节火山引擎人群包,各随机 100 万用户,发 5 元无门槛券。GMM 分群中有一个软归属概率>0.7的子群,券核销率 18.6%,比 K-means 最高群高 4.2 个百分点,7 日 LTV 高 11.4 元,ROI 提升 9%。
第四步,稳定性:两周后重新训练,GMM 的ARI 指数 0.83,K-means 仅 0.61,说明 GMM 对国内用户行为漂移更鲁棒。
最终向 VP 汇报时,我把结论翻译成一句话:‘用 GMM 能一年多赚 4700 万 GMV,且模型两周更新一次即可。’方案全量上线。”

拓展思考

  1. 如果公司只有 20 万用户,样本量小,GMM 容易过拟合,可改用贝叶斯高斯混合层次聚类先粗分再用 GMM 细化。
  2. 当业务目标转向会员续费而非一次性 GMV,要把特征换成“互动深度+客服投诉次数”,此时 K-means 的硬性边界反而利于黑白名单策略,需重新评估。
  3. 在 iOS 隐私新政下,设备级特征缺失,可引入联邦学习思路:两端各跑 GMM,只上传簇参数θ,用安全聚合更新全局模型,既合规又保留分群效果。