
无监督学习
|
247
7.2.4
选择簇的数量
K-
均值算法要求确定簇的数量
K
。有时候簇的数量是由具体应用决定的。例如,一家公司
的销售团队想通过聚类为客户生成“用户画像”,以关注并引导销售需求。在这种情况下,
管理方面的考虑会决定客户分组的数量。如果有两组,就可能得不到有用的客户之间的差
异,而八组又太多,管理起来非常困难。
如果实际情况或管理因素对簇的数量没有要求,那么就可以通过统计方法来确定,不过现
在还没有一种标准方法能够找到“最优”的簇数量。
一种常用的方法称为
肘点法
(
elbow
method
),它可以识别出何时簇集合能解释数据中的
“大部分”方差,这个时候,向簇集合中加入新簇对解释方差的贡献就非常小。肘点就是
累积解释方差从陡峭上升变为平稳停滞的那个点,这种方法也因此得名。
图
7-7
显示了当簇的数量为
2
到
15
时
,对默认数据中方差解释的累积百分比。那么,这个
例子中的肘点在哪儿呢?没有一个明显的可供选择的点,因为累积解释方差的增量是逐渐
下降的。在没有明显的簇的数据中,这种现象非常正常。这可能是肘点法的一个缺点,但
它确实揭示了数据的本质。
图 7-7:在股票数据上使用肘点法
在
R
中,
kmeans
函数没有提供一个单独的命令来应用肘点法,但根据
kmeans
的输出,可
以很容易地使用这种方法,如下所示:
pct_var <- data.frame(pct_var = 0,
num_clusters = 2:14)
totalss <- kmeans(df, centers=14, nstart=50, iter.max=100)$totss ...