聚类dbi指数_聚类算法
1 聚类任务
在无监督学习中,获取的数据集是没有label信息的,无监督学习的目的是对无label的数据集进行学习以揭示数据内部的性质及规律,为进一步的数据分析提供基础。
聚类是最常见的无监督学习任务。
聚类的目的是试图将数据集中的样本分成若干个不相交的子集,每一个子集称为一个簇,每个簇对应一个潜在的概念,如“浅色瓜”“无籽瓜”等。但是要注意的是,每个簇的概念是由使用者来定义的,聚类算法只是将具有形似性质的样本聚类成簇,而不同簇表示的含义对聚类算法而言是未知的。
形式化的定义聚类过程,就是对于无标记的数据集D={x1,x2,⋯,xm},xi∈Rn,经过聚类之后形成k个不相交的簇{Cl∣l=1,2,⋯,k},其中⋃i=1kCi=D,Cl⋂Cl′=∅(l̸=l′)。
聚类可以作为单独的应用,用于发掘数据的内在结构。也可以用作其他应用的前驱过程,例如在一些商业应用中,往往先对用户类型聚类成簇之后,再对新用户的类型进行判别。
2 聚类度量
聚类度量是表述聚类结果好坏的标准。
对聚类结果,总体而言,是希望属于同一簇的样本尽可能相似,属于不同簇的样本差距尽可能大,也就是希望达到“簇内相似度高”、“簇间相似度低”的效果。
聚类度量可以分为两类,一类是有外部参考结果的外部指标;另一类是无外部参考结果的内部指标。
2.1 外部指标
数据集D={x1,x2,⋯,xm},通过聚类给出簇划分C={C1,C2,⋯,Ck},外部参考模型给出的簇划分结果为C∗={C1∗,C2∗,⋯,Cs∗},令λ和λ∗分别表示C与C∗对应的簇标记向量。将样本两两配对,定义:
a=∣SS∣,SS={(xi,xj)∣λi=λj,λi∗=λj∗,i
a表示的是聚类算法判别为同一类且参考模型也判别为同一类的样本对数;b表示的是聚类算法判别为同一类但参考模型也判别为不同类的样本对数;c表示的是聚类算法判别为不同类但参考模型也判别为同一类的样本对数;d表示的是聚类算法判别为不同类且参考模型也判别为不同类的样本对数。由于每一个样本对只能出现在abcd某一个之中,因此有a+b+c+d=m(m-1)/2。
常见的聚类性能度量外部指标有:
Jaccard系数:
JC=a+b+ca
FM指数:
FMI=a+baa+ca
Rand指数:
RI=m(m−1)2(a+d)
上述三个指标取值范围都是[0,1],值越大越好。
2.2 内部指标
考虑聚类结果的簇划分C={C1,C2,⋯,Ck},定义
avg(C)=∣C∣(∣C∣−1)21≤i
dist()用于计算两个样本之间的距离;u表示聚类簇C的中心点位置。上述定义中,avg©表示某一聚类簇内部样本点距离的均值;diam©表示聚类簇C中样本间的最大距离;dmin(Ci,Cj)表示聚类簇Ci与Cj间的最小样本距离;dcen(Ci,Cj)对应于簇Ci与Cj中心点之间的距离。
常用的聚类性能度量内部指标有:
DB指数:
DBI=k1i=1∑kmaxj̸=i(dcen(ui,uj)avg(Ci)+avg(Cj))
Dumn指数:
DI=min1≤i≤k{minj̸=i(max1≤l≤kdiam(Cl)dmin(Ci,Cj))}
DBI的值越大越好,DI的值越小越好。
3 距离计算
对于函数dist(,),若其为一个“距离度量”,则需满足一些基本性质:
非负性:dist(xi,xj)≥0;
同一性:dist(xi,xj)=0当前仅当xi=xj;
对称性:dist(xi,xj)=dist(xj,xi);
直递性:dist(xi,xj)≤dist(xi,xk)+dist(xk,xj)(三角不等式)
给定样本xi=(xi1,xi2,⋯,xin)和xj=(xj1,xj2,⋯,xjn),最常用的是“闵可夫斯基距离”。
distmk(xi,xj)=(u=1∑n(xiu−xju)p)p1
当P=1时,称之为“曼哈顿距离”,也叫“街区距离”;当P=2时,即为“欧氏距离”。
属性可以分为“连续属性”和“无序属性”,例如{1,2,3}中不同的元素之间可以直接计算距离,称之为连续属性;而{飞机、轮船、汽车}无法直接计算距离,称之为“无序属性”。
闵可夫斯基距离同样可用于无序属性。
对无序属性可采用VDM(Value Difference Metric)。令mu,a表示在属性u上取值为a的样本数,mu,a,i表示在第i个样本簇中在属性u上取值为a的样本数,k为样本簇数,则属性u上两个离散值a与b之间的VDM距离为:
VDMp(a,b)=i=1∑k∣mu,amu,a,i−mu,bmu,b,i∣
将闵可夫斯基距离与VDM结合可用来处理混合属性,假定有nc个有序属性、n−nc个无序属性,不失一般性,假设有序属性排列在无序属性之前,则
MinkovDMp(xi,xj)=(u=1∑nc∣xiu−xju∣p+u=nc+1∑nVDMp(xiu,xju))p1
当样本空间中不同属性的重要性不同时,还可使用加权距离,以闵可夫斯基距离为例:
distwmk(xi,xj)=(w1∣xi1−xj1∣p+⋯+wn∣xin−xjn∣p)p1
wi≥0and∑i=1nwi=1.
一般情况下,我们基于距离度量来定义相似度,距离越大,相似度越小。
4 聚类算法
4.1 原型聚类
原型聚类假设聚类结构能够通过一组原型刻画,算法通常先对原型进行初始化,然后对原型进行迭代更新求解。
常见的原型聚类有k均值算法、学习向量量化和高斯混合聚类等。
4.1.1 k均值算法
给定样本集D={x1,x2,⋯,xm},k均值算法针对聚类所得簇划分C={C1,C2,⋯,Ck}最小化平方误差
E=i=1∑kx∈Ci∑∣∣x−ui∣∣2
ui=∣Ci∣1∑x∈Cix是簇Ci的均值向量。
直观来看,k均值算法在一定程度上刻画了簇内样本围绕簇均值向量的紧密程度,E值越小则簇内样本相似度越高。
最小化上式并不容易,需要考察样本集D所有可能的簇划分,是一个NP难的问题。k均值算法采用贪心策略,通过迭代优化来近似求解式子。
k均值算法的流程如下所示:
为了避免运行时间过长,通常会设置一个最大迭代次数或最小调整幅度阈值,若达到最大迭代次数或者调整幅度小于设定的阈值则停止迭代,完成聚类。
k均值算法无法自适应的决定应该划分的簇数,需要预先设定k值,一般是基于不同的k值多次运行聚类算法之后选取最佳结果;另外,初始聚类中心点的选择对聚类结果也存在一定的影响,可以通过多次运行k均值算法选取最好的聚类结果;k均值算法需要不断的进行样本与中心点的距离计算及不断的更新中心点位置,在数据集规模较大时,k均值算法的计算量较大。
4.1.2 学习向量量化
学习向量量化(Learning Vector Quantization,LVQ)也是试图找到一组原型向量来刻画聚类结构。但与一般聚类算法不同的是,LVQ假设数据样本带有类别标记,学习过程利用样本的
聚类dbi指数_聚类算法相关推荐
- 聚类dbi指数_聚类算法评价指标——Davies-Bouldin指数(Dbi)
最近在做一个时空序列聚类的小项目,度量聚类优劣的指标使用到了DBI指数,所以开始学习了一下DBI指数,以下是我的理解和基于python3的实现: 戴维森堡丁指数(DBI),又称为分类适确性指标,是由大 ...
- 聚类dbi指数_聚类-K-Means
1.什么是K-Means? K均值算法聚类 关键词:K个种子,均值 聚类的概念:一种无监督的学习,事先不知道类别,自动将相似的对象归到同一个簇中 K-Means算法是一种聚类分析(cluster an ...
- 聚类dbi指数_聚类中的性能度量
聚类 在无监督学习中,训练样本的标记是没有指定的,通过对无标记样本的训练来探索数据之间的规律.其中应用最广的便是聚类,聚类试图把一群未标记数据划分为一堆不相交的子集,每个子集叫做"簇&quo ...
- 聚类dbi指数_一种基于DBI-PD聚类算法的异常检测机制
一种基于 DBI-PD 聚类算法的异常检测机制 丁姝郁 [期刊名称] <电脑开发与应用> [年 ( 卷 ), 期] 2015(000)002 [摘要] 分析了网络数据维数和检测准确度之间的 ...
- 聚类dbi指数_人脸聚类常用评价指标
1.概述 好的聚类算法,一般要求类簇具有: 高的类内 (intra-cluster) 相似度 低的类间 (inter-cluster) 相似度 评价一个聚类算法的指标不像有监督的分类算法计算其精确率, ...
- mysql聚类函数排序_聚类算法大盘点 - 如鱼饮水,冷暖自知 - OSCHINA - 中文开源技术交流社区...
最近在关注聚类分析,了解了之后才发现,原来聚类分析里已经有这么丰富的成果,因此希望对其做个较全面的总结. 本文涉及到的聚类算法较多,请允许我慢慢更新. 1 层次聚类 (Agglomerative Cl ...
- c均值聚类matlab程序_聚类算法之kmeans算法
一.k-means算法介绍 k-means最早是由James MacQueen在1967年提出的,这一观点能够追溯到1957年Hugo Steinhaus所提出的想法.1957年,斯图亚特最先提出这一 ...
- 层次聚类python实现_聚类算法之层次聚类(Python实现)
起步 层次聚类( Hierarchical Clustering )是聚类算法的一种,通过计算不同类别的相似度类创建一个有层次的嵌套的树. 层次聚类算法介绍 假设有 n 个待聚类的样本,对于层次聚类算 ...
- 层次聚类 matlab代码_聚类算法解析一
01 概述 本次针对聚类算法进行讲解,因为内容较多,会分多篇文章进行讲解,主要的内容包括聚类算法的整体介绍,针对不同类别的聚类算法比如划分聚类.层次聚类.密度聚类等算法进行介绍,在讲解每类算法时会结合 ...
最新文章
- 020 Android之so文件动态调试
- 好物推荐:notion想同步什么东西,直接在这里写就可以,不用再发消息,真棒
- 手机芯片 AI 之争:高通、联发科均超华为!
- android:AIDL
- SLAM--单目尺度漂移(相似变换群Sim3)
- 在VirtualBox中安装WindowsXP
- 嵌入式linux应用开发完全手册(一)
- 模块已加载但找不到入口点dllregisterserver
- java sql in语句,sql语句In查询的好
- CENTOS 配置串口连接
- 1.4亿在线背后-QQ-IM后台架构的演化与启示
- linux 搜狗输入法变繁体字,搜狗输入法变成繁体字怎么办
- Golang Go语言 安装包 下载 官方包 与 Golang 中文网
- “甲骨文”的传奇故事
- ImportError: sys.meta_path is None, Python is likely shutting down 解决方案
- SQL语句中,为什么where子句不能使用列别名,而order by却可以?
- html 整体边距,html内容左右边距怎么设置
- 淘宝商品详情页API接口|tb获取商品主图接口
- 干洗加盟连锁业德国卡柏的SEO案例研讨(转)
- 使用nmcli添加静态/DHCP配置
热门文章
- MarkDown语句显示红色(重点、关键字)
- 优化函数和损失函数的区别与联系
- 先做接口测试还是功能测试
- HDU--1010--Tempter of the Bone
- 【PF4J】PF4J入门指南
- 《你受的苦,总有一天会照亮你未来的路》-汤木--读书笔记
- b,B,KB,MB,GB,TB,PB,EB,ZB,YB,BB,NB,DB的含义,之间的关系
- 电脑怎么下mcjava版_我的世界pc java下载
- ImportError: cannot import name ‘_maybe_get_pandas_wrapper_freq‘ from ‘statsmodels.tsa.filters._util
- VSCode设置代理