轮廓系数(一个异型簇的分类标准)
定义
轮廓系数是“簇内紧密性” 和 “簇间分离度” 量化聚类效果,取值范围为 [-1, 1]
,越接近 1 表示聚类质量越好。
簇内紧密性:指的该样本到同簇内距离的平均值
簇间分离度:指的是最小化(该样本到每个异簇的距离的平均值)
公式
# 弹性网络损失函数
ElasticNet融合L1和L2惩罚,损失函数为:
样本 i 的轮廓系数 } s 公式为
$$
s= \begin{cases} 1 - \dfrac{a_i}{b_i}, & \text{若 } a_i < b_i \ (\text{簇内紧、簇间远,聚类好}) \\ 0, & \text{若 } a_i = b_i \ (\text{簇内与簇间距离相当,聚类一般}) \\ \dfrac{a_i}{b_i} - 1, & \text{若 } a_i > b_i \ (\text{簇内松、簇间近,聚类差}) \end{cases}
$$
个人理解核心目标是最小化紧密型 最大化分离度
根据这个目标推算公式
全局轮廓系数就是所有轮廓系数的平均值
库
from sklearn.metrics import silhouette_samples,silhouette_scorescore = silhouette_score(X, cluster_labels) # 计算全局轮廓系数# 4.3 计算所有样本的轮廓系数(包括新样本)sample_silhouettes = silhouette_samples(X_combined, labels_combined)# 4.4 提取新样本的轮廓系数(最后一个元素)new_sample_score = sample_silhouettes[-1]
总结
首先轮廓系数是可以作为聚类算法的评估指标,同样也可用二分法在大数据上进行优化