ROCK 聚类算法?

ROCK (RObust Clustering using linKs)  聚类算法‏是一种鲁棒的用于分类属性的聚类算法。该算法属于凝聚型的层次聚类算法。之所以鲁棒是因为在确认两对象(样本点/簇)之间的关系时考虑了他们共同的邻居(相似样本点)的数量,在算法中被叫做链接(Link)的概念。而一些聚类算法只关注对象之间的相似度。

ROCK 算法中用到的四个关键概念

  1. 邻居(Neighbors):如果两个样本点的相似度达到了阈值(θ),这两个样本点就是邻居。阈值(θ)有用户指定,相似度也是通过用户指定的相似度函数计算。常用的分类属性的相似度计算方法有:Jaccard 系数,余弦相似度。
  2. 链接(Links):两个对象的共同邻居数量
  3. 目标函数(Criterion Function):最大化下面目标函数以获得最优的聚类结果(最终簇之间的链接总数最小,而簇内的链接总数最大)。Ci:第i个簇,k:簇的个数,ni:Ci的大小(样本点的数量)。一般可使用f (θ) = (1-θ)/(1+θ). f(θ)一般具有以下性质:Ci中的每个样本点在Ci中有nif(θ)个邻居。(具体请见参考文献2)

4. 相似性的度量(Goodness Measure):使用该公式计算所有对象的两两相似度,将相似性最高的两个对象合并。通过该相似性度量不断的凝聚对象至k个簇,最终计算上面目标函数值必然是最大的。

,link[Ci,Cj]=

大概算法思路(伪代码请见参考文献2):

输入:需要聚类的个数-k,和相似度阈值-θ

算法:

  开始每个点都是单独的聚类,根据计算点与点间的相似度,生成相似度矩阵。

  根据相似度矩阵和相似度阈值-θ,计算邻居矩阵-A。如果两点相似度>=θ,取值1(邻居),否则取值0.

  计算链接矩阵-L=A x A

  计算相似性的度量(Goodness Measure),将相似性最高的两个对象合并。回到第2步进行迭代直到形成k个聚类或聚类的数量不在发生变换。

输出:

  簇和异常值(不一定存在)

ROCK in R - cba 包:



load(‘country.RData‘)
d<-dist(countries[,-1])
x<-as.matrix(d)
library(cba)
rc <- rockCluster(x, n=4, theta=0.2, debug=TRUE)
rc$cl
 

参考文献:

【1】http://www.enggjournals.com/ijcse/doc/IJCSE12-04-05-248.pdf

【2】http://www.cis.upenn.edu/~sudipto/mypapers/categorical.pdf

时间: 2024-12-25 04:51:18

ROCK 聚类算法?的相关文章

【转载】聚类算法小结

聚类算法总结:---------------------------------------------------------聚类算法的种类: 基于划分聚类算法(partition clustering) k-means: 是一种典型的划分聚类算法,它用一个聚类的中心来代表一个簇,即在迭代过程中选择的聚点不一定是聚类中的一个点,该算法只能处理数值型数据 k-modes: K-Means算法的扩展,采用简单匹配方法来度量分类型数据的相似度 k-prototypes: 结合了K-Means和K-M

【转载】各种聚类算法的比较

聚类的目标是使同一类对象的相似度尽可能地大:不同类对象之间的相似度尽可能地小.目前聚类的方法很多,根据基本思想的不同,大致可以将聚类算法分为五大类:层次聚类算法.分割聚类算法.基于约束的聚类算法.机器学习中的聚类算法和用于高维度的聚类算法.摘自 数据挖掘中的聚类分析研究综述 这篇论文. 1.层次聚类算法 1.1聚合聚类 1.1.1相似度依据距离不同:Single-Link:最近距离.Complete-Link:最远距离.Average-Link:平均距离 1.1.2最具代表性算法 1)CURE算

聚类算法小结

看了些论文,小结一下,分享给大家! 聚类算法主要可以分为以下几类: 1)基于划分的方法 划分方法的主要思想是:给定要构建的划分数目k,在数据库中随机选择k个对象,每个对象代表一个类的平均值或中心,根据剩余的对象到类中心的距离将其划分到最近的类,然后重新计算每个类的中心,不断重复这个过程,直到所有的对象都不能再分配为止. 典型的划分方法包括:K一Means.K一Medoids.CLARA.CLARANS.FCM等 2)基于层次的方法 基于层次方法的主要思想是:对给定数据对象的集合进行层次的分解.根

关于k-means聚类算法的matlab实现

在数据挖掘中聚类和分类的原理被广泛的应用. 聚类即无监督的学习. 分类即有监督的学习. 通俗一点的讲就是:聚类之前是未知样本的分类.而是依据样本本身的相似性进行划分为相似的类簇.     而分类是已知样本分类,则须要将样本特征和分类特征进行匹配,进而将每一个样本归入给出的特定的类. 因为本文是对聚类算法中的k-means算法的实现,所以接下来主要进行一些聚类算法的介绍. 聚类算法包含多种,可按例如以下分配: 1.划分法:基于此种思想的聚类算法包含 k-means,PAM,CLARA,CLARAN

各种聚类算法的比较

各种聚类算法的比较 聚类的目标是使同一类对象的相似度尽可能地大:不同类对象之间的相似度尽可能地小.目前聚类的方法很多,根据基本思想的不同,大致可以将聚类算法分为五大类:层次聚类算法.分割聚类算法.基于约束的聚类算法.机器学习中的聚类算法和用于高维度的聚类算法.摘自 数据挖掘中的聚类分析研究综述 这篇论文. 1.层次聚类算法 1.1聚合聚类 1.1.1相似度依据距离不同:Single-Link:最近距离.Complete-Link:最远距离.Average-Link:平均距离 1.1.2最具代表性

聚类算法之层次法

首先介绍聚类中的层次聚类算法.层次法又分为凝聚的层次聚类和分裂的层次聚类. 凝聚的方法:也称自底向上的方法,首先将每个对象作为单独的一个聚类,然后根据性质和规则相继地合并相近的类,直到所有的对象都合并为一个聚类中,或者满足一定的终止条件.经典的层次凝聚算法以AGNES算法为代表,改进的层次凝聚算法主要以BIRCH,CURE,ROCK,CHAMELEON为代表.(后面详细介绍) 分裂的方法:也称自顶向下的方法,正好与凝聚法相反,首先将所有的对象都看作是一个聚类,然后在每一步中,上层类被分裂为下层更

聚类算法和分类算法总结

原文:http://blog.chinaunix.net/uid-10289334-id-3758310.html 聚类算法的种类: 基于划分聚类算法(partition clustering) k-means: 是一种典型的划分聚类算法,它用一个聚类的中心来代表一个簇,即在迭代过程中选择的聚点不一定是聚类中的一个点,该算法只能处理数值型数据 k-modes: K-Means算法的扩展,采用简单匹配方法来度量分类型数据的相似度 k-prototypes: 结合了K-Means和K-Modes两种

基于位置信息的聚类算法介绍及模型选择

百度百科 聚类:将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类.由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异."物以类聚,人以群分",在自然科学和社会科学中,存在着大量的分类问题.聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法.聚类分析起源于分类学,但是聚类不等于分类.聚类与分类的不同在于,聚类所要求划分的类是未知的. 分类和聚类算法一直以来都是数据挖掘,机器学习领域的热门课题,因此产生了众多的

【转】 聚类算法-Kmeans算法的简单实现

1. 聚类与分类的区别: 首先要来了解的一个概念就是聚类,简单地说就是把相似的东西分到一组,同 Classification (分类)不同,对于一个 classifier ,通常需要你告诉它"这个东西被分为某某类"这样一些例子,理想情况下,一个 classifier 会从它得到的训练集中进行"学习",从而具备对未知数据进行分类的能力,这种提供训练数据的过程通常叫做 supervised learning (监督学习),而在聚类的时候,我们并不关心某一类是什么,我们需