不同于分类模型和回归,聚类算法的模型评估不是一件简单的事。
在分类中,有直接结果(标签)的输出,并且分类的结果有正误之分,所以使用预测的准确度,混淆矩阵,ROC曲线等指标来进行评估。但无论如何评估,都是在”模型找到正确答案“的能力。而回归中,由于要拟合数据,我们有MSE均方误差,有损失函数来衡量模型的拟合程度。但这些衡量指标都不适用于聚类。

如何衡量聚类算法的效果

聚类模型的结果不是某种标签输出,并且聚类的结果是不确定的,其优劣由业务需求或者算法需求来决定,并且没有永远的正确答案。如何衡量聚类的效果呢?
K-Means的目标是确保“簇内差异小,簇外差异大”,可以通过衡量簇内差异来衡量聚类的效果。
SSE是用距离来衡量簇内差异的指标,因此,是否可以用SSE来作为聚类的衡量指标呢?SSE越小模型越好嘛。
可以,但是这个指标的缺点和局限太大。
首先,它不是有界的。我们只知道,SSE越小越好,是0最好,但不知道,一个较小的SSE究竟有没有达到模型的极限,能否继续提高。
第二,它的计算太容易受到特征数目的影响,数据维度很大的时候,SSE的计算量会陷入维度诅咒之中,计算量会爆炸,不适合用来一次次评估模型。
第三,它会受到超参数K的影响,随着K越大,SSE注定会越来越小,但这并不代表模型的效果越来越好了。
第四,SSE对数据的分布有假设,它假设数据满足凸分布(即数据在二维平面图像上看起来是一个凸函数的样子),并且它假设数据是各向同性的(isotropic),即是说数据的属性在不同方向上代表着相同的含义。但是现实中的数据往往不是这样。所以使用Inertia作为评估指标,会让聚类算法在一些细长簇,环形簇,或者不规则形状的流形时表现不佳:

那我们可以使用什么指标呢?聚类没有标签,即不知道真实答案的预测算法,我们必须完全依赖评价簇内的稠密程度(簇内差异小)和簇间的离散程度(簇外差异大)来评估聚类的效果。其中,轮廓系数是最常用的聚类算法的评价指标。它是对每个样本来定义的,它能够同时衡量:
1)样本与其自身所在的簇中的其他样本的相似度a,等于样本与同一簇中所有其他点之间的平均距离;
2)样本与其他簇中的样本的相似度b,等于样本与下一个最近的簇中的所有点之间的平均距离;
根据聚类的要求 ”簇内差异小,簇外差异大“,我们希望b永远大于a,并且大得越多越好。
单个样本的轮廓系数计算为:
s=b−amax(a,b)s=\frac{b-a}{max(a,b)}s=max(a,b)b−a​
这个公式可以被解析为:

很容易理解轮廓系数范围是(-1,1),其中值越接近1表示样本与自己所在的簇中的样本很相似,并且与其他簇中的样本不相似,当样本点与簇外的样本更更相似的时候,轮廓系数就为负。当轮廓系数为0时,则代表两个簇中的样本相似度一致,两个簇本应该是一个簇。
如果一个簇中的大多数样本具有比较高的轮廓系数,则簇会有较高的总轮廓系数,则整个数据集的平均轮廓系数越高,则聚类是合适的。如果许多样本点具有低轮廓系数甚至负值,则聚类是不合适的,聚类的超参数K可能设定得太大或者太小。
在sklearn中,我们使用模块metrics中的类silhouette_score来计算轮廓系数,它返回的是一个数据集中,所有样本的轮廓系数的均值。但我们还有同在metrics模块中的silhouette_sample,它的参数与轮廓系数一致,但返回的是数据集中每个样本自己的轮廓系数。
我们来看看轮廓系数在我们自建的数据集上表现如何:
在上篇博文《sklearn机器学习:K-Means》中,我们自己建了一个有4个中心的各向同性高斯团簇的数据点集,数据点分布如下

下面分别以k=3,4,5来验证一下轮廓系数的筛选效果:

n_clusters = 3
cluster_ = KMeans(n_clusters=n_clusters, random_state=0).fit(X)
silhouette_score(X,cluster_.labels_)
0.5882004012129721
n_clusters = 4
cluster_ = KMeans(n_clusters=n_clusters, random_state=0).fit(X)
silhouette_score(X,cluster_.labels_)
0.6505186632729437
n_clusters = 5
cluster_ = KMeans(n_clusters=n_clusters, random_state=0).fit(X)
silhouette_score(X,cluster_.labels_)
0.5746932321727457

可见,在k=4时,轮廓系数的值最大,符合我们建立的数据集属性,可见轮廓系数的筛选性是值得肯定的。

silhouette_samples(X,y_pred)
array([ 0.62982017,  0.5034877 ,  0.56148795,  0.84881844,  0.56034142,0.78740319,  0.39254042,  0.4424015 ,  0.48582704,  0.41586457,0.62497924,  0.75540751,  0.50080674,  0.8452256 ,  0.54730432,...0.5748237 ,  0.74655924,  0.57403918,  0.69733646,  0.52992071])

轮廓系数有很多优点,它在有限空间中取值,使得我们对模型的聚类效果有一个“参考”。并且,轮廓系数对数据的分布没有假设,因此在很多数据集上都表现良好。但它在每个簇的分割比较清洗时表现最好。但轮廓系数也有缺陷,它在凸型的类上表现会虚高,比如基于密度进行的聚类,或通过DBSCAN获得的聚类结果,如果使用轮廓系数来衡量,则会表现出比真实聚类效果更高的分数。

机器学习:聚类算法的模型评估指标:轮廓系数相关推荐

  1. ML之ME/LF:基于不同机器学习框架(sklearn/TF)下算法的模型评估指标(损失函数)代码实现及其函数(Scoring/metrics)代码实现(仅代码)

    ML之ME/LF:基于不同机器学习框架(sklearn/TF)下算法的模型评估指标(损失函数)代码实现及其函数(Scoring/metrics)代码实现(仅代码) 目录 单个评价指标各种框架下实现 1 ...

  2. spark聚类算法的聚类效果评估指标“轮廓系数”细节

    什么是轮廓系数? 参见百度百科,讲的很清楚此处不赘述: https://baike.baidu.com/item/%E8%BD%AE%E5%BB%93%E7%B3%BB%E6%95%B0/173616 ...

  3. 聚类--评估指标--轮廓系数

    让我们来分析一下这个评价指标: 轮廓系数分析 对于第iii个对象,计算它到所属簇中所有其他元素的平均距离,记作aia_iai​(体现凝聚度) 对于第 iii 个对象和不包含该对象的任意簇,计算该对象到 ...

  4. 机器学习 —— 聚类算法

    K均值算法(K-means)聚类 一.K-means算法原理 聚类的概念:一种无监督的学习,事先不知道类别,自动将相似的对象归到同一个簇中. K-Means算法是一种聚类分析(cluster anal ...

  5. 数据挖掘:模型评估指标

    数据挖掘:模型评估 一般在比赛中,我们会看到对于回归(分类)问题,不同的比赛会有不同的评价指标.我们在训练模型时,不能只记住回归问题用均方误差,而不去在意比赛目标的评价指标,这样我们往往会得到比较差的 ...

  6. 模型评估指标:P-R曲线和ROC曲线

    在机器学习建模中,模型评估指标用于评估不同模型的优劣. 在分类任务中,最简单的评估指标莫过于错误率和精度了,错误率表示的是错误分类的样本个数占总样本个数的比例,精度则是1减去错误率. 错误率和精度的优 ...

  7. 常用的模型评估指标(转)

    "没有测量,就没有科学."这是科学家门捷列夫的名言.在计算机科学中,特别是在机器学习的领域,对模型的测量和评估同样至关重要.只有选择与问题相匹配的评估方法,我们才能够快速的发现在模 ...

  8. 【深度学习】常用的模型评估指标

    [深度学习]常用的模型评估指标 "没有测量,就没有科学."这是科学家门捷列夫的名言.在计算机科学中,特别是在机器学习的领域,对模型的测量和评估同样至关重要.只有选择与问题相匹配的评 ...

  9. 机器学习--聚类算法(无监督学习)--K-Menas/BIRCH/CURE/DBSCAN/MDCA算法理论

    目录 一 聚类算法概述 1 聚类的概念 2 聚类算法的评价指标 1)轮廓系数(无需目标属性的评价指标) 二 基于划分的聚类算法(K-Means) 1 K-Means算法 1)算法流程 2)算法的优缺点 ...

最新文章

  1. mysql报错无效默认值1067_Mysql 报错:#1067 - Invalid default value for 'update_time
  2. 放弃鼠标,提高效率——像用Vim一样使用FF
  3. jq 点击导航添加背景_jq入门(2)css选择符
  4. org manual翻译--2.1 大纲
  5. 在比特币世界中矿工的作用是什么
  6. 【uva-673】 Parentheses Balance(括号匹配问题)
  7. 蓝桥杯第八届省赛JAVA真题----9数算式
  8. python绘制两个离散变量关系图——马赛克图
  9. “有本事你去学校数据库把期末成绩改了“,“好,你等着。“
  10. 换了路由器电脑都连不上网了_换了新路由器电脑连不上网
  11. 人生五大投资,你投对了几个?
  12. 计算机代数与密码学,代数曲线与密码学
  13. 程序员转项目管理之考证PMP
  14. 一起学爬虫(Python) — 05
  15. 绝对估值法和相对估值法
  16. 计算机与打印机脱机后怎么共享,电脑重启后共享打印机脱机的解决方法
  17. ACCESS数据库自动编号的重置
  18. 2、ehcache与springBoot整合
  19. 《海上钢琴师》斗琴部分的曲子
  20. Adobe Acrabat PDF更新后要收费了?三款在线PDF工具解决你的燃眉之急!

热门文章

  1. 第3讲:组件图(Component Diagram)
  2. Android-模块化-项目实践和探索分享
  3. windows下各PHP版本下载地址
  4. Microsoft Defender for Identity部署方案
  5. append方法实现字符串的拼接
  6. python鸭子类型_你知道什么是Python里的鸭子类型和猴子补丁吗?
  7. 亿 图 思维导图软件 E draw Mind Master Pro 8.0.102
  8. 计算机相关的创新设计方案,十款电脑支架设计欣赏,给你更聪明的十个产品设计创意方案...
  9. python文本统计单词_Python实现文本单词统计
  10. 智能全方位人力资源管理系统助力企业管理