选择聚类数

Python 中的客户细分

Karolis Urbonas

Head of Data Science, Amazon

方法

  • 可视法:肘部法则
  • 数学法:轮廓系数
  • 试验与解读
Python 中的客户细分

肘部法则

  • 绘制聚类数与类内平方误差和(SSE)的关系图——每个点到其簇中心的平方距离之和
  • 在图中识别"拐点"
  • 拐点表示"最优"聚类数
Python 中的客户细分

肘部法则

# Import key libraries
from sklearn.cluster import KMeans
import seaborn as sns
from matplotlib import pyplot as plt

# Fit KMeans and calculate SSE for each *k* sse = {} for k in range(1, 11): kmeans = KMeans(n_clusters=k, random_state=1) kmeans.fit(data_normalized) sse[k] = kmeans.inertia_ # sum of squared distances to closest cluster center
# Plot SSE for each *k* plt.title('The Elbow Method') plt.xlabel('k'); plt.ylabel('SSE') sns.pointplot(x=list(sse.keys()), y=list(sse.values())) plt.show()
Python 中的客户细分

肘部法则

肘部法则图:

Python 中的客户细分

肘部法则

肘部法则图:

Python 中的客户细分

使用肘部法则

  • 优先选拐点处,或其后一个点
  • 仅作参考,需测试多种方案
  • 基于 datamart_rfm 构建肘部图

Python 中的客户细分

实验法:分析分群

  • 在拐点及其附近构建聚类
  • 分析其特征:平均 RFM 值
  • 相互对比,选择最符合业务的方案
Python 中的客户细分

实验法:分析分群

  • 之前的 2 类方案
  • 同一标准化 RFM 数据集的 3 类方案
Python 中的客户细分

让我们一起找到最优聚类数!

Python 中的客户细分

Preparing Video For Download...