聚类效果评估——轮廓系数(Silhouette Coefficient)附Python代码

前言

在机器学习中,无监督学习算法中聚类算法算作相对重要的一部分算法。也常在低资源和无标注的情况下使用。
其中KMeans作为聚类算法中的一种,充当着重要的角色。由于其思想较为简单,易于理解和方便实现。所以经常被用来做数据的处理,在NLP领域常被用于文本聚类以及文本类别挖掘等方向。

但是KMeans算法有一个致命的缺点就是,如何选择K值。K值的选择至关重要,选择的好可以有较好的聚类效果。

通常情况下,K值的选择人们会根据先验的知识给定一个估计的值,或者是利用Canopy算法计算出一个大致的K值。更多的情况下,还是利用后验的方式进行K值的选择。也就是在给定K的范围[a,b]下,对不同的K值分别进行聚类操作,最终利用聚类效果的评价指标,来给出相应的最优聚类结果。这种评价聚类结果效果的指标有:误差平方和(Sum of the Squared Errors, SSE),轮廓系数(Silhouette Coefficient)和CH指标(Calinski-Harabaz)。

是什么?

轮廓系数,是用于评价聚类效果好坏的一种指标。可以理解为描述聚类后各个类别的轮廓清晰度的指标。其包含有两种因素——内聚度和分离度。

内聚度可以理解为反映一个样本点与类内元素的紧密程度。
分离度可以理解为反映一个样本点与类外元素的紧密程度。

为什么?

为什么轮廓系数可以评价聚类效果的好坏?怎样评价效果好坏?

轮廓系数的公式如下:
S ( i ) = b ( i ) − a ( i ) m a x { a ( i ) , b ( i ) } S(i) = \frac{b(i)-a(i)}{max\{a(i), b(i)\}} S(i)=max{ a(i),b(i)}b(i)a(i)

其中, a ( i ) a(i) a(i)代表样本点的内聚度,计算方式如下:
a ( i ) = 1 n − 1 ∑ j ≠ i n d i s t a n c e ( i , j ) a(i) = \frac{1}{n-1}\sum_{j\ne i}^{n}distance(i,j) a

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值