机器学习第十六讲:K-means → 自动把超市顾客分成不同消费群体

发布于:2025-05-20 ⋅ 阅读:(13) ⋅ 点赞:(0)

机器学习第十六讲:K-means → 自动把超市顾客分成不同消费群体

资料取自《零基础学机器学习》
查看总目录:学习大纲

关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南


K-means是一种用于自动将相似数据分组的无监督学习算法。下面用超市顾客分组的例子详细讲解:

一、核心原理(类似整理杂货铺)

假设你有一堆散落的商品要分类摆放,但不知道应该分几类。K-means的解决步骤是:

  1. 随机选位置:先猜测分3类,在卖场随机选3个货架位置作为初始"中心点" [1-3][3]
  2. 就近摆放:把所有商品摆到离它最近的货架周围,形成3个临时区域 [^3]
  3. 调整中心:在每个临时区域中心放个新货架,替代原来的随机位置 [^3]
  4. 重复优化:根据新货架位置重新摆放商品,直到货架位置不再明显变化 [^3]
随机选3个中心点
商品归类到最近中心
计算每个类的新中心
中心是否变化?
得到最终分类

二、超市顾客分群实战

案例背景:某超市收集了200名顾客的:

  • 年收入(万元)
  • 消费分数(0-100分,综合消费金额和频率)[^1]
数据准备
选择特征
确定K值
聚类分析
  1. 选择关键特征:这里选年收入和消费分数,就像选"尺子"来度量顾客差异 [^1]

    示例数据片段:
    | 顾客ID | 年收入 | 消费分数 |
    |--------|--------|----------|
    | 001 | 38 | 82 |
    | 002 | 43 | 78 |

  2. 确定分组数量K:用手肘法找最佳分组数 [^3]

    • 原理:计算不同K值时的总误差(各点到中心的距离和)
    • 图示:当误差下降变缓时,就像人手臂的"肘关节",选这个K值
    # 代码示例(Python)
    cost = []
    for k in 110:
        用K-means分组
        记录当前总误差
    plt.plot(cost)  # 找肘部拐点
    
  3. 生成4个消费群体(当K=4时)[1][2]

    • 簇1(蓝):高收入-高消费 → 重点维护的VIP客户
    • 簇2(绿):中等收入-高消费 → 高潜力客户
    • 簇3(红):低收入-低消费 → 普通客户
    • 簇4(青):高收入-低消费 → 需提升消费意愿

三、应用价值与局限

适用场景 ➔ 银行客户分群/新闻主题聚类/市场细分 [^5-3]
优点:简单高效,适合处理大型数据集
缺点:需要人工确定K值,对异常值敏感

生活类比:就像给图书馆散落的书籍分类,先估计大概有几个主题区,不断调整书架位置直到形成自然的图书集群 [^3]


目录:总目录
上篇文章:机器学习第十五讲:决策树全面讲解:像玩"20个问题"游戏猜身份🎮
下篇文章:机器学习第十七讲:PCA → 把100维数据压缩成3D视图仍保持主要特征


[^1-3]《零基础学机器学习》第一章第三节类型划分
[^5-3]《零基础学机器学习》第五章第五节聚类算法
[1][2][^3]参见客户聚类案例代码(《零基础学机器学习》第十章教学用例)


网站公告

今日签到

点亮在社区的每一天
去签到