参考论文:
CHAMELEON A hierarchical clustering algorithm using dynamic modeling
chamelon算法是一种层次聚类算法。

一、层次聚类

层次聚类算法的关键是如何判定两个子簇是最相似的。
度量两个子簇相似性的常见方法有:

单连接规则就是用两个子簇中最近的一对点之间的距离来刻画这两个簇的相似性。基于这种度量方法的聚类容易受异常点、噪音的影响。

二、closeness和inter-connectivity

1.closeness的介绍

关于下图(a),(b),( c ),(d),如果聚类算法只侧重于两个子簇之间的近邻节点的靠近程度,则将合并(a) 和(b)。事实上,(c)和(d)是属于同一个簇。因为(c)和(d)簇之间的距离与它们簇内个元素的距离几乎相近,所以(c)和(d)是同构的。


同样的,对于下图中的(a),(b),(c ),(d),如果算法只侧重于两个子簇之间的近邻节点的靠近程度,则将合并© 和(d)。

这里我们将两个簇之间的近邻节点的靠近程度称为“紧性”(closeness)。

2.inter-connectivity 的介绍

关于下图(a),(b),(c ),(d),如果聚类算法只侧重于两个子簇之间的邻接区域的大小,则会选择合并(c)和(d)。而实际上,(a)和(b)是同构的。


同样的,对于下图中的(a),(b),(c ),如果算法只侧重于两个子簇之间的邻接区域的大小,则将合并(a) 和(c)。

这里我们将两个簇之间的邻接区域的大小称为“互连接性”(inter-connectivity )。

为了能使算法对上面四幅图中的子簇进行正确的合并,算法必须在聚类的时候既考虑到closeness,又考虑到inter-connectivity 。而且每一对簇之间的closeness和inter-connectivity的度量需要结合这一对簇自身的结构特点,即由绝对指标The absolute closeness 和The absolute inter-connectivity转化为相对指标the Relative closeness和the Relative Inter-Connectivity。chameleon算法满足上述要求。

三、chameleon算法

chameleon算法是一个两阶段算法。

第一阶段:找到初始子簇

第一阶段是用k-近邻算法将数据集构建成一个图。将数据集中的每一个点和它k-近邻的点连接起来。每一条线段对应一个权重,这个权重是由这条线段所连接的两个点的距离的倒数来表示。边的权重代表相似度。两点距离越大,连接两点的边的权重越小,两点的相似度越低。

采用图分割技术对由k-近邻构建的图进行分割。分割的标准是连接不同区域的边的权重最小化。边的权重越小, 两点之间的距离越大,两点的相似度越低。所以连接不同区域的边的权重最小意味着不同区域的点相似度越低。

图分割工具为metis。python可安装metis库。具体分割流程为:依据连接不同区域的边的权重和最小的原理,将原k-近邻图分成两部分,要求这两部分各自至少含原图的25%的点,这是因为如果子区域点点太少,无法计算the Relative closeness和the Relative Inter-Connectivity。对较大部分区域再进行划分,直到所得到的较大部分区域所包含的点的个数少于预先给定的值(MinSize)。MinSize值要适中,通常将MinSize的值设置在整体数据集的1%~5%之间。

第二阶段:动态合并子簇

首先给出the Relative closeness和the Relative Inter-Connectivity的定义。

1.the Relative Inter-Connectivity的公式


其中EC{Ci,Cj}EC_{\{C_i,C_j\}}EC{Ci​,Cj​}​是指CiC_iCi​和CjC_jCj​相连接的边的权重的和。
ECCiEC_{C_i}ECCi​​是指属于CiC_iCi​内的边的权重的和。

2.the Relative closeness的公式


其中S‾EC{Ci,Cj}\overline{S}_{EC_{\{C_i,C_j\}}}SEC{Ci​,Cj​}​​是指CiC_iCi​和CjC_jCj​相连接的边的平均权重。
S‾ECCi\overline{S}_{EC_{C_i}}SECCi​​​是指属于CiC_iCi​内的边的平均权重。

3.构造函数

因为要求the Relative closeness和the Relative Inter-Connectivity都很大时,才合并相应的两个子簇。为了避免遍历所有子簇的the Relative closeness和the Relative Inter-Connectivity,构造一个关于
the Relative closeness和the Relative Inter-Connectivity的函数,通过函数值来判断是否合并两个簇。


合并使上述式子最大化的两个子簇。

变色龙算法chameleon聚类相关推荐

  1. 聚类算法实践——谱聚类、Chameleon聚类

    转载自:http://www.itongji.cn/article/0R52D42013.html 上一篇文章里说到的层次聚类和K-means聚类,可以说是聚类算法里面最基本的两种方法(wiki的cl ...

  2. 聚类算法实践(2)——谱聚类、Chameleon聚类

    聚类算法实践(2)--谱聚类.Chameleon聚类 男人海洋 发表于 2013-08-30 14:34 来源:数据之城 上一篇文章里说到的层次聚类和K-means聚类,可以说是聚类算法里面最基本的两 ...

  3. 谱聚类、Chameleon聚类、PCCA、SOM、Affinity Propagation

    原文链接:中国统计网-谱聚类.Chameleon聚类 A是n × n矩阵,λi是其特征值,i = 1,2,--,n.称ρ(A)=max{|λi|,i=1,2,--n}为A的谱半径.即矩阵A的谱半径等于 ...

  4. 基于变色龙算法的线性规划问题求解matlab程序

    基于变色龙算法的线性规划问题求解matlab程序 1 变色龙算法 变色龙是爬行动物,是非常奇特的动物,它有适于树栖生活的种种特征和行为.避役的体长约15-25厘米,身体侧扁,背部有脊椎,头上的枕部有钝 ...

  5. 智能优化算法:变色龙算法 -附代码

    智能优化算法:变色龙算法 文章目录 智能优化算法:变色龙算法 1.算法原理 1.1初始化 1.2 搜索猎物 1.3 变色龙眼睛旋转 1.4 捕获猎物 2.实验结果 3.参考文献 4.Matlab 4. ...

  6. 【数据挖掘】基于密度的聚类方法 - DBSCAN 方法 ( DBSCAN 原理 | DBSCAN 流程 | 可变密度问题 | 链条现象 | OPTICS 算法引入 | 聚类层次 | 族序概念 )

    文章目录 I . DBSCAN 简介 II . DBSCAN 算法流程 III . DBSCAN 算法 优缺点 IV . 可变密度问题 V . 链条现象 VI . OPTICS 算法原理 VII . ...

  7. Interview:算法岗位面试—10.29下午上海某电子(偏传统ML算法,外企)数据结构算法+晚上国内某保险公司(偏AI算法,世界500强)技术面试之分类算法、回归算法、聚类算法等细节考察

    ML岗位面试:10.29下午上海某电子(偏传统ML算法,外企)数据结构算法+晚上国内某保险公司(偏AI算法,世界500强)技术面试之分类算法.回归算法.聚类算法等细节考察 Interview:算法岗位 ...

  8. 【Java应用】使用Java实现机器学习算法:聚类、分类、预测

    一.引言 1.机器学习算法概述 机器学习是一种人工智能技术,旨在通过使用数据和统计分析来让计算机系统自动改进性能.机器学习算法可分为三大类:聚类.分类和预测.聚类算法用于将数据集分成不同的群组:分类算 ...

  9. 机器学习算法-KMeans聚类算法解析及伪代码实现。

    机器学习算法-KMeans聚类算法解析及伪代码实现. 徐小狗在文末附上了几条大神们关于KMeans聚类算法的博文,欲详细研究请前往浏览~ 作为初学者,许多地方可能笨拙或有误,希望有大神看到后给予优化和 ...

最新文章

  1. python怎样判断字符串可以反序列化_从字符串值issu反序列化的Python AWS Lambda Stringargument构造函数/工厂方法...
  2. LOJ #516. 「LibreOJ β Round #2」DP 一般看规律
  3. Spirng使用Aspectj实现AOP
  4. 如何真正提高ASP.NET网站的性能
  5. Binary Search二分法搜索C++程序
  6. .NET Core 3.0稳定版发布
  7. 实时数据产品实践——美团大交通战场沙盘
  8. 神经进化是深度学习的未来
  9. 转载 电子商务关键数字优化(线上部分,中)
  10. 在Mac上如何设置自动解压下载的压缩文件?
  11. Linux操作系统选择(免费)
  12. C# 多张图片生成PDF
  13. Aviation turbofan starting model
  14. 全球地形起伏模型ETOPO1
  15. c++某商店开展买一送一活动,购买两件商品时,只需支付价格较高的商品的金额。要求程序在输入两个商品的价格后,输出所应支付的金额,请根据裁判程序编写函数cut,将代码补充完整。
  16. 电商网站商品模型之商品详情页设计方案 - 梦亦晓 - 博客园
  17. 【BZOJ4355】Play with sequence 线段树
  18. Linux系统中DNS域名服务器
  19. 信息系统项目管理师Part1-信息化与信息系统
  20. 指代消解《End-to-end Neural Coreference Resolution》

热门文章

  1. CodeCraft-21 and Codeforces Round #711 (Div. 2) B. Box Fitting(优先队列)
  2. 3.6 MIPS指令简介
  3. TASM报错argument needs type override的解决办法
  4. python之pandas df.dropna()
  5. 多项式使用最小二乘法拟合数据
  6. SpringCloud简介与微服务架构
  7. 企业架构成功之道读书笔记
  8. 全国绿色电力交易试点首日:均价提高2.7分/千瓦时,风光发电迎重大利好
  9. ProBuilder快速关卡建模实践
  10. C语言关键字你知道几个?