三、 K值的选择
K值的选择在聚类算法中至关重要,因为其牵扯到算法模型的有效性。依然以上节中的数据为例,我们借助Orange分析软件,对几种主要的K值评判方法加以介绍。
(一)快速判断法
以样本内容及研究目的进行具体判断。例如,我们搜集了一些人的身高和体重,想借助身高和体重两个特征进行衣服尺码的划分,例如厂家想生产三种类型的尺码(S、M、L),以此可以获得更好的收益,这是我们的聚类数目会选择K=3;例如厂家想生产五种类型的尺码(XS、S、M、L、XL),以此可以获得更好的收益,这是我们的聚类数目会选择K=5;所以这时候的聚类数目的选择是根据制造的衣服是否能较好地适应我们的客户。
一种可供参考的快速方法是将样本量除以2再开平方出来的值作为K值,具体公式为:
(二)肘部法则(Elbow Method)
快速判断法是一种经验判断方法,那么有没有一种可以选择聚类数目的较为科学的方法呢?有一种方法叫做“肘部法则”,也就是说我们分别计算在各种K值中聚类算法最终的损失函数,一般是指SSE,绘制出随着K值变化损失函数变化的曲线,通过曲线的“拐点”来判断最佳的K值。
此种方法适用于K值相对较小的情况,当选择的k值小于适配值时,k每增加1,聚类算法的损失函数,即SSE值就会大幅的减小;当选择的k值大于适配值时, k每增加1,SSE值的变化就不会那么明显。这样,正确的k值就会在这个转折点,类似elbow(手肘)的地方。如下图2-2-6所示。
图2-2-6 肘部法则示意图
接下来我们以上述商科所的数据用例来看看肘部法则的有效性到底如何。首先,我们要知道,关于SSE的计算相当繁杂,尤其是大样本计算的时候,所以我们需要借助大数据分析软件进行处理和量化。在这里,我们依然擎出Orange这个大杀器,借助其强大的分析计算能力展现SSE在判别K值中的作用。
商科所数据导入Orange中的分析流程图如图2-2-7所示。
打开k-means的窗口,如下图2-2-8所示。
图2-2-8 Orange中k-means参数窗口
里面有几个重要的指标:
Fixed 算法将数据聚类到指定数量的聚类中;
From to 显示所选聚类范围的聚类得分,即轮廓系数得分(Silhouette Scores);
Initialization with k-Means++ 第一个中心是随机选择的,随后从其余点中选择,其概率与距最近点的平方距离成正比;
Random Initialization 聚类首先被随机分配,然后通过进一步的迭代进行更新;
Re-runs 从随机初始位置运行算法多少次。将使用簇内平方和最低的结果;
Maximum iterations 最大迭代次数。
接下来我们将Orange中k=2到k=7的聚类数据全部保存下来,并且对其SSE逐个进行计算,得到如下表2-2-1。
表2-2-1 商科所数据不同分组的SSE
k值 | k=1 | k=2 | k=3 | k=4 | k=5 | k=6 | k=7 |
SSE | 14562 | 8451 | 6290 | 5275 | 4400 | 3489 | 3009 |
其曲线图如下图2-2-9所示:

图2-2-9 商科所数据的SSE肘部法则
由上图可以看出,商科所数据的最佳分簇K值可以选为3,因为在时,SSE曲线有一个较为明显的缓坡下降。 所有上述计算过程及原始数据在后续小节的二维码中可以下载查看,供读者研究之用。(三)轮廓系数法(Silhouette Coefficient)
轮廓系数的数值范围为[-1,1]。对样本来讲,接近于 1,则说明样本聚类合理;接近于-1,则说明样本更应该分类到另外的簇;若近似为 0,则说明样本在两个簇的边界上。
以商科所数据为例,其K=2 到7 的轮廓系数见下图。
通过计算各簇轮廓系数的均值,, ,时轮廓系数得分较高,但时,负值最多, 时,负值多于时的负值,且簇宽度大小不一。而时,负值最少,且所聚的簇宽度相差不大。综合研判,取 最合理。
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
|