聚类模型的算法性能评价

news2024/12/22 17:41:09

一、概述

  作为机器学习领域的重要内容之一,聚类模型在许多方面能够发挥举足轻重的作用。所谓聚类,就是通过一定的技术方法将一堆数据样本依照其特性划分为不同的簇类,使得同一个簇内的样本有着更相近的属性。依不同的实现策略,聚类算法有很多种,如基于距离的k-means、基于密度的DBSCAN等。在聚类完成之后,其性能的评估是一个不可规避的问题,常见的评估方法依有无事先的标记性信息分为外部评估法和内部评估法。

二、评价指标

1.外部评估法

  一种常用的评估方式是外部评估,利用测试样本事先已有的标记信息来衡量模型的性能。常见的外部评估指标有纯度(Purity)、兰德指数(Rand Index, RI)、调整兰德指数(Adjusted Rand Index, ARI)、F值(F-score)、杰卡德系数(Jaccard, JC)、标准化互信息(NMI)等。

(1)纯度

  纯度是一种较直接的性能表征方式,计算的是正确聚类的样本数与总样本数的比值。在聚类完成之后,对每个簇内的样本,假设知晓其事先的标记性属性信息,每个簇中类别数量最多的样本即作为该簇的属性类别,给类别下的样本即纯性样本,各个簇的纯性样本数之和对总样本数的占比即纯度(Purity)。表达式为
P u r i t y = 1 N ∑ k m a x j ∣ w k ∩ c j ∣ Purity=\frac{1}{N}\sum_{k}{max_j\left| w_k\cap c_j \right|} Purity=N1kmaxjwkcj
  其中,N为总的样本数, Ω = { w 1 , w 2 , . . . , w K } \Omega=\left\{ w_1,w_2,...,w_K \right\} Ω={w1,w2,...,wK}表示聚类簇的划分, C = { c 1 , c 2 , . . . , c J } C=\left\{ c_1,c_2,...,c_J \right\} C={c1,c2,...,cJ} 表示样本真实类别的划分。纯度的取值范围是[0,1],值越大,性能越好。
【示例】
  现对一堆样本进行聚类操作,划分了三个簇,如下所示
在这里插入图片描述
  在Cluster A中,三角形最多,因此该簇归属为三角形的簇,有效样本数为5;
  在Cluster B中,圆形最多,因此该簇归属为圆形的簇,有效样本数为4;
  在Cluster C中,正方形最多,因此该簇归属为正方形的簇,有效样本数为4。

  纯度为有效样本数对总样本的占比
P u r i t y = 5 + 4 + 4 8 + 6 + 6 = 13 20 = 0.65 Purity=\frac{5+4+4}{8+6+6}=\frac{13}{20}=0.65 Purity=8+6+65+4+4=2013=0.65

(2)兰德指数

  对于已有了预先标记信息的情形,可以以与分类模型中相类似的方式进行衡定,明确下列几个概念
   TP(True Positive):同类样本点被划分在同一个簇中的可能情形数;
   FP(False Positive):非同类样本点被划分在同一个簇中的可能情形数;
   TN(True Negative):非同类样本点分布在不同簇中的可能情形数;
   FN(False Negative):同类样本点分布在不同簇中的可能情形数。
在这里插入图片描述
  兰德指数就是指准确率,聚类后样本分布的整体准确率,定义为
R I = T P + T N T P + F P + T N + F N RI=\frac{TP+TN}{TP+FP+TN+FN} RI=TP+FP+TN+FNTP+TN

(3)调整兰德指数

  对于随机结果,兰德指数并不能保证值接近于零,这与直观上的意义不甚符合,为能够改善这种情况,调整的兰德指数(ARI)被提出。它的表达式为
A R I = R I − E ( R I ) m a x ( R I ) − E ( R I ) ARI=\frac{RI-E(RI)}{max(RI)-E(RI)} ARI=max(RI)E(RI)RIE(RI)
  ARI取值范围为[-1,1],值越接近于1,性能越好;接近于0,相当于随机聚类;接近于-1,性能不如随机聚类。

(4)F值

  这里同样首先借鉴了分类模型中精准度和召回率的概念,然后以F度量进行综合衡定。精准度(Precision)和召回率(Recall)定义为
P r e c i s i o n = T P T P + F P Precision=\frac{TP}{TP+FP} Precision=TP+FPTP

R e c a l l = T P T P + F N Recall=\frac{TP}{TP+FN} Recall=TP+FNTP

  F度量综合衡量精确度(查准率)和召回率(查全率), F β F_\beta Fβ是F1的一般形式,能让我们表达出对查准率/查全率的不同偏好,如F1分数认为召回率和精确度同等重要,F2分数认为召回率的重要程度是精确度的两倍,而F0.5分数认为召回率的重要程度是精确度的一半。

F 1 = 2 ∗ p r e c i s i o n ∗ r e c a l l p r e c i s i o n + r e c a l l F_1=\frac{2\ast precision \ast recall}{precision+recall} F1=precision+recall2precisionrecall

F β = ( 1 + β 2 ) ∗ p r e c i s i o n ∗ r e c a l l β 2 ∗ p r e c i s i o n + r e c a l l F_\beta=\frac{(1+\beta^{2})\ast precision \ast recall}{\beta^2\ast precision + recall} Fβ=β2precision+recall(1+β2)precisionrecall

  F度量的取值范围为[0,1],值越大性能越好。

(5)杰卡德系数

  杰卡德系数(Jaccard, JC)定义为聚类结果正确的样本数与聚簇结果或实际结果一致的比例,取值范围为0到1。表达式为
J C = T P T P + F P + F N JC=\frac{TP}{TP+FP+FN} JC=TP+FP+FNTP

  杰卡德系数值越大,性能越好。

(6)标准化互信息

  这里首先介绍一下互信息(Mutual Information)的概念,它反映了两个事件相互影响所产生的信息量。设两个随机变量(X,Y)的联合分布为p(x,y),边缘分布分别为p(x),p(y),互信息I(X; Y)是联合分布p(x,y)与边缘分布p(x)p(y)的相对熵,即
I ( X ; Y ) = ∑ x ∈ X ∑ y ∈ Y p ( x , y ) l o g p ( x , y ) p ( x ) p ( y ) I\left( X;Y \right)=\sum_{x\in X}{\sum_{y\in Y}{p\left( x,y \right)log\frac{p(x,y)}{p(x)p(y)}}} I(X;Y)=xXyYp(x,y)logp(x)p(y)p(x,y)
  标准化互信息(Normalized Mutual Information, NMI)计算表达式为

N M I = I ( X , Y ) F ( H ( x ) , H ( y ) ) NMI=\frac{I\left( X,Y \right)}{F\left( H(x),H(y) \right)} NMI=F(H(x),H(y))I(X,Y)

  其中F(x,y)可以为min/max函数、几何平均或算术平均,几何平均即 F ( x 1 , x 2 ) = x 1 ⋅ x 2 F\left( x_1,x_2 \right)=\sqrt{x_1\cdot x_2} F(x1,x2)=x1x2 ,算术平均即 F ( x 1 , x 2 ) = x 1 + x 2 2 F\left( x_1,x_2 \right)=\frac{x_1+x_2}{2} F(x1,x2)=2x1+x2,采用算术平均是比较常见的一种计算方式,此时NMI表达式可化为
N M I = 2 ⋅ I ( X , Y ) H ( X ) + H ( Y ) NMI=\frac{2\cdot I\left( X,Y \right)}{H\left( X \right)+H\left( Y \right)} NMI=H(X)+H(Y)2I(X,Y)
  其中,I(X,Y)为互信息, H ( X ) = − ∑ i p ( x i ) l o g p ( x i ) H\left( X \right)=-\sum_{i}{p(x_i)logp(x_i)} H(X)=ip(xi)logp(xi) H ( Y ) = − ∑ j p ( y j ) l o g p ( y j ) H\left( Y \right)=-\sum_{j}{p(y_j)logp(y_j)} H(Y)=jp(yj)logp(yj)为信息熵。

2.内部评估法

  另一种常用的评估方式是内部评估,利用测试样本本身的信息衡量模型性能。常见的内部评估指标有紧密度(Compactness, CP)、间隔度(Separation, SP)、轮廓系数(Silhouette Coefficient, SC)、戴维森堡丁指数(Davies-Bouldin Index, DBI)、邓恩指数(Dunn Validity Index, DVI)等。

(1)紧密度

  紧密度(Compactness, CP)是指簇内各点到聚类中心的平均距离,值越小说明簇内紧密度越高
C P = 1 n ∑ i = 1 n ∣ x i − μ ∣ CP=\frac{1}{n}\sum_{i=1}^{n}{\left| x_i-\mu \right|} CP=n1i=1nxiμ

(2)间隔度

  间隔度(Separation, SP)指各个聚类中心之间的平均距离,值越高表明类间距离越大
S P = 1 k 2 ∑ i = 1 k ∑ j = 1 k ∣ ∣ μ i − μ j ∣ ∣ 2 SP=\frac{1}{k^2}\sum_{i=1}^{k}{\sum_{j=1}^{k}{\left| \left| \mu_i-\mu_j \right| \right|_2}} SP=k21i=1kj=1kμiμj2

(3)轮廓系数

  对单个样本,设a是其与同簇中其他样本的平均距离,b是与它距离最近的不同簇类中样本的平均距离,轮廓系数为
s = b − a m a x ( a , b ) s=\frac{b-a}{max\left( a,b \right)} s=max(a,b)ba

  样本集合的轮廓系数是各样本轮廓系数的平均值
S C = 1 n ∑ i = 1 n s i SC=\frac{1}{n}\sum_{i=1}^{n}{s_i} SC=n1i=1nsi

  轮廓系数的取值范围是[-1,1],取值越接近1聚类性能越好,反之越差。

(4)戴维森堡丁指数

  对于两个簇的样本而言,各自簇内平均距离之和除以两簇中心的距离,称为簇间相似度,簇间相似度越小说明簇内距离越小、簇间距离越大,效果越好。对所有的簇,分别找到与之聚类效果最差那个簇的簇间相似度,然后求平均值,即为戴维森堡丁指数(DBI)的定义。表达式为
D B I = 1 N ∑ i = 1 N max ⁡ j ≠ i [ σ i + σ j d ( c i , c j ) ] DBI=\frac{1}{N}\sum_{i=1}^{N}{\max_{j\ne i}{\left[ \frac{\sigma_i+\sigma_j}{d\left( c_i,c_j \right)} \right]}} DBI=N1i=1Nj=imax[d(ci,cj)σi+σj]

  其中, σ i = 1 n i ∑ k = 1 n i x k − μ i \sigma_i=\frac{1}{n_i}\sum_{k=1}^{n_i}{x_k-\mu_i} σi=ni1k=1nixkμi σ j = 1 n j ∑ k = 1 n j x k − μ j \sigma_j=\frac{1}{n_j}\sum_{k=1}^{n_j}{x_k-\mu_j} σj=nj1k=1njxkμj d ( c i , c j ) = ∣ ∣ μ i − μ j ∣ ∣ 2 d\left( c_i,c_j \right)=\left| \left| \mu_i-\mu_j \right| \right|_2 d(ci,cj)=μiμj2
易知,DBI值越小,表明聚类效果越好,反之越差。

(5)邓恩指数

  邓恩指数定义为两簇之间最小的那个簇间距离与各簇中最大的那个簇内距离的比值。表达式为

D V I = m i n 1 ≤ i ≠ j ≤ N d ( μ i , μ j ) m a x 1 ≤ k ≤ N d i n t r a ( k ) DVI=\frac{min_{1\leq i\ne j\leq N}d\left( \mu_i,\mu_j \right)}{max_{1\leq k \leq N} d_{intra}(k)} DVI=max1kNdintra(k)min1i=jNd(μi,μj)

  其中,簇间距离指两个簇的质心之间的距离,对于维度为D的样本集有

d ( μ i , μ j ) = ∑ d = 1 D ( μ i ( d ) − μ j ( d ) ) 2 d\left( \mu_i,\mu_j \right)=\sqrt{\sum_{d=1}^{D}{\left( \mu_{i}^{(d)}-\mu_{j}^{(d)} \right)^2}} d(μi,μj)=d=1D(μi(d)μj(d))2

  簇内距离是簇内各样本到质心的平均距离,对于一个簇S,若质心为c,则它的簇内距离表达式为

d i n t r a = 1 ∣ S ∣ ∑ s = 1 ∣ S ∣ d ( x s , c ) d_{intra}=\frac{1}{|S|}\sum_{s=1}^{|S|}{d\left( x_s,c \right)} dintra=S1s=1Sd(xs,c)

  因簇间距离越大、簇内距离越小时聚类效果越好,所以邓恩指数越大,性能越好。


End.


pdf下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1870650.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

章十九、JavaVUE —— 框架、指令、声明周期、Vue-cli、组件路由、Element

目录 一、 框架 ● vue.js 框架 ● 特点 ● Vue 安装 二、 第一个vue程序 ● 创建项目 ​编辑 ● 导入 vue.js ● 创建vue对象,设置属性,使用模版渲染到页面 介绍 — Vue.js (vuejs.org) 三、 vue指令 ● v-text ● v-html ● v-…

pytest测试框架pytest-order插件自定义用例执行顺序

pytest提供了丰富的插件来扩展其功能,本章介绍插件pytest-order,用于自定义pytest测试用例的执行顺序。pytest-order是插件pytest-ordering的一个分支,但是pytest-ordering已经不再维护了,建议大家直接使用pytest-order。 官方文…

MySQL周内训参照4、触发器-插入-修改-删除

触发器 1、用户购买商品时,要求库存表中的库存数量自动修改 详细示例 delimiter $$ create trigger stock_change after -- 事件触发在 下订单之后 insert -- 监视插入事件 on stock -- 监视 order订单表 for each row begin update stock set stockstock-new.st…

【LeetCode】七、树、堆、图

文章目录 1、树结构2、二叉树3、二叉树的遍历4、堆结构(Heap)5、堆化6、图 1、树结构 节点、根节点、叶子节点: 高度、深度、层三者的示意图: 2、二叉树 相比其他树,二叉树即每个节点最多两个孩子(两个分…

Java集合实例

一、什么是Java集合实例: 指的是在 Java 程序中创建和使用的集合对象,这些对象用于存储和操作数据。Java 集合框架提供了一系列的接口和实现类,用于管理不同类型的数据集合。 二、Java集合的主要实例类型: 1. List(列…

音视频入门基础:H.264专题(8)——H.264官方文档的描述符

音视频入门基础:H.264专题系列文章: 音视频入门基础:H.264专题(1)——H.264官方文档下载 音视频入门基础:H.264专题(2)——使用FFmpeg命令生成H.264裸流文件 音视频入门基础&…

平方根的三种求法(袖珍计算器算法,二分查找,牛顿迭代)

一、袖珍计算器 袖珍计算器方法主要运用到了我们高数上所学的关于e底数转化的思想&#xff0c;即 一种用指数函数 exp⁡ 和对数函数 ln⁡ 代替平方根函数的方法 : 1、exp函数&#xff1a; exp是 C 标准库 <math.h> 中的一个函数&#xff0c;用于计算 e 的 x 次幂&…

【Spring】SpringCloudAlibaba学习笔记

Nacos Nacos是一个更易于构建云原生应用的动态服务发现/服务配置和服务管理平台核心功能: 服务注册: Nacos Client会通过发送REST请求向Nacos Server注册自己的服务, 提供自己的元数据, 如ip地址/端口等信息; Nacos Server收到注册请求后, 就会把这些信息存储在Map中服务心跳:…

远程工具的使用

远程连接工具的作用&#xff0c;通过远程连接到服务器上&#xff0c;方便操作&#xff01; 1.常见的远程连接工具 XShell&#xff1a;这是一款Windows平台下的SSH客户端软件&#xff0c;支持SSH1、SSH2、SFTP、TELNET、RLOGIN等多种协议&#xff0c;功能丰富&#xff0c;包…

计算机二级Access操作题总结——综合应用

属性表相关 例1&#xff1a; 不允许输入和修改其中的数据→【是否锁定】 例2&#xff1a; 单击“退出”按钮(名为“bt2”)&#xff0c;调用设计好的宏“mEmp”来关闭窗体。 分组和汇总 对“rSell”报表进行适当设置&#xff0c;使每名雇员的姓名显示在该雇员所售书籍信…

Python学习笔记24:进阶篇(十三)常见标准库使用之数据压缩功能模块zlib,gzip,bz2,lzma的学习使用

前言 本文是根据python官方教程中标准库模块的介绍&#xff0c;自己查询资料并整理&#xff0c;编写代码示例做出的学习笔记。 根据模块知识&#xff0c;一次讲解单个或者多个模块的内容。 教程链接&#xff1a;https://docs.python.org/zh-cn/3/tutorial/index.html 数据压缩…

C语言的内存知识

这节我们主要认识一下内存&#xff0c;便于理解指针操作和后续内存管理。 一、内存分区模型 C程序在执行时&#xff0c;将内存大方向划分为4个区域 &#xff08;可以结合函数小节的函数栈帧部分看一下&#xff09; ⚪ 代码区:存放函数体的二进制代码&#xff0c;由操作系统进…

wgcloud怎么保证数据的安全性

WGCLOUD做了以下方面来保证数据安全 1、私有化部署 WGCLOUD是完全本地部署&#xff0c;没有云端服务&#xff0c;因此不用担心数据被他人获取 2、加密传输数据 WGCLOUD支持https传输数据&#xff0c;查看配置说明&#xff0c;实现使用SSL证书https访问server页面 - WGCLOUD…

第一后裔/The First Descendant延迟高的解决方法

第一后裔/The First Descendant是一款备受玩家关注的射击游戏&#xff0c;该作拥有多个角色&#xff0c;并为其设定不同的概念和战斗风格&#xff0c;以及技能点&#xff0c;不仅能让玩家畅快作战&#xff0c;还能通过各种道具&#xff0c;不断强化角色能力值&#xff0c;让其战…

Python 基础:使用 unittest 模块进行代码测试

目录 一、测试函数2.1 通过案例2.2 不通过案例2.3 添加新测试 二、测试类2.1 单个测试案例2.2 多个测试案例 三、总结 遇到看不明白的地方&#xff0c;欢迎在评论中留言呐&#xff0c;一起讨论&#xff0c;一起进步&#xff01; 本文参考&#xff1a;《Python编程&#xff1a;…

Jenkins教程-9-发送企业微信测试报告通知

上一小节我们学习了Jenkins上下游关联自动化测试任务的构建的方法&#xff0c;本小节我们讲解一下发送企业微信测试报告通知的方法。 1、自动化用例执行完后&#xff0c;使用pytest_terminal_summary钩子函数收集测试结果&#xff0c;存入本地status.txt文件中&#xff0c;供J…

Arathi Basin (AB) PVP15

Arathi Basin &#xff08;AB&#xff09; PVP15 阿拉希盆地&#xff0c;PVP&#xff0c;15人战场

【银河麒麟】高可用触发服务器异常重启,处理机制详解

1.服务器环境以及配置 【机型】物理机 处理器&#xff1a; Intel 内存&#xff1a; 126G 【内核版本】 4.19.90-25.16.v2101.ky10.x86_64 【银河麒麟操作系统镜像版本】 Kylin-Server-10-SP2-Release-Shenzhen-Metro-x86-Build01-20220619 Kylin-HA-10-SP2-Release-S…

前端vue3 根据某些Id 筛选数据

现在有一些不等的数据 我需要通过前端 吧这个数据筛选一下 比如我使用一些 我需要的ID 下的数据 比如以上的数据 的 cinemaLineId 来筛选 const cinemaLineId ref(["1246429254713147392", "1182608813770321920", "1182608917403185152"])…

大数据之Hadoop部署

文章目录 服务器规划服务器环境准备1. 网络测试2. 安装额外软件包3. 安装基础工具4. 关闭防火墙5. 创建用户并配置权限6. 创建目录并设置权限7. 卸载JDK8. 修改主机名9. 配置hosts文件10. 重启服务器 配置免密登录安装Java安装Hadoop1. Hadoop部署2. 配置Hadoop3. 格式化Hadoop…