聚类算法的性能度量

聚类算法的性能度量

聚类算法就是根据数据中样本与样本之间的距离或相似度,将样本划分为若干组/类/簇,其划分的原则:簇内样本相似、簇间样本不相似,聚类的结果是产生一个簇的集合。

其划分方式主要分为两种,

  • 嵌套类型

image-20231210183802857

  • 非嵌套类型

image-20231210183706349

其中簇往往分为三种情况

  1. 基于中心的簇:簇内的点和其“中心”较为相近(或相似),和其他簇的“中心”较远,这样的一组样本形成的簇
  2. 基于邻接的簇:相比其他任何簇的点,每个点都至少和所属簇的某一个点更近
  3. 基于密度的簇:簇是由高密度的区域形成的,簇之间是一些低密度的区域

簇的相似性与距离度量

若采用距离为度量

闵可夫斯基距离: d i s t ( x i , x j ) = ( ∑ d = 1 D ∣ x i , d − x j , d ∣ p ) 1 / p dist(x^i,x^j)=\left(\sum_{d=1}^D|x_{i,d}-x_{j,d}|^p\right)^{1/p} dist(xi,xj)=(d=1Dxi,dxj,dp)1/p
p = 2 p=2 p=2时,为欧氏距离 : d i s t ( x i , x j ) = ∑ d = 1 D ( x i , d − x j , d ) 2 :dist(x^i,x^j)=\sqrt{\sum_{d=1}^D\left(x_{i,d}-x_{j,d}\right)^2} :dist(xi,xj)=d=1D(xi,dxj,d)2
p = 1 p=1 p=1时,为曼哈顿距离: d i s t ( x i , x j ) = ∑ d = 1 D ∣ x i , d − x j , d ∣ dist(x^i,x^j)=\sum_{d=1}^D\left|x_{i,d}-x_{j,d}\right| dist(xi,xj)=d=1Dxi,dxj,d

这类距离函数对特征的旋转和平移变换不敏感,对数值尺度敏感

若采用余弦相似度量

两变量 x i , x j x^i,x^j xi,xj,看作D维空间的两个向量,这两个向量间的夹角余弦可用下式进行计算
s ( x i , x j ) = ∑ d = 1 D x i , d x j , d ∑ d = 1 D x i , d 2 ∑ d = 1 D x j , d 2 = ( x i ) T x j ∥ x i ∥ ∥ x j ∥ s(x^i,x^j)=\frac{\sum_{d=1}^Dx_{i,d}x_{j,d}}{\sqrt{\sum_{d=1}^Dx_{i,d}^2}\sqrt{\sum_{d=1}^Dx_{j,d}^2}}=\frac{(x^i)^Tx^j}{\|x^i\|\|x^j\|} s(xi,xj)=d=1Dxi,d2 d=1Dxj,d2 d=1Dxi,dxj,d=xi∥∥xj(xi)Txj
若采用相关系数
r ( x i , x j ) = c o v ( x i , x j ) σ x i σ x j = E [ ( x i − μ i ) ( x j − μ j ) ] σ x i σ x j = ∑ d = 1 D ( x i , d − μ i , d ) ( x j , d − μ j , d ) ∑ d = 1 D ( x i , d − μ i , d ) 2 ∑ d = 1 D ( x j , d − μ j , d ) 2 \begin{gathered} r(x^i,x^j)=\frac{cov(x^i,x^j)}{\sigma_{x_i}\sigma_{x_j}}=\frac{\mathbb{E}[(x^i-\mu^i)(x^j-\mu^j)]}{\sigma_{x_i}\sigma_{x_j}} \\ \begin{aligned}=\frac{\sum_{d=1}^D(x_{i,d}-\mu_{i,d})(x_{j,d}-\mu_{j,d})}{\sqrt{\sum_{d=1}^D\left(x_{i,d}-\mu_{i,d}\right)^2\sum_{d=1}^D\left(x_{j,d}-\mu_{j,d}\right)^2}}\end{aligned} \end{gathered} r(xi,xj)=σxiσxjcov(xi,xj)=σxiσxjE[(xiμi)(xjμj)]=d=1D(xi,dμi,d)2d=1D(xj,dμj,d)2 d=1D(xi,dμi,d)(xj,dμj,d)
当数据采用中心化处理后 μ i = μ j = 0 \mu_i=\mu_j=0 μi=μj=0,相关系数等于余弦相似度

对聚类算法的性能评价指标

参考模型

设存在数据集 D = { x 1 , x 2 , . . . x N } D=\{x^1,x^2,...x^N\} D={x1,x2,...xN},聚类结果 : C = { C 1 , C 2 , . . . C K } :C=\{\mathcal{C}_1,\mathcal{C}_2,...\mathcal{C}_K\} :C={C1,C2,...CK},其中 C k \mathcal{C}_k Ck表示属于类别 k k k的样本的集合,其中参考模型的分类结果为 C ∗ = { C 1 ∗ , . . . , C K ∗ } \mathcal{C}^*=\{\mathcal{C}_1^*,...,\mathcal{C}_K^*\} C={C1,...,CK}, λ \lambda λ λ ∗ \lambda^* λ 分别为 c c c c ∗ c^* c 的标记向量

其中聚类结果有4种情况
a = { ( x i , x j ) ∣ x i , x j ∈ C k ; x i , x j ∈ C l ∗ } 在两种聚类结果中,两个样本的所属的簇相同 d = { ( x i , x j ) ∣ x i ∈ C k 1 , x j ∈ C k 2 ; x i ∈ C l 1 ∗ , x j ∈ C l 2 ∗ } 在两种聚类结果中,两个样本的所属的簇不同 b = { ( x i , x j ) ∣ x i , x j ∈ C k ; x i ∈ C l 1 ∗ , x j ∈ C l 2 ∗ } c = { ( x i , x j ) ∣ x i ∈ C k 1 , x j ∈ C k 2 ; x i , x j ∈ C l ∗ } \begin{aligned} a=&\begin{Bmatrix}(x^i,x^j)|x^i,x^j\in\mathcal{C}_k;&x^i,x^j\in\mathcal{C}_l^*\end{Bmatrix}\\ &\text{在两种聚类结果中,两个样本的所属的簇相同}\\ d=&\{(x^i,x^j)|x^i\in\mathcal{C}_{k1},x^j\in\mathcal{C}_{k2};\:x^i\in\mathcal{C}_{l1}^*,x^j\in\mathcal{C}_{l2}^*\}\\ &\text{在两种聚类结果中,两个样本的所属的簇不同}\\ b=&\big\{(x^i,x^j)|x^i,x^j\in\mathcal{C}_k;\:x^i\in C_{l1}^*,x^j\in\mathcal{C}_{l2}^*\big\}\\ c=&\big\{(x^i,x^j)|x^i\in\mathcal{C}_{k1},x^j\in\mathcal{C}_{k2};\:x^i,x^j\in\mathcal{C}_l^*\big\} \end{aligned} a=d=b=c={(xi,xj)xi,xjCk;xi,xjCl}在两种聚类结果中,两个样本的所属的簇相同{(xi,xj)xiCk1,xjCk2;xiCl1,xjCl2}在两种聚类结果中,两个样本的所属的簇不同{(xi,xj)xi,xjCk;xiCl1,xjCl2}{(xi,xj)xiCk1,xjCk2;xi,xjCl}
每个样本对 ( x i , x j ) ( i < j ) (x_i,x_j)(i<j) (xi,xj)(i<j) 仅能出现在一个集合中,因此有 a + b + c + d = m ( m − 1 ) / 2 a+b+c+d=m(m-1)/2 a+b+c+d=m(m1)/2 成立

image-20231210195914914

Jaccard 系数(Jaccard Coefficient, 简称 JC)
JC = a a + b + c \text{JC}=\frac a{a+b+c} JC=a+b+ca
FM 指数(Fowlkes and Mallows Index, 简称 FMI)
F M I = a a + b ⋅ a a + c \mathrm{FMI}=\sqrt{\frac a{a+b}\cdot\frac a{a+c}} FMI=a+baa+ca
Rand 指数(Rand Index, 简称 RI$) $
R I = 2 ( a + d ) N ( N − 1 ) \mathrm{RI}=\frac{2(a+d)}{N(N-1)} RI=N(N1)2(a+d)
上述性能度量的结果值均在 [0,1] 区间,值越大越好

无参考模型

其要求簇内相似度越大越好,簇间相似度越小越好

平均距离:
a v g ( C k ) = 1 ∣ C k ∣ ( ∣ C k ∣ − 1 ) ∑ x i , x j ∈ C k d i s t ( x i , x j ) avg(\mathcal{C}_k)=\frac1{|\mathcal{C}_k|(|\mathcal{C}_k|-1)}\sum_{x^i,x^j\in\mathcal{C}_k}dist(x^i,x^j) avg(Ck)=Ck(Ck1)1xi,xjCkdist(xi,xj)
最大距离:
d i a m ( C k ) = max ⁡ x i , x j ∈ C k d i s t ( x i , x j ) diam\left(\mathcal{C}_k\right)=\max_{x^i,x^j\in\mathcal{C}_k}dist(\boldsymbol{x}^i,\boldsymbol{x}^j) diam(Ck)=xi,xjCkmaxdist(xi,xj)
簇的半径:
d i a m ( C k ) = 1 ∣ C k ∣ ∑ x i ∈ C k ( d i s t ( x i , μ k ) ) 2 diam(\mathcal{C}_k)=\sqrt{\frac1{|C_k|}\sum_{x^i\in\mathcal{C}_k}(dist(x^i,\mu^k))^2} diam(Ck)=Ck1xiCk(dist(xi,μk))2
其中 μ k = 1 ∣ C k ∣ ∑ x i ∈ C k x i \mu^{k}=\frac{1}{|\mathcal{C}_{k}|}\sum_{x^{i}\in\mathcal{C}_{k}}\boldsymbol{x}^{i} μk=Ck1xiCkxi

最小距离:
d m i n ( C k , C l ) = min ⁡ x i ∈ C k , x j ∈ C l d i s t ( x i , x j ) d_{min}(\mathcal{C}_k,\mathcal{C}_l)=\min_{x^i\in\mathcal{C}_k,x^j\in\mathcal{C}_l}dist(x^i,x^j) dmin(Ck,Cl)=xiCk,xjClmindist(xi,xj)
类中心的距离:
d c e n ( C k , C l ) = d i s t ( μ k , μ l ) , d_{cen}(\mathcal{C}_k,\mathcal{C}_l)=dist(\mathbf{\mu}^k,\mathbf{\mu}^l), dcen(Ck,Cl)=dist(μk,μl),
DB指数(DBI)【簇内距离/簇间距离】:
D B I = 1 K ∑ k = 1 K max ⁡ k ≠ l arg ⁡ ( C k ) + a v g ( C l ) d c e n ( C k , C l ) DBI=\frac1K\sum_{k=1}^K\max_{k\neq l}\frac{\arg(\mathcal{C}_k)+avg(\mathcal{C}_l)}{d_{cen}(\mathcal{C}_k,\mathcal{C}_l)} DBI=K1k=1Kk=lmaxdcen(Ck,Cl)arg(Ck)+avg(Cl)
其中DBI越小越好,即簇越小越远

Dunn 指数(DI)【最小簇间距离/最大簇的半径】:
D I = min ⁡ 1 ≤ k < l ≤ K d m i n ( C k , C l ) max ⁡ 1 ≤ k ≤ K d i a m ( C k ) DI=\min_{1\leq k<l\leq K}\frac{d_{min}(\mathcal{C}_k,\mathcal{C}_l)}{\max_{1\leq k\leq K}diam(\mathcal{C}_k)} DI=1k<lKminmax1kKdiam(Ck)dmin(Ck,Cl)
其中DI越大越好

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

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

相关文章

API接口并发测试:如何测试API接口的最大并发能力?

本文将深入探讨API接口并发测试&#xff0c;介绍并比较不同的API并发测试工具&#xff0c;并分享如何有效测量和提高API接口在最大并发情况下的性能。了解如何应对高并发压力是保证系统稳定性和用户满意度的关键&#xff0c;让我们一起来探索这个重要的话题。 随着互联网的迅速…

float,flex和grid布局

页面布局往往会影响着整体的结构与项目的样式&#xff0c;通常我们用的布局方式有三种&#xff1a;float,flex,grid 1.float或position布局 1.1概念 首先对于一个页面来说&#xff0c;有浮动流&#xff0c;文档流&#xff0c;文本流这几种模式&#xff0c;而float布局则是…

【EI会议征稿中】第六届下一代数据驱动网络国际学术会议(NGDN 2024)

第六届下一代数据驱动网络国际学术会议&#xff08;NGDN 2024&#xff09; The Sixth International Conference on Next Generation Data-driven Networks 基于前几届在英国埃克塞特 (ISPA 2020) 、中国沈阳 (TrustCom 2021) 和中国武汉 (IEEETrustCom-2022)成功举办的经验&a…

若依vue-新建目录及菜单

前面我们把标题和logo换成了自己系统的标题和logo了 接下来就是要建立自己需要的菜单和页面 新建目录解析 在拉下来的代码跑起来后 有一个系统菜单--菜单管理(如图) 在这个菜单的这个页面内有对应的操作功能 修改功能 这个功能可以修改写好了的菜单数据 例如:名称/排序/路由…

python:五种算法(DBO、WOA、GWO、PSO、GA)求解23个测试函数(python代码)

一、五种算法简介 1、蜣螂优化算法DBO 2、鲸鱼优化算法WOA 3、灰狼优化算法GWO 4、粒子群优化算法PSO 5、遗传算法GA 二、5种算法求解23个函数 &#xff08;1&#xff09;23个函数简介 参考文献&#xff1a; [1] Yao X, Liu Y, Lin G M. Evolutionary programming made…

【小白专用】php执行sql脚本 更新23.12.10

可以使用 PHP 的 mysqli 扩展来执行 SQL 脚本。具体步骤如下&#xff1a; 连接到数据库&#xff1b;打开 SQL 脚本文件并读取其中的 SQL 语句&#xff1b;逐条执行 SQL 语句&#xff1b;关闭 SQL 脚本文件&#xff1b;关闭数据库连接。 以下是通过 mysqli 执行 SQL 脚本的示例…

生产问题: 利用线程Thread预加载数据缓存,其它类全局变量获取缓存偶发加载不到

生产问题: 利用线程Thread预加载数据缓存偶发加载不到 先上代码 public class ThreadTest {//本地缓存Map<String, Object> map new HashMap<String, Object>();class ThreadA implements Runnable{Overridepublic void run() {System.out.println("Thread…

RT-Thread学习笔记(六):RT_Thread系统死机日志定位

RT_Thread系统死机日志定位 一、RT_Thread系统死机日志定位二、Cortex-M3 / M4架构知识2.1 Cortex-M3 / M4架构概述2.2 寄存器用途 三、排查步骤 一、RT_Thread系统死机日志定位 RT-Thread 系统发生hardfault死机时&#xff0c;系统默认会打印出一系列寄存器状态帮助用户定位死…

XML学习及应用

介绍XML语法及应用 1.XML基础知识1.1什么是XML语言1.2 XML 和 HTML 之间的差异1.3 XML 用途 2.XML语法2.1基础语法2.2XML元素2.3 XML属性2.4XML命名空间 3.XML验证3.1xml语法验证3.2自定义验证3.2.1 XML DTD3.2.2 XML Schema3.2.3PCDATA和CDATA区别3.2.4 参考 1.XML基础知识 1…

AWR1642 boost开发板支持的TI参考设计

打开radar_toolbox_1_30_00_05\source\ti\examples\examples_overview,通过输入“1642”查找AWR1642 BOOST支持的参考设计,通过筛选,支持AWR1642 BOOST的参考设计如下: 挑选出两个参考设计上手,一个是“nonos_oob_16xx",不带OS;另一个是”short range radar“,比较…

Sbatch, Salloc提交任务相关

salloc 申请计算节点&#xff0c;然后登录到申请到的计算节点上运行指令&#xff1b; salloc的参数与sbatch相同&#xff0c;该部分先介绍一个简单的使用案例&#xff1b;随后介绍一个GPU的使用案例&#xff1b;最后介绍一个跨节点使用案例&#xff1b; 首先是一个简单的例子&a…

Go开发运维:Go服务发布到K8S集群

目录 一、实验 1.Go服务发布到k8s集群 二、问题 1.如何从Harbor拉取镜像 一、实验 1.Go服务发布到k8s集群 &#xff08;1&#xff09;linux机器安装go(基于CentOS 7系统) yum install go -y &#xff08;2&#xff09;查看版本 go version &#xff08;3&#xff09;创…

【参天引擎】华为参天引擎内核架构专栏开始更新了,多主分布式数据库的特点,类oracle RAC国产数据开始出现了

cantian引擎的介绍 ​专栏内容&#xff1a; 参天引擎内核架构 本专栏一起来聊聊参天引擎内核架构&#xff0c;以及如何实现多机的数据库节点的多读多写&#xff0c;与传统主备&#xff0c;MPP的区别&#xff0c;技术难点的分析&#xff0c;数据元数据同步&#xff0c;多主节点的…

Python 中 4 个高效的技巧(建议收藏)

今天我想和大家分享 4 个省时的 Python 技巧&#xff0c;可以节省 10~20% 的 Python 执行时间。 反转列表 Python 中通常有两种反转列表的方法&#xff1a;切片或 reverse() 函数调用。这两种方法都可以反转列表&#xff0c;但需要注意的是内置函数 reverse() 会更改原始列表…

【数据结构】C语言结构体详解

目录 前言 一、结构体的定义 二、定义结构体变量 三、结构体变量的初始化 四、使用typedef声明新数据类型名 五、指向结构体变量的指针 总结 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1…

做题笔记:SQL Sever 方式做牛客SQL的题目--查询每天刷题通过数最多的前二名用户

----查询每天刷题通过数最多的前二名用户id和刷题数 现有牛客刷题表questions_pass_record&#xff0c;请查询每天刷题通过数最多的前二名用户id和刷题数&#xff0c;输出按照日期升序排序&#xff0c;查询返回结果名称和顺序为&#xff1a; date|user_id|pass_count 表单创建…

Spring JDBC和事务管理

Spring JDBC是Spring框架用来处理关系型数据库的模块&#xff0c;对JDBC的API进行了封装。 Spring JDBC的核心类为JdbcTemplate&#xff0c;提供数据CRUD方法 Spring JDBC使用步骤 Maven工程引入依赖spring-jdbc <dependency><groupId>org.springframework<…

对Spring源码的学习:Bean实例化流程

目录 SpringBean实例化流程 Spring的后处理器 Bean工厂后处理器 Bean后处理器 SpringBean实例化流程 Spring容器在进行初始化时&#xff0c;会将xml配置的<bean>的信息封装成一个BeanDefinition对象&#xff0c;所有的BeanDefinition存储到一个名为beanDefinitionMa…

Docker容器的可视化管理工具—DockerUI本地部署与远程访问

文章目录 前言1. 安装部署DockerUI2. 安装cpolar内网穿透3. 配置DockerUI公网访问地址4. 公网远程访问DockerUI5. 固定DockerUI公网地址 前言 DockerUI是一个docker容器镜像的可视化图形化管理工具。DockerUI可以用来轻松构建、管理和维护docker环境。它是完全开源且免费的。基…

2023 CCF中国软件大会(CCF ChinaSoft) “程序语义深度理解前沿进展”论坛成功召开...

2023年12月2日&#xff0c;2023年度CCF中国软件大会软件程序语义深度理解前沿进展论坛成功召开。 本次论坛由南京大学卜磊老师和国防科技大学陈振邦老师主持&#xff0c;计算机研究与发展期刊代表侯丽珊老师致辞&#xff0c;旨在反映程序语义理解及其应用相关研究前沿进展与实践…