[论文]CA-Tree: A Hierarchical Structure for Efficient and Scalable Coassociation-Based Cluster Ensembles
作者:Tsaipei Wang, Member, IEEE
发表:IEEE TRANSACTIONS ON SYSTEMS, MAN, AND CYBERNETICS—PART B: CYBERNETICS, VOL. 41, NO. 3, JUNE 2011
这是一遍关于聚类集成的论文,作者提出了一种聚类集成方法,命名为:CA-Tree,,基于层次结构(dendogram),这个结构的大致与hierarchical cluster 相同,当然是比hc 效果好,同时该方法适合用于数据样本比较大的时候,在数据样本量大时也能保证整个process 时间上的高效,接近于O(N),且有准确率有保证。
论文中主要的思想是,用一个代表一群样本,然后对代表进行类标识,代表中的样本就属于该类了。
该方法的优点有:
- 只需要样本的聚类结果,不需要获取样本的属性,比基于原型的方法,节省了一定的步骤。
- 对比 基于原型的算法,不需要先验知识(分多少个类),而是一个临界值,同时实验证明这个临界值可以在不同数据集中使用。
- 时间复杂度 趋向于N (样本数量)。
- CA-Tree 内包括一个限制最终聚类数的方法。
下面是一下参数的论文中的描述,尽量用相同的符号,可以先跳过,直接看我写的:
下面是算法的描述:
对于有N个样本的数据集:X = {x1, x2, . . . ,xN}。
对其分别进行H 次的聚类,h-th次的聚类结果记为:Ph= {C1, C2, . . . , Ck},k是该h-th 聚类算法类的个数,可以知道每个是不同的,这里下标就不标了,这里的C 就是类标号了。
那么对于一个样本xi,给他一个 1xH 的 λi 向量,表示在h-th 聚类算法中他属于哪个类,eg: H=2, λi =<4,10>,表示第一聚类算法中其属于第4个类,第二聚类算法中其属于第10个。
样本之间的距离使用海明距离(Hamming),即两向量中不同的位标记位1,同的标记位0,之和,记为:d(λi ,λj )。
上面的基础介绍,竟然知道了两个样本之间的距离那么可以算一下相似度矩阵了,注意的是该相似度矩阵只是作者提出的计算方法,在算法中不需要用到:
相似度矩阵:
对于一个聚类算法结果,计算一个相似度矩阵,这个是原始的相似度矩阵,最终结果的相似度矩阵会有不同,对于同属于一类的标记为1,不同为0:
然后对于H 个相似度矩阵求个平均便是最终的相似度矩阵:
这个公式与下面等价:
构建CA-TREE:
回顾上面们说的,CA-TREE的思想是 用一个代表一群,这个一个怎么来下面说,来一个例子,下图是100个样本,真实分类如下:
在初始介绍的时候,我们知道了每个样本都有一个label vector λi,一个聚类算法中的类属,那么我们我们对上面这个初始数据k-means 下,k=3,4,5,6(上又),这就有4个聚类算法的结果了,这样100个样本的λ,可以知道这100个λ 里面有一些是完全相同的, 这样我们将完全相同的λ 对应的样本划分为一组,以论文的例子来这样一共划分了9组,表格如下,第一行数组号,第二行是该组的λ,第三行可以忽略。
在图上的反映如下:
通过简单的划分,便将100个样本划分成9个组,每组的用λ 作为标识,这样复杂度就降下来了,当然还有后面的。这里我们获得了9个组,接着就是构建树,我们有9个λ ,然后是构建树,论文中有算法流程,但是阅读起来很费经,我做一个理解转述:
看这个表中的label vactor,第一行,一共有3个不同的(1 2 3),那么节点便有3个子节点,每个子节点分配了符合的index,即1分支获得:1-4,2分支获得:5-6,3分子获得8-9;然后进入分支自己来,然后看第二行,1-4中的第二行的不同有2 3 ,所以该点分成两个分支,其他分支一样,直到4行聚类结果都用上了,生成一个5层的树,最底层的叶子只有一个index,如下右边:
这个树还需要"变形"一下,不过可以先描述一下的,树中的节点包括其分支中的所有叶子的index,例如第一行的根节点包括1-9 index,第二行的左边节点包括1-4 index,我们用z 来表示一个节点,这个有可能是分支节点,也有可能是叶子,那么X(z) 表示z有的样本,而G(z) 表示z有的全部label vector,G(z)需要搞明白,z 为叶子时候,那么G(z) 就是该index 的label vector,如果z 为根节点,那么G(z) 则为 1-9 index 的label vector。
搞清楚了G(z)的含义后,我们定义节点的 size,这个size 计算如下,首先我们定义一个label vector (λ) 与G(z) (一组λ) 的距离:
知道了一个label vector 与一组label vector 的距离计算,我们每个节点z 都有一组label vector G(z),那么每个节点需要选出一个label vector 作为其代表,方法就是遍历一下,选取是的上面这个最小的那个:
节点z 有了代表的label vector,那么节点的size 就选用,其实就是最小的那个距离:
既然有了节点的size,那么这个树可以改成如下,使用节点的size 作为层的选择,其实就是上面那颗树的中右分支拉下来了:
然而,上面的构建方法是全遍历,时间复杂度随着节点高度上升,时间变长(节点的label vector 多了,遍历时间长了),而且可能出现多个多个满足的代表λ,例如 index 7,8,选7的label vector 作为代表那么 与 index 9 的结合的size 为2,选择8作代表那么size 为1 ,所以需要改进。
改进方法:
上面的方法主要原因是上层节点确认代表的label vector 时候遍历时间长,可以发现其实不需要全遍历,从这方面入手,减少需要遍历的label vector,我们记Z'(z)为z 节点的孩子及孙子节点,当然不是全部的子孙节点都包括,不然就不能提速了,这个怎么选,后面会描述,同时注意到d(,)公式使用的是海明距离,那么其是有上界 H的,那么上面的公式一个 label vector 与节点的距离可以修改为:
{} 中左边其实就是距离的上界,右边的是从Z'(z) 中选择节点的代表计算其距离加上该节点的size,可以知道只要限制了Z'(z) 的个数,那么这个计算时间上便有上界,此时z 节点的代表选择方法如下,其中G'(z)为Z'(z)的中全部节点的代表label vector:
,
此时的z 节点的size 便如下:
可以看出只要限制了 Z'(z)的个数,便能够提高效率,下 Z'(z) 的确定方法:将z 节点的全部孩子节点(不包括孙子)放入篮中,然后对篮子中的最大的节点取出,放入其的孩子节点,循环这个步骤直到篮中的全部节点都为叶子,或者篮中的节点数超出阀值。
例子说明:假如我们求 z为1 的时候,我们设阀值=2,那么Z'(z) 包括的节点有 2,3,符合要求了。假如我们设阀值为3,那么初始时候包括的节点为2,3,然后2会被取出来,放入其孩子节点 4,5,此时便有 4,5,3。 论文中选择的阀值为ndes=32.
可以看出这样的改进是从下往上的,上层计算基于下次的结果,同时Z'(z) 会有上界,因为其符合:
切割:
通过上面的方法,我们有效地构建了这颗CA-tree,到确定类划分,跟hc 的方法类似,上面我们提到需要一个临界值来划分,如何这样我们选取后,如下图的虚线,那么虚线下的每一个分支便作为一类,如图的划分类数变为5,通过调整这个临界值,可以划分成不同的类数,临界值记为τ,切割方法记为Z(τ),类个数记为Nz(τ)
更新的相似度矩阵计算方法:
下图是临界值不同选择的结果,上面的对应结果为b 图,当临界为2时候,便与真实结果一样,abcd 对应的类数为 6543
限制:
注意到,例如上面的a图,其中的组的sample 占了很多,所以对于选择临界值选择后,进行进一步的限制,减少类数,Nz(τ) 成一个系数γ,变行,例如下图,我们选择为虚线切割,那么会分成5个类,如果γ=0.8,那么 最终的类数=4,加入节点4的sample 数最少,那么其变被排除在外,另外4个分支各成为1类。
好了,现在的问题是怎么确定4节点对应的样本(们)的类标号,我们知道节点4的label vector,按论文的说法是:对于确定的分支节点(上图有箭头除了4的4个节点),即他们的祖先们,构建一棵树,然后确定4的类标号时候,从这颗树的根节点触发,迭代寻找其孩子节点与4 的了label vector 最相似的节点,迭代到这棵树的叶子,便用这叶子节点的类数,上图中的4类标号用的是5节点的类标号。
我感觉或许会有多个的情况,但不深究这个了。
到此ca-tree聚类集成算法描述完毕,实验结果看论文吧,论文中有时间分析。
[论文]CA-Tree: A Hierarchical Structure for Efficient and Scalable Coassociation-Based Cluster Ensembles的更多相关文章
- [论文阅读笔记] LouvainNE Hierarchical Louvain Method for High Quality and Scalable Network Embedding
[论文阅读笔记] LouvainNE: Hierarchical Louvain Method for High Quality and Scalable Network Embedding 本文结构 ...
- 论文笔记:Auto-DeepLab: Hierarchical Neural Architecture Search for Semantic Image Segmentation
Auto-DeepLab: Hierarchical Neural Architecture Search for Semantic Image Segmentation2019-03-18 14:4 ...
- 论文笔记之: Hierarchical Convolutional Features for Visual Tracking
Hierarchical Convolutional Features for Visual Tracking ICCV 2015 摘要:跟卢湖川的那个文章一样,本文也是利用深度学习各个 layer ...
- 论文阅读笔记七:Structure Inference Network:Object Detection Using Scene-Level Context and Instance-Level Relationships(CVPR2018)
结构推理网络:基于场景级与实例级目标检测 原文链接:https://arxiv.org/abs/1807.00119 代码链接:https://github.com/choasup/SIN Yong ...
- 论文笔记系列-Auto-DeepLab:Hierarchical Neural Architecture Search for Semantic Image Segmentation
Pytorch实现代码:https://github.com/MenghaoGuo/AutoDeeplab 创新点 cell-level and network-level search 以往的NAS ...
- 论文阅读之:Deep Meta Learning for Real-Time Visual Tracking based on Target-Specific Feature Space
Deep Meta Learning for Real-Time Visual Tracking based on Target-Specific Feature Space 2018-01-04 ...
- [论文]Coordination of Cluster Ensembles via Exact Methods
作者:Ioannis T. Christou, Member, IEEE IEEE TRANSACTIONS ON PATTERN ANALYSIS AND MACHINE INTELLIGENCE, ...
- 【HEVC帧间预测论文】P1.6 A Fast HEVC Inter CU Selection Method Based on Pyramid Motion Divergence
A Fast HEVC Inter CU Selection Method Based on Pyramid Motion Divergence <HEVC标准介绍.HEVC帧间预测论文笔记&g ...
- 【HEVC帧间预测论文】P1.5 Fast Coding Unit Size Selection for HEVC based on Bayesian Decision Rule
Fast Coding Unit Size Selection for HEVC based on Bayesian Decision Rule <HEVC标准介绍.HEVC帧间预测论文笔记&g ...
随机推荐
- windows下简单使用pip
1. 在python官网上下载python时会自带pip,并且在安装Python时若未取消会默认一并安装 2. 找出pip.exe所在位置, 3. 右击此电脑,点击属性 4. 高级系统设置 5. 点击 ...
- LAMP 一键部署
LAMP 一键部署 部署http #!/bin/bash ### global variables export lamp_repo=http://192.168.1.5/lamp/ export l ...
- 入门学习Linux常用必会命令实例详解
Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在Linux系统上工作离不开使用系统提供的命令.要想真正理解Linux系统, ...
- 在基于vue-cli的项目自定义打包环境
在工作当中,遇到了下面这个问题: 测试环境与生产环境中的用户权限不一样,因此,就需要根据测试环境打一个包,生产环境又打一个包.可是,如果每次打包都需要更改权限的配置文件的话,会很麻烦,而且,体现不出一 ...
- JZOJ 5197. 【NOIP2017提高组模拟7.3】C
5197. [NOIP2017提高组模拟7.3]C Time Limits: 1000 ms Memory Limits: 262144 KB Detailed Limits Goto Pro ...
- 单例模式【python】
在python中,如需让一个类只能创建一个实例对象,怎么能才能做到呢? 思路:1.通过同一个类创建的不同对象,都让他们指向同一个方向. 2.让个类只能创建唯一的实例对象. 方法:用到 _ _new ...
- System.AccessViolationException”类型的第一次机会异常在 System.Data.dll 中发生 其他信息: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
管理员cmd中运行 netsh winsock reset
- c语言入门-03-数据和c
1>C语言提供两大系列的多种数据类型 1 /*platinum.c*/ 2 #include <stdio.h> 3 4 int main(void){ 5 float weight ...
- mysql安装 以及跳过密码登录重设
修改MySQL的登录设置: vi /etc/my.cnf 在[mysqld]的段中加上一句:skip-grant-tables 例如: [mysqld] datadir=/var/lib/mysql ...
- Android之Bitmap 高效加载
一张图片(BitMap)占用的内存=图片长度*图片宽度*单位像素占用的字节数 图片格式(Bitmap.Config) 一张100*100的图片占用内存的大小 ALPHA_8 图片长度*图片宽度 100 ...