构建客户与产品分群

Python 营销中的机器学习

Karolis Urbonas

Head of Analytics & Science, Amazon

K-means 分群步骤

用 K-means 进行分群(k 为簇数):

from sklearn.cluster import KMeans

kmeans=KMeans(n_clusters=k)
kmeans.fit(wholesale_scaled_df)
wholesale_kmeans4 = wholesale.assign(segment = kmeans.labels_)
Python 营销中的机器学习

NMF 分群步骤

用 NMF 分群(k 为簇数):

from sklearn.decomposition import NMF
nmf = NMF(k)
nmf.fit(wholesale)
components = pd.DataFrame(nmf.components_, columns=wholesale.columns)

提取分群归属:

segment_weights = pd.DataFrame(nmf.transform(wholesale, columns=components.index)
segment_weights.index = wholesale.index
wholesale_nmf = wholesale.assign(segment = segment_weights.idxmax(axis=1))
Python 营销中的机器学习

如何初始化分群数量?

  • K-means 与 NMF 都需设定簇数(k
  • 两种确定 k 的方式:1)数学方法;2)测试与迭代
  • 我们将用肘部法则获取大致范围
Python 营销中的机器学习

肘部法则

  • 遍历多个 k 取值
  • 在同一数据上分别聚类
  • 计算各自的平方误差和(SSE
  • 绘制 SSEk,找出"肘部"——误差下降的边际改善减弱处
Python 营销中的机器学习

计算平方误差和并绘图

sse = {}
for k in range(1, 11):
    kmeans=KMeans(n_clusters=k, random_state=333)
    kmeans.fit(wholesale_scaled_df)
    sse[k] = kmeans.inertia_
plt.title('Elbow criterion method chart')
sns.pointplot(x=list(sse.keys()), y=list(sse.values()))
plt.show()
Python 营销中的机器学习

确定最优分群数量

肘部法则

Python 营销中的机器学习

测试与迭代法

  • 先用数学方法计算最优分群数
  • 以最优 k 为中心,用多个取值建立分群
  • 检查结果,选择最具业务意义者(能否命名?是否含糊/重叠?)
Python 营销中的机器学习

开始构建客户分群!

Python 营销中的机器学习

Preparing Video For Download...