CLOPE-快速有效的聚类算法
大规模单细胞转录组数据高效聚类算法

大规模单细胞转录组数据高效聚类算法大规模单细胞转录组数据高效聚类算法随着生物学和医学领域的不断发展,研究者们越来越意识到单细胞水平的研究对于深入了解生物系统和人类疾病的重要性。
单细胞转录组数据是目前最常用的单细胞研究方式之一,它可以提供单个细胞的转录水平信息,帮助我们识别细胞类型、揭示时空动态以及发现相关疾病的潜在机制。
然而,由于技术限制和数据冗余性,处理大规模的单细胞转录组数据仍然面临挑战。
对于单细胞转录组数据,其中一个重要的任务是将细胞聚类成具有相似特征的群体,以便于后续的进一步分析。
在大规模数据集中进行高效聚类是一个关键问题,因为数据集往往包含数以千计的细胞,并且具有高度的噪声和稀疏性。
为了解决这个问题,研究者们提出了一种大规模单细胞转录组数据高效聚类算法。
该算法的核心思想是结合数据降维和聚类技术,以提高聚类的效率和准确性。
在数据降维方面,研究者们通常采用主成分分析(Principal Component Analysis,简称PCA)或 t-SNE 算法,将原始高维数据降低到较低维度,以便于后续的聚类分析。
在通过降维得到的低维数据上,研究者们可以更好地发现数据中的结构和模式,提高聚类的准确性。
在降维后的数据上进行聚类时,研究者们通常使用基于密度的聚类算法,如DBSCAN(Density-Based Spatial Clustering of Applications with Noise)或HDBSCAN (Hierarchical Density-Based Spatial Clustering of Applications with Noise)算法,以识别具有相似特征的细胞。
与传统的基于距离的聚类算法相比,基于密度的聚类算法能够更好地处理噪声和稀疏性问题,提高聚类的稳定性和可靠性。
为了进一步提高聚类的效率,研究者们还结合了并行计算和大规模数据处理技术。
通过将数据划分成多个小块,并在多个计算节点上并行处理这些小块,研究者们可以显著提高聚类算法的运行速度。
机器学习中的聚类算法详解

机器学习中的聚类算法详解机器学习中最基本的任务是分类和聚类。
分类是将数据样本分成不同的类别,而聚类则是将数据样本分成不同的簇。
我们在研究聚类算法时,主要关注的是无监督学习方法。
因为我们不知道需要将数据分成什么类别,需要学习算法自己分出不同的簇。
1. 聚类算法的基本思想聚类算法通过寻找数据样本内部的共性,将样本数据进行聚类并最终产生不同的簇。
先前我们在研究分类算法时,需要标记每个数据样本的类别标签,产生训练数据。
而聚类算法不需要这些标记,可以根据数据样本的特征直接对数据样本进行分组。
聚类算法要解决的问题有:1. 如何衡量样本之间的相似度2. 如何判断簇对最终聚类结果的影响3. 如何选择聚类算法的参数和初始簇聚类算法的基本流程:1. 初始化:选择聚类算法的初始参数和初始簇2. 计算相似度:使用相似度计算方法,计算每个数据样本之间的相似度3. 确定簇的数量:根据聚类算法的参数确定簇的数量4. 分配簇:将样本中的每个数据分配到对应的簇中5. 重新计算簇心:重新计算每个簇的簇心6. 重新分配簇:根据新的簇心重新将样本数据分配到簇中,直到簇之间的间隔不再变化7. 输出聚类结果2. 常用的聚类算法常用的聚类算法有层次聚类、K均值聚类和密度聚类,这里分别进行介绍。
2.1 层次聚类层次聚类(Hierarchical Clustering)是将数据样本分层次的聚类方法。
根据聚类层次不同,分成两类:分层聚类和聚合聚类。
分层聚类的算法流程:从每个数据样本作为一个簇出发,然后合并最相近的两个簇。
重复这个过程,直到最后只剩下一个簇。
聚合聚类的算法流程:将所有的数据样本看作一个簇,重复将距离最近的两个簇合并的过程,直到合并到指定的簇数。
2.2 K均值聚类K均值聚类(K-means)算法是聚类算法的经典算法之一,是一种基于距离度量的贪心聚类算法。
K-means算法主要分为以下三个步骤:1. 初始化:选择K个点作为初始的聚类中心2. 分配数据:将每个数据分配该距离最近的聚类中心所在簇3. 计算新的簇中心:将数据分配到各个簇中之后,重新计算各簇的中心点,即为新的聚类中心2.3 密度聚类密度聚类是一种基于密度的聚类方法,它假设聚类的区域比非聚类区域的密度高,通过寻找具有高密度的区域,来实现聚类。
高维数据聚类算法比较与优化研究

高维数据聚类算法比较与优化研究近年来,随着数据科学和机器学习的快速发展,高维数据聚类算法变得越来越重要。
高维数据聚类是一项挑战性的任务,因为在高维空间中,数据点之间的距离往往变得稀疏,这导致了传统的聚类算法在处理高维数据时效果不佳。
本文将介绍并比较几种常见的高维数据聚类算法,并讨论其优化方法。
首先,我们将介绍两种常见的高维数据聚类算法:K-means和DBSCAN。
K-means算法是一种基于距离的聚类算法。
算法首先随机选择K个聚类中心点,然后迭代地将数据点分配给最近的聚类中心,再更新聚类中心的位置。
这个过程将重复进行,直到聚类中心不再发生变化为止。
K-means算法简单、直观,并且在低维数据集上表现良好。
然而,在处理高维数据时,K-means算法存在“维数灾难”的问题,即随着维度的增加,数据点之间的距离变得日益稀疏,导致聚类效果下降。
DBSCAN算法是一种基于密度的聚类算法。
该算法将数据点分为核心点、边界点和噪声点三类。
算法先选取一个核心点,然后找出以该核心点为中心,以给定半径ε内的所有数据点,将这些点作为一个聚类。
然后,递归地处理每个核心点的邻域,直到所有的核心点都被处理完。
DBSCAN算法相比于K-means算法更适用于处理高维数据,因为它不依赖于距离的定义,而是通过密度的概念实现聚类。
然而,虽然DBSCAN算法相对于K-means算法在高维数据上具有一定优势,但仍然存在一些问题。
其中一个问题是参数选择问题,包括ε和最小样本数min_samples的选择。
这些参数的选择直接影响着聚类结果的质量,而且在高维空间中很难确定合适的参数值。
另一个问题是算法的性能问题,由于DBSCAN算法需要计算数据点之间的距离和密度,对于大规模高维数据集来说,计算复杂度会急剧增加,导致算法运行效率低下。
为了解决上述问题,研究者们提出了一些优化方法。
其中一个方法是使用降维技术。
降维技术可以将高维数据映射到低维空间,从而减少维数灾难导致的距离稀疏问题。
聚类算法使用教程(Ⅰ)

聚类算法使用教程一、引言聚类算法是数据挖掘领域中的重要工具,它能够将数据集中的样本按照相似性分成若干类别,为之后的数据分析和决策提供支持。
聚类算法在多个领域都有着广泛的应用,比如市场分析、社交网络分析、医学影像处理等。
本文将介绍几种常见的聚类算法的使用方法,并结合实例进行详细说明。
二、K均值聚类算法K均值聚类算法是最为经典的聚类算法之一,它通过迭代的方式将数据集中的样本划分成K个类别。
算法的步骤如下:1. 初始化K个聚类中心点,可以随机选择数据集中的K个样本作为初始中心。
2. 将每个样本分配到距离最近的聚类中心点所在的类别中。
3. 根据每个类别中的样本重新计算聚类中心。
4. 重复执行第2和第3步,直到聚类中心点不再发生变化或者达到设定的迭代次数。
下面以一个简单的二维数据集为例,来演示K均值聚类算法的使用方法。
假设有如下的数据集:x = [1, 2, 2, 3, 6, 7, 8, 9]y = [1, 1, 2, 2, 8, 6, 7, 6]首先,我们随机选择K=2个样本作为初始聚类中心,比如选择(2, 1)和(7,6)。
然后按照上述算法步骤进行迭代,最终得到数据集中的样本被分成了两个类别。
三、层次聚类算法层次聚类算法是一种自底向上或自顶向下的聚类方法,它不需要预先指定聚类的个数,而是通过计算样本之间的相似性来构建聚类树。
层次聚类算法的步骤如下:1. 计算每对样本之间的相似性或者距离。
2. 将每个样本看作一个单独的类别。
3. 根据相似性或者距离的大小,将最相似的两个类别合并成一个新的类别。
4. 重复执行第3步,直到所有的样本被合并成一个类别。
层次聚类算法的优点在于它能够产生聚类层次结构,并且不需要预先指定聚类的个数。
下面以一个简单的二维数据集为例,来演示层次聚类算法的使用方法。
假设有如下的数据集:x = [1, 2, 2, 3, 6, 7, 8, 9]y = [1, 1, 2, 2, 8, 6, 7, 6]我们可以通过计算欧氏距离来构建样本之间的相似性矩阵,然后根据相似性矩阵使用层次聚类算法来得到聚类结果。
聚类算法介绍

聚类算法介绍聚类算法是一种常见的机器学习算法,它可以将数据集中的数据按照相似度进行分组,从而实现对数据的分类和分析。
聚类算法在数据挖掘、图像处理、自然语言处理等领域都有广泛的应用。
聚类算法的基本思想是将数据集中的数据按照相似度进行分组,使得同一组内的数据相似度较高,不同组之间的数据相似度较低。
聚类算法的核心是相似度度量和聚类方法。
相似度度量是指对数据之间的相似程度进行度量的方法。
常用的相似度度量方法有欧氏距离、曼哈顿距离、余弦相似度等。
不同的相似度度量方法适用于不同的数据类型和应用场景。
聚类方法是指将数据集中的数据按照相似度进行分组的具体方法。
常用的聚类方法有层次聚类、K均值聚类、密度聚类等。
不同的聚类方法适用于不同的数据类型和应用场景。
层次聚类是一种自下而上的聚类方法,它从每个数据点开始,逐步将相似的数据点合并成一个聚类,直到所有数据点都被合并为一个聚类。
层次聚类的优点是可以得到聚类的层次结构,缺点是计算复杂度较高。
K均值聚类是一种基于距离的聚类方法,它将数据集中的数据分为K个聚类,每个聚类的中心点是该聚类中所有数据点的平均值。
K均值聚类的优点是计算复杂度较低,缺点是对初始聚类中心的选择比较敏感。
密度聚类是一种基于密度的聚类方法,它将数据集中的数据分为若干个密度相连的区域,每个区域对应一个聚类。
密度聚类的优点是可以处理不规则形状的聚类,缺点是对参数的选择比较敏感。
聚类算法是一种常见的机器学习算法,它可以将数据集中的数据按照相似度进行分组,从而实现对数据的分类和分析。
不同的相似度度量方法和聚类方法适用于不同的数据类型和应用场景,需要根据具体情况进行选择。
聚类CLIQUE算法 的基本思路

采用基于密度的算法 聚类( cluster)就是一个区域,满足该区域中 的点的密度大于与之相邻的区域。 把数据空间分割成网格单元(unit),将落到某个 单元中的点的个数当成这个单元的密度 (density)。可以指定一个数值,当某个单元 中的点的个数大于该数值时,我们就说这个单 元格是稠密( dense)的。聚类也就定义为连 通的所有的稠密单元格的集合。
Start with some unit u in D, assign it the first cluster number,and find all the units it is connected to If there still are units in D that have not yet been visited,find one and repeat the procedure.
1.Covering with maximal regions
Input:
a set C of connected dense units in the same k-dimensional space S
Output:
a set W of maximal region such that W is a cover of C
A bottom-up algorithm to find dense units
Determines 1-dimensional dense units by making a pass over the data Having determined (k-1)-dimensional dense units, the candidate k-dimensional units are determined using candidate generation procedure. To decide which subspaces(and the corresponding dense units) are interesting. MDL------Minimal Description Length
clique聚类算法 -回复

clique聚类算法-回复关于clique聚类算法引言:在数据挖掘和机器学习领域,聚类是一种常用的技术,它将数据对象分组成具有相似特征的簇或群体。
其中一种聚类算法是clique聚类算法,它能够找到具有相似特征的数据对象的集合,并将它们归为一类。
本文将深入分析clique聚类算法,并逐步解释其原理和实施步骤。
第一部分:聚类算法概述聚类算法是一种无监督学习方法,它在没有已知类别或标签的情况下将数据对象分组到不同的簇中。
这些簇由具有相似特征的数据对象组成,这些特征可能是数值、离散值或二进制值。
聚类算法可以用于数据分析、图像处理、社交网络分析等领域。
第二部分:介绍clique聚类算法2.1 原理clique聚类算法是一种基于网络的聚类方法,它通过寻找图中的完全子图来识别簇。
一个完全子图是指其中的每对节点之间都有边连接。
clique算法根据完全子图中的节点密度来确定簇的边界。
密度是指节点与其邻居节点之间的边的数量。
2.2 步骤2.2.1 构建网络首先,将数据转化为图的形式。
每个数据对象对应图中的一个节点,而数据对象之间的相似度则决定了节点之间是否有边连接。
可以使用距离度量来计算相似度。
2.2.2 寻找完全子图在构建好网络之后,需要找出具有完全子图的节点集合。
一个完全子图是指其中的每对节点之间都有边连接。
clique算法通过搜索网络中的完全子图来确定簇的候选对象。
2.2.3 簇划分完成完全子图的搜索之后,需要将节点分配给不同的簇。
这可以通过计算每个节点在候选对象中的密度来实现。
密度高的节点将被归入某个簇中。
2.2.4 簇扩展为了进一步提高聚类的准确性,可以进行簇的扩展。
在簇划分之后,算法会尝试将邻近的节点加入已有的簇中,以进一步增加簇的密度。
这样做可以使得簇更加完整,并减少错误分类。
第三部分:clique聚类算法的优势和应用3.1 优势clique聚类算法能够处理高维数据和非球形簇,相比于其他聚类算法具有较好的鲁棒性。
聚类算法及其在数据分析中的应用

聚类算法及其在数据分析中的应用近年来,随着技术的不断进步,数据分析的应用越来越广泛。
在大数据时代下,人们面对的不仅仅是海量数据,更是数据的“概括”。
如何在数据中获取有用的信息,这是必须掌握的一项技能。
而聚类算法就是其中的一种。
什么是聚类算法?聚类算法是一种用于将数据对象分为相似组或类的机器学习方法,其目的是将彼此相似的数据对象集合在一起,彼此不相似的数据对象则分开。
聚类算法的本质是通过学习和计算相似性来完成数据的自动分类,这种分类能够帮助我们更高效地理解和分析数据。
聚类算法的分类聚类算法的分类很重要,因为不同的聚类算法方法适用于不同的数据情况。
根据聚类算法的方法和特点,我们可以将聚类算法分为以下几种:1. 层次聚类算法:是一种自下而上的方法,可以找到数据的层次结构,在数据对象之间建立完全二叉树结构。
2. 划分聚类算法:是一种自上而下的方法,将母集合分为若干个不相交的子集合,因此也称之为“分类”。
3. 密度聚类算法:基于数据集的局部密度来对数据对象进行聚类。
4. 分布密度聚类算法:基于数据的概率分布来进行聚类。
5. 原型聚类算法:需要定义一个具有代表性的样本来描述一个组的特点,例如 k 均值算法。
聚类算法的应用聚类算法的应用非常广泛,以下是聚类算法在数据分析中具体应用的几个方面。
1. 客户细分:利用聚类算法,可以将客户分为不同的群体,从而更好地进行营销工作。
例如,我们可以通过分析客户的购买记录、行为偏好、地理位置等来划分客户群体,以便测定不同营销策略。
2. 图像分析:利用聚类算法,可以将关闭的区域放在一起形成边,从而理解和分析图像中的边缘。
图像分析是聚类算法的重要应用之一。
3. 生物分类:利用聚类算法,可以对生物类群进行分类,例如将动物、树木和真菌分别归为不同的物种。
聚类算法还可以帮助生物学家更好地理解物种之间的关系和共同点。
4. 垃圾邮件过滤:利用聚类算法,可以将垃圾邮件与正常邮件分离开来。
通过聚类算法将相似的邮件归为同一类别,然后进行分类。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CLOPE:针对交易的数据快速有效聚类算法摘要本文研究分类数据的聚类问题,特别针对多维和大型的交易数据。
从增加聚簇直方图的高宽比的方法得到启发,我们开发了一种新的算法---CLOPE,这是一种非常快速、可伸缩,同时又非常有效的算法。
我们展示了算法对两个现实数据集聚类的性能,并将CLOPE与现有的聚类算法进行了比较。
关键词数据挖掘,聚类,分类数据,可伸缩性1.简介聚类是一种非常重要的数据挖掘技术,它的目的是将相似的交易[12, 14, 4, 1]分组在一起。
最近,越来越多的注意力已经放到了分类数据[10,8,6,5,7,13]的聚类上,分类数据是由非数值项构成的数据。
交易数据,例如购物篮数据和网络日志数据,可以被认为是一种特殊的拥有布尔型值的分类数据,它们将所有可能的项作为项。
快速而精确地对交易数据进行聚类的技术在零售行业,电子商务智能化等方面有着很大的应用潜力。
但是,快速而有效聚类交易数据是非常困难的,因为这类的数据通常有着高维,稀疏和大容量的特征。
基于距离的算法例如k-means[11]和CLARANS[12]都是对低维的数值型数据有效。
但是对于高维分类数据的处理效果却通常不那么令人满意[7]。
像ROCK这类的分层聚类算法在分类数据聚类中表现的非常有效,但是他们在处理大型数据库时表现出先天的无效。
LargeItem[13]算法通过迭代优化一个全局评估函数对分类数据进行聚类。
这个评估函数是基于大项概念的,大项是在一个聚簇内出现概率比一个用户自定义的参数——最小支持度大的项。
计算全局评估函数要远比计算局部评估函数快得多,局部评估函数是根据成对相似性定义的。
这种全局方法使得LargeItem算法非常适合于聚类大型的分类数据库。
在这篇文章中,我们提出了一种新的全局评估函数,它试图通过增加聚簇直方图的高度与宽度之比来增加交易项在聚簇内的重叠性。
此外,我们通过引用一个参数来控制聚簇紧密性的方法来泛化我们的想法,通过修改这个参数可以得到不同的聚簇划分个数。
实验表明,我们的算法运行速度比Largeltem快得多,聚类的质量与ROCK算法[7]相当接近。
为了解释算法的一些基本思想,我们采用一个非常小的交易数据库,其中包含5条交易数据{(苹果,香蕉),(苹果,香蕉,蛋糕),(苹果,蛋糕,盘子),(盘子,鸡蛋),(盘子,鸡蛋,鱼)}。
为简单起见,交易(苹果,香蕉)被简称为ab,以此类推。
对于这个小型数据库,比较下面两个聚类划分(1){{ab,abc,acd},{de,def}};(2){{ab,abc},{acd,de,def}}。
对于每一个聚簇,我们计算每一个不同项的出现次数,然后得到聚簇的高度(H)和宽度(W)。
例如,聚簇{ab,abc,acd}中a:3,b:2,c:2,d:1,H=2.0,W=4,图1将这些结果显示为几何上的直方图,按项出现频率降序排列,这样做只是为了更容易直观展示。
图1 两个聚簇的直方图我们通过分析聚簇的高度和宽度,从几何学上来评判这两个聚类的质量。
不算{de,def}和{ab,abc}这两个拥有相同直方图的聚簇,另两个直方图的质量不同。
聚簇{ab,abc,acd}的直方图8块区域(H=2.0, H/W=0.5)只有4个不同项,但是聚簇{acd,de,def}对于相同的块数却有5个不同的项(H =1.6,H/W=0.32)。
很明显,聚类(1)比较好,因为我们更希望同一个聚簇中的交易有更多的重叠。
从上面的例子中,我们可以看到,拥有更大高宽比的直方图具有更好的簇内相似性。
我们应用这一简单的直觉作为聚类算法的基础,用簇的直方图的几何性质定义全局评估函数。
我们把这种新的算法叫做CLOPE——带有倾斜的聚类。
CLOPE算法不仅非常有效,在聚类形如市场交易数据和网络服务器日志这类高维的大型交易数据时也非常之快而且具有较好的可拓展性。
本文的其它部分安排如下。
第2节将更加正式地分析分类数据聚类问题,并提出我们的评估函数。
第3节详细介绍CLOPE算法以及其实现问题。
在第4节,将CLOPE与Largeltem对现实数据集聚类的实验结果进行比较。
第5节介绍相关工作后,第6节对文章进行总结。
2.CLUSTERING WITH SLOPE(具有倾斜的聚类)符号:在整篇文章中,我们使用以下符号。
交易数据集D是一组交易{t1, ...,t n}的集合。
每条交易是一些项{i1, ..., im}的集合。
一个聚簇{C1, ... Ck}是{t1, ...,t n }的一个划分,也就是说,C1∪…∪ Ck={t1, ..., tn}而且对任意1 ≤i, j ≤k,满足C i≠φ∧ C i∩C j = φ。
每一个C i叫做一个簇。
除非其它说明,n,m,k分别表示交易的个数、项的个数和聚簇的个数。
一次好的聚类应该将相似的交易分到同一组。
大部分聚类算法定义一些评估函数并且优化它们,最大化簇内的相似度和簇间相异。
评估函数可以定义为局部的的或者全局的两种类型。
在定义为局部的方式中,评估函数建立在交易对相似性基础上。
这种方式已经被广泛地应用于数值数据的聚类中,使用对相似性例如L p((Σ|xi-yi|p)1/p)作为两点之间的相似度量。
常见的分类数据的相似度量有Jaccard系数(|t1∩t2|/|t1∪t2|),Dice系数(2×|t1∩t2|/(|T1|+|T2|))或者简单地为两个交易的公共项数[10]。
然而,对于大型的数据,相比于全局方法,这些局部方法在计算上的成本是非常巨大的。
在Wang等在他们的LargeItem算法[13]中首创的全局相似测度也可以用于分类数据的聚类。
在全局方法中,不需要个别交易之间的两两相似度量。
聚类质量在簇级测定,它利用了聚簇中大项集和小项集这样的信息。
既然这些全局度量的计算要比两两相似度的计算要快得多,所以全局方法对大型分类数据库的聚类处理中是非常有效的。
与LargeItem相比,CLOPE使用一个更简单而有效的全局测度来聚类交易数据集。
更高的高宽比的生动形象地反映了更好的聚类结果。
给一个聚簇C,我们可以找到其中所有不同的项以及每个项对应的出现次数,即包含了项的交易数。
我们用D(C)表示不同项的集合,Occ(i,C)表示项i 在聚簇C中的出现次数。
然后我们可以画出聚簇C的直方图,项作为X轴,以它们出现次数的降序排列,项出现的次数作为Y轴。
我们定义聚簇C的大小S(C)和宽度W(C),如下:聚簇的高度定义为H(C)=S(C)/W(C)。
当聚簇C不重要或者能从上下文推出时,我们将H(C),S(C),W(C)简写为S,W和H。
为了阐明,我们下面详细解释图1中最后一个聚簇的直方图。
请注意,几何图2中,直方图与具有高度H和宽度W的虚线矩形具有相同的大小S.图2 聚簇 {acd, de, def }的直方图详解很明显,一个更大的高度表示在聚簇中项之间有更多的重叠,这样聚簇中的交易就有更多的相似性。
在我们运行的例子中,{ab,abc,acd}的高度是2,而{acd,de,def }的高度是1.6。
既然两个聚类的所有其它的特征是相同的,我们认为聚类(1)更好。
然而,为了定义我们的评估函数,单独定义高度是不够的。
取一个非常简单的数据库{ abc,def },两个交易中没有重叠,但是聚簇{{abc,def}}和聚簇{{abc},{def}}有相同的高度1。
另一个做法对这个例子更合适。
我们可以用梯度G(C)= H(C)/ W(C)= S(C)/ W(C)2代替H(C)作为聚簇C的质量测度。
.现在,聚簇{ { abc },{ def } }更好,因为其中两个聚簇的梯度都是1/3,大于聚簇{ abc def }的梯度1/6。
为了定义聚类评估函数,,我们需要考虑每个聚簇的形状以及其中的交易数。
对于聚类C = { C1,……,Ck},我们使用以下公式作为一个评估函数的直观定义。
事实上,这个评估函数可以用一个幂参数r而不是2进行泛化,如下所示。
上式中,r是一个正实数1,称为排斥因子,用来控制聚簇内的相似度等级。
当r很大时,同一个聚簇内的交易必须共享大部分共同的项。
否则,将这些交易分到不同的聚簇中会得到更大的收益值。
例如,比较数据库{ abc,abcd,bcde,cde }的两个聚类:(1) {{abcd,abcd,bcde,cde } },(2) { { abc,abcd },{ bcde,cde } }。
为了聚类(2)得到更大聚类收益值,它的收益值必须大于聚簇(1)的聚类收益值这意味着必须使用一个大于ln(14/7)/ln(5/4) ≈ 3.106的排斥因子。
相反,可以使用小的排斥因子来分组稀疏数据。
共享少量公共项的交易可能被放到相同的聚簇中。
对于数据库{abc,cde,fhg,hij,},想要聚类{{abc,cde},{fgh,hij,}}的聚类收益值大于聚类{{abc},{cde},{fgh},{hij}}的聚类收益值,需要一个小于ln(6/3)/ln(5/3) ≈ 1.357的排斥因子。
现在,我们表述聚类交易数据的问题如下。
问题定义:给定D和r,找到一个聚类C使Profitr(C)最大。
图3. CLOPE算法的概要描述3、实现像绝大多数基于划分的聚类方法一样,我们通过迭代扫描数据库来趋近最佳的方案。
然而,由于我们的评估函数是定义为全局的,函数中只有一些轻松可计算的测度,比如大小和宽度,方法的执行速度比局部方法快得多。
我们的实现方案需要一个初次扫描数据库以构建初始聚类,由评估函数驱动。
然后,需要通过多次扫描来完善聚类、优化评估函数。
如果相比Profitr上一次扫描,聚类划分没有发生改变,算法将停止,最终聚类划分作为输出。
输出是只是简单地为每条交易形成的整数标签,指明交易所属的聚簇id。
算法的示意图如图3所示。
内存数据结构:在有限的内存空间里,我们对每一个聚簇仅仅保留当前交易和少量的信息。
这些信息,称为聚簇特性,包括交易数量N,不同项的项数(或宽度)W ,<项,出现次数>的哈希值occ ,和一个预先计算好的整数S 来快速访问聚簇的大小。
我们记C.occ[i]为聚簇C 中项i 出现的次数,以此类推。
备注:事实上,CLOPE 相当节约内存,甚至对于大多数交易数据库以数组形式表示出现的数据都是可行的。
如果使用4字节的数组,项出现次数所需的总内存大约是M*K*4字节,M 是维数,K 是聚簇数。
有着10K 不同项、1K 个聚簇的数据库可以装到40M 的RAM 。
聚类收益值计算:在添加或删除一条交易时更新簇特征很简单,通过簇特征,使用每一个聚簇的S ,W 和N 计算聚类收益值也很简单。
算法中最花时间的部分(图3中的步骤3和步骤10)是比较添加交易到所有聚簇(包括空的聚簇)的不同收益。