K-MEANS · COURSE 05
这些客户,应该分成几组?
你直觉上看到了几组客户?
无监督学习
没有标准答案,算法如何分组?
学习“什么特征对应什么类别”。
先寻找相似样本,再由业务解释群组。
簇编号只是 0、1、2、3,不等于“高价值客户”等业务名称。命名需要观察每组特征后再决定。
距离与质心
离哪个中心更近,就先归到哪一组
先放置K个中心点
每个客户归到最近质心
计算每簇样本平均位置
直到质心基本不再移动
INTERACTIVE LAB
亲手完成一次质心迭代
数据还没有分组。
模型选择
K值应该选多少?
图中K=4后下降幅度明显变小,因此4可以作为候选,但最终仍要结合业务是否能够解释和使用这些群组。
关键前处理
不同单位,会让距离判断失真
客单价可能是数百元,购买频率只有个位或十位。金额差异容易主导距离。
两个特征都转换到相近尺度,距离能同时考虑频率和金额。
PYTHON / SCIKIT-LEARN
用代码完成客户分群
01import pandas as pd
02from sklearn.preprocessing import StandardScaler
03from sklearn.cluster import KMeans
04data = pd.read_csv("customer-segmentation-teaching.csv")
05features = ["purchase_frequency", "average_order_amount"]
06X = data[features]
07scaler = StandardScaler()
08X_scaled = scaler.fit_transform(X)
09model = KMeans(n_clusters=4, random_state=42, n_init=10)
10data["cluster"] = model.fit_predict(X_scaled)
11centers = scaler.inverse_transform(model.cluster_centers_)
12print(data[["customer_id", "cluster"]])
13print(centers)
使用边界
适合发现结构,但不会自动给出业务答案
客户分群、门店分组、商品分组、行为模式发现
需要预设K、对初始质心敏感、受异常值影响、偏好近似球形簇
标准化特征、多次初始化、结合轮廓系数和业务解释验证
KNOWLEDGE CHECK
检查你是否理解了K-means
K-means 属于哪类学习?
K 表示什么?
质心如何更新?
为什么通常需要标准化?
分群完成后可以直接命名为高价值客户吗?
COURSE 05 · SUMMARY
K-means用距离寻找群组,用质心描述群组中心
- 没有标签也能发现数据结构。
- K决定希望形成的簇数量。
- 样本分配与质心更新会反复进行。
- 标准化避免数值尺度主导距离。
- 算法只负责分组,业务仍需解释结果。