聚类算法概述
Posted 寻真杂记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了聚类算法概述相关的知识,希望对你有一定的参考价值。
基于划分的聚类方法
(Partition-based methods)
简单来说就是,有一堆散点需要聚类,想要的聚类效果就是“类内的点都足够近,类间的点都足够远”。
首先要确定这堆散点最后聚成几类,然后挑选几个点作为初始中心点,再然后依据预先定好的启发式算法(heuristic algorithms)给数据点做迭代重置(iterative relocation),直到最后到达“类内的点都足够近,类间的点都足够远”的目标效果。也正是根据所谓的“启发式算法”,形成了k-means算法及其变体包括k-medoids、k-modes、k-medians、kernel k-means等算法。
一般都遵从初始划分和迭代得优两个阶段,一个将聚类问题转化为最优划分问题,它往往通过一个优化准则函数将一个初始划分转化为一个全局最优划分。在球形簇数据集中的优异表现。
基于层次的聚类方法
(Hierarchical methods)
基于层次的聚类方法适用于链状数据集聚类。使用树的结构组织数据对象,在此基础上创建数据对象的层次分解。层次分解方式的不同可分为自底向上(agglomerative)和自顶向下(divisive)两种方法,其中自底向上的方法又移为凝聚层次聚类, 自顶向下的方法又称为分裂层次聚类。
自底向上的方法:AGNES算法。自底向上的方法首先将对象划分为一个相对独立的小的原子簇,然后根据一定的合并原则对这些原子簇进行合并,最终将所有同类对象合并到同一个类或簇中,簇间相似度的度量方法一般分为单连接、全连接和复合连接三种。单连接使用两个簇间的最小距离表示两个簇的相似度,全连接使用两个簇间最大距离表示两个簇的相似度而复合连接一般使用两个续间平均距离表示两个簇的相似度。
自顶向下方法:CHAMELEON算法。由于层次分解过程的不可逆性,基于层次的聚类算法对分解或合并的判定函数要求严格。
典型算法:BIRCH、CURE、CHAMELEON等。
BIRCH(Balanced Iterative Reducing and Clustering Using Hierarchies)主要是在数据体量很大的时候使用,而且数据类型是numerical;
ROCK(A Hierarchical Clustering Algorithm for Categorical Attributes)主要用在categorical的数据类型上;
Chameleon(A Hierarchical Clustering Algorithm Using Dynamic Modeling)里用到的linkage是kNN(k-nearest-neighbor)算法,并以此构建一个graph,Chameleon的聚类效果被认为非常强大,比BIRCH好用,但运算复杂的发很高,O(n^2)。可以处理非常复杂的形状的。
优势:可以识别复杂形状、任意大小的簇。同基于划分的聚类方法不同,它不用预先确定簇的个数和解决局部最优问题。
缺点:在合并或分裂过程中的不可逆性,造成无法对错误进行更正,从而降低了聚类的质量。
解决方法:将基于层次的聚类方法同其他聚类方法相结合来提高聚类质量。
基于网格的聚类方法
(Grid-based methods)
原理就是将数据空间划分为网格单元,将数据对象集映射到网格单元中,并计算每个单元的密度。根据预设的阈值判断每个网格单元是否为高密度单元,由邻近的稠密单元组形成类“。
不针对单个的数据对象进行处理,而是将数据空间量化为有限个网格单元将网格单元作为基本单位进行处理。利用这种方式获得的网格单元个数往往大大少于数据集中的数据对象个数。基于网格的聚类方法在时间效率上大大优于其它聚类方法。对于将处理速度作为关键指标的海量数据集而言,基于网格的聚类方法是一类适合的方法。
常见算法:STING、WaveCluster、CLIQUE、SCI、GECM算法。
STING: 用自顶向下的方法将层中不相关的网格单元删除,直到到达最底层,从而获得聚类结果。低层次的网格单元由高层次的网格单元划分而来,不同层次的网格单元对应的分辨率不同,从而形成多分辨率的网格数据结构。网格粒度的大小同时影响计算效率和聚类精度,对二者影响呈反向关系。
WaveCluster算法采用小波变换来转换原特征空间,并以此来发现密集区域。
CLINQUE算法是一种适用于高维数据集的网格聚类方法。
优点:执行效率高,因为其速度与数据对象的个数无关,而只依赖于数据空间中每个维上单元的个数。
缺点:处理精度低、聚类质量差、对参数敏感、无法处理不规则分布的数据、维数灾难等。
基于模型的聚类方法
(Model-based methods)
这一类方法主要是指基于概率模型的方法和基于神经网络模型的方法,尤其以基于概率模型的方法居多。这里的概率模型主要指概率生成模型(generative Model),同一”类“的数据属于同一种概率分布。
通过调整概率分布参数来达到概率分布模型同数据分布的最佳拟合来表示聚类的特征,其中概率分布模型通常为已知固定模型。
常见算法:GMM、EM、AutoClass、COBWED、CLASSIT、SOM等。
最典型、也最常用的方法就是高斯混合模型(GMM,Gaussian Mixture Models)
EM、AutoClass是基于统计学中期望最大化模型的算法。EM算法通过迭代求精的方法来获取概率分布的参数。参数拟合过程类似于K-MEANS算法,使用簇的均值将数据对象分配到最为相似的簇中。
AutoClass算法是EM算法使用贝叶斯聚类的变种算法。
COBWED和CLASSIT是基于概念聚类模型的算法。不仅可以得到聚类结果而且还可同时得到聚类的特征描述。
SOM(Self Organized Maps)是基于神经网络模型的算法。利用神经网络的思想来利用低维目标空间表示高维源空间中的对象。基于神经网络模型的方法现阶段还无法解决处理时间和数据复杂性二者的矛盾,无法应用于海量数据集。
优点:对”类“的划分不那么”坚硬“,而是以概率形式表现,每一类的特征也可以用参数来表达
缺点:执行效率不高,特别是分布数量很多并且数据量很少的时候
基于密度的聚类方法
(Density-based methods)
简单说画圈儿,其中要定义两个参数,一个是圈儿的最大半径,一个是一个圈儿里最少应容纳几个点。最后在一个圈里的,就是一个类。
基于密度的聚类方法不再使用距离来表示对象间的相似性,而是追求寻找那些被低密度区域分隔开的高密度对象区域,并将高密度对象区域作为簇来对待。基于密度的聚类方法一般使用密度阈值来作为划分簇的标准,当某一区域内的密度超过某一阐值就将它划分到与之临近的聚类中。不再使用距离来度量簇间的相似性,从而摆脱了使用距离度量相似性对聚类形状的依赖性,可以发现任意形状的聚类。
方法:DBSCAN、OPTICS、DENCLUE算法。
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)就是其中的典型,算法的核心思想是找出所有核心点、边界点、噪声点。去除噪声点,连接核心对象和它的邻域,进而形成稠密区域作为簇,该算法的好处在于可以有效处理数据集中的噪声点。
参数设置是个问题,对这两个参数的设置非常敏感。DBSCAN的扩展叫OPTICS(Ordering Points To Identify Clustering Structure)通过优先对高密度(high density)进行搜索,然后根据高密度的特点设置参数,改善了DBSCAN的不足。
该算法利用邻域密度将数据对象划分为核心对象和边界对象两类,并将同一簇内的对象划分为某个核心对象的直接密度可达对象和密度可达对象,而核心对象的邻域内的所有对象都为核心对象的直接密度可达对象。
优点: 可以获得任意形状的簇,并且可以有效的去除噪声
缺点:对输入参数较为敏感和易错误删除稀疏簇等问题。
以上是关于聚类算法概述的主要内容,如果未能解决你的问题,请参考以下文章