最新各种聚类算法介绍及对比
各种聚类算法的比较

各种聚类算法的比较聚类算法是一种将数据按照相似性分组的无监督学习方法。
在数据分析和机器学习中,聚类算法被广泛应用于数据挖掘、模式识别、图像处理等领域。
本文将介绍几种常见的聚类算法,并对它们进行比较。
1. K-means算法K-means算法是最常见的聚类算法之一,它将数据划分为K个集群,每个集群包含最接近其均值的数据点。
该算法迭代地更新集群的均值,直到满足收敛条件。
K-means算法简单、高效,适用于大型数据集。
然而,它对异常值和噪声敏感,并且对初始聚类中心的选择非常敏感。
2.层次聚类算法层次聚类算法是一种自底向上或自顶向下的聚类方法,它通过计算数据点之间的相似性构建一个聚类层次结构。
这种层次结构可以以树状图的形式表示,称为树状图聚类。
层次聚类算法的优点是不需要指定聚类个数,且能够处理任意形状的聚类。
然而,该算法的计算复杂度较高,并且对输入数据的规模和噪声敏感。
3.密度聚类算法密度聚类算法通过计算数据点周围的密度来确定聚类结构。
DBSCAN是最常见的密度聚类算法之一,它通过指定半径和邻域密度来定义聚类。
DBSCAN能够识别任意形状的聚类,并且对噪声和异常值具有较高的鲁棒性。
然而,密度聚类算法对参数的选择非常敏感,并且对高维数据和不同密度的聚类效果较差。
4.基于概率的聚类算法基于概率的聚类算法假设数据服从其中一种概率分布,并通过最大化似然函数来进行聚类。
GMM (Gaussian Mixture Model) 是一种常见的基于概率的聚类算法,它假设数据由多个高斯分布组成。
GMM算法能够分离具有不同协方差的聚类,适用于高维数据和非球状的聚类。
然而,该算法对初始参数的选择敏感,并且计算复杂度较高。
5.划分聚类算法划分聚类算法将数据划分为互斥的聚类,然后通过迭代地重新分配数据点来优化聚类质量。
PAM (Partitioning Around Medoids) 和CLARA (Clustering Large Applications)是常见的划分聚类算法。
各种聚类算法的优缺点

各种聚类算法的优缺点在机器学习领域中,聚类(cluster)是最基本的无监督学习问题之一。
聚类算法是指把具有相似性质的数据对象分组的算法,被广泛应用于数据挖掘、模式识别等领域。
本文将介绍几种常见的聚类算法、它们的优缺点,并与之间做出比较。
一、K-Means聚类算法K-Means算法又称为K均值算法,是最为普及的一种聚类算法。
该算法通过将 n 个对象分到 k 个类的方法来使每个数据对象都与所属类的均值最为接近。
K-Means聚类算法有以下优缺点:优点:1.简单、易于实现。
2.计算速度快。
缺点:1.需要预先设定数据类别数量,且对初始化比较敏感。
2.数据集分布不均匀或聚类类别的数量差别较大时,聚类效果较差。
二、层次聚类算法层次聚类算法是一种基于树形结构的聚类方法,可以得到不同类别的层次结构。
该算法的核心思想就是通过计算每个数据对象间的距离并逐步将他们聚合成层次结构。
层次聚类算法的优缺点如下:优点:1.可以帮助我们发现数据对象之间的内部关系和层次结构。
2.不需要预先设定聚类类别数量。
缺点:1.计算复杂度较高,不适合大规模数据集。
2.聚类的结果可能会很大,难以在可视化方面得到较好的展示效果。
三、DBSCAN聚类算法DBSCAN是基于密度的聚类算法。
该算法将具有密度连接的数据点视为一组,并且可以在其它密度较低的区域中选择单个数据点。
DBSCAN聚类算法的优缺点如下:优点:1.不需要预设聚类类别数量。
2.能够发现任意形态的聚类。
缺点:1.初始化比较敏感,对参数设置等因素较为敏感。
2.难以解决密度分布不均一、噪音点分布不规律的问题。
四、BIRCH聚类算法BIRCH算法是基于描述的聚类方法,是聚类中的层次算法。
BIRCH的全称是Balanced Iterative Reducing and Clustering using Hierarchies,它采用一种合并聚类方式,通过类的层次结构来简化聚类过程。
BIRCH聚类算法的优缺点如下:优点:1.该算法能够处理海量数据。
7种常用的聚类方法

7种常用的聚类方法K均值聚类是一种基于距离的聚类方法,它将数据点分成K个簇,每个簇都有一个代表性的点,称为质心。
该方法的优点是简单易懂,计算速度快,适用于大规模数据集。
然而,K均值聚类对初始质心的选择敏感,容易陷入局部最优解。
层次聚类是一种树状聚类方法,它通过不断合并最相似的簇来构建聚类树。
这种方法不需要事先指定聚类个数,且对初始值不敏感,但计算复杂度较高,不适用于大规模数据集。
密度聚类是一种基于密度的聚类方法,它将高密度区域划分为簇,并能够发现任意形状的簇。
该方法对噪声和离群点具有较好的鲁棒性,但对参数的选择较为敏感。
模型聚类是一种基于概率模型的聚类方法,它假设数据是由若干个概率分布生成的,并通过模型拟合来进行聚类。
这种方法可以很好地处理数据中的噪声和缺失值,但对数据分布的假设较为苛刻。
谱聚类是一种基于图论的聚类方法,它将数据点视为图中的节点,通过图的拉普拉斯矩阵来进行聚类。
谱聚类能够发现任意形状的簇,且对参数的选择较为鲁棒,但计算复杂度较高,不适用于大规模数据集。
基于网格的聚类是一种将数据空间划分为网格单元,然后在每个单元中进行聚类的方法。
这种方法适用于高维数据和大规模数据集,但对网格大小的选择较为敏感。
分布式聚类是一种将聚类过程分布在多台计算机上进行的方法,它能够处理大规模数据集,并能够并行计算,但需要考虑数据通信和同步的开销。
综上所述,不同的聚类方法适用于不同的数据特点和应用场景。
在选择聚类方法时,需要综合考虑数据规模、数据特征、计算资源等因素,以及对聚类结果的要求。
希望本文介绍的7种常用聚类方法能够为读者在实际应用中的选择提供一定的参考和帮助。
常见的六大聚类算法

常见的六大聚类算法六大常见的聚类算法包括K-means聚类算法、层次聚类算法、DBSCAN 算法、OPTICS算法、谱聚类算法和高斯混合模型聚类算法。
1. K-means聚类算法:K-means聚类算法是一种基于距离的聚类算法,它通过最小化数据点与聚类中心之间的欧氏距离来划分数据点。
算法的步骤如下:a.随机选择K个聚类中心。
b.将每个数据点分配到距离最近的聚类中心。
c.更新聚类中心为选定聚类的平均值。
d.重复步骤b和c直到聚类中心不再改变或达到最大迭代次数。
2.层次聚类算法:层次聚类算法是一种自底向上或自顶向下递归地将数据划分成不同的聚类的方法。
它通过计算数据点之间的距离或相似度来判断它们是否应该被合并到同一个聚类中。
算法的步骤如下:a.初始化每个数据点为一个单独的聚类。
b.计算两个最近的聚类之间的距离或相似度。
c.合并两个最近的聚类,形成一个新的聚类。
d.重复步骤b和c直到所有数据点都被合并到一个聚类中。
3.DBSCAN算法:DBSCAN(Density-Based Spatial Clustering of Applicationswith Noise)算法是一种基于密度的聚类算法,它通过寻找具有足够密度的数据点来划分聚类。
算法的步骤如下:a.随机选择一个未被访问的数据点。
b.如果该数据点的密度达到预设的阈值,则将其归为一个聚类,同时将其相邻且密度达到阈值的数据点添加到聚类中。
c.重复步骤a和b直到所有数据点都被访问。
4.OPTICS算法:OPTICS(Ordering Points To Identify the Clustering Structure)算法是一种基于密度的聚类算法,它通过将数据点按照密度排序来划分聚类。
算法的步骤如下:a.计算每个数据点的可达距离和局部可达密度。
b.根据可达距离和局部可达密度排序所有数据点。
c.根据可达距离和阈值划分聚类。
d.重复步骤b和c直到所有数据点都被访问。
(完整word版)各种聚类算法介绍及对比

一、层次聚类1、层次聚类的原理及分类1)层次法(Hierarchical methods)先计算样本之间的距离。
每次将距离最近的点合并到同一个类。
然后,再计算类与类之间的距离,将距离最近的类合并为一个大类。
不停的合并,直到合成了一个类。
其中类与类的距离的计算方法有:最短距离法,最长距离法,中间距离法,类平均法等。
比如最短距离法,将类与类的距离定义为类与类之间样本的最短距离。
层次聚类算法根据层次分解的顺序分为:自下底向上和自上向下,即凝聚的层次聚类算法和分裂的层次聚类算法(agglomerative和divisive),也可以理解为自下而上法(bottom-up)和自上而下法(top-down)。
自下而上法就是一开始每个个体(object)都是一个类,然后根据linkage寻找同类,最后形成一个“类”。
自上而下法就是反过来,一开始所有个体都属于一个“类”,然后根据linkage排除异己,最后每个个体都成为一个“类”。
这两种路方法没有孰优孰劣之分,只是在实际应用的时候要根据数据特点以及你想要的“类”的个数,来考虑是自上而下更快还是自下而上更快。
至于根据Linkage判断“类”的方法就是最短距离法、最长距离法、中间距离法、类平均法等等(其中类平均法往往被认为是最常用也最好用的方法,一方面因为其良好的单调性,另一方面因为其空间扩张/浓缩的程度适中)。
为弥补分解与合并的不足,层次合并经常要与其它聚类方法相结合,如循环定位。
2)Hierarchical methods中比较新的算法有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)。
各种聚类算法的比较

各种聚类算法的比较聚类算法是一种无监督学习方法,用于将样本划分为具有相似特征的不同组别。
在机器学习和数据挖掘中被广泛应用。
有许多不同的聚类算法可供选择,每个算法有其独特的优点和适用范围。
在本文中,我们将比较几种常用的聚类算法,以帮助选择最适合特定问题和数据集的算法。
1.K均值聚类算法:K均值算法是一种经典的聚类算法。
它将数据点分为K个不同的簇,使得同一簇内的数据点之间的距离尽可能小,不同簇之间的距离尽可能大。
该算法计算复杂度较低,适用于大数据集。
然而,该算法对初始聚类中心的选择非常敏感,并且只能处理数值型数据。
2.层次聚类算法:层次聚类算法通过计算数据点之间的相似性将它们逐步聚类成树状结构。
该算法不需要事先指定聚类个数,并且可以处理各种数据类型。
然而,该算法在处理大数据集时计算复杂度较高,并且结果的质量受到相似性度量的影响。
3.密度聚类算法:密度聚类算法使用数据点密度来识别簇。
该算法可以处理不规则形状的簇,并且对初始聚类中心的选择不敏感。
DBSCAN是一种常用的密度聚类算法。
然而,该算法对密度参数的选择敏感,并且在处理高维数据时效果可能不好。
4.基于模型的聚类算法:基于模型的聚类算法将数据点建模为一些概率分布的样本。
该算法可以处理不同形状和大小的簇,并且能够进行概率推断。
高斯混合模型(GMM)是一种常用的基于模型的聚类算法。
然而,该算法对模型的选择和参数估计比较困难。
5.谱聚类算法:谱聚类算法通过矩阵分解来对数据进行聚类。
该算法可以处理非线性可分的数据,并且不需要事先指定聚类个数。
然而,该算法在处理大数据集时计算开销较大,并且对相似度矩阵的构建方法敏感。
以上只是一些常见的聚类算法,实际上还有许多其他聚类算法可供选择,如affinity propagation、BIRCH、OPTICS等。
每种算法都有其独特的特点和适用范围。
在选择聚类算法时,需要考虑数据集的规模、维度、特征类型以及问题的特殊需求等因素。
数据挖掘常用聚类算法比较分析

数据挖掘常用聚类算法比较分析数据挖掘是从大量数据中发现有用信息的过程。
聚类是一种无监督学习的方法,用于将相似对象归类到同一组中。
在数据挖掘中,聚类算法常被应用于数据预处理、数据分析和模式识别等领域。
以下是常见的聚类算法的比较分析。
1. k-means算法:k-means算法是最常见和最简单的聚类算法之一、它的主要思想是将数据集分为k个簇,每个簇都有一个代表性的中心点。
算法通过迭代将数据点分配给最近的中心点,并更新中心点的位置,直到收敛。
k-means算法的优点是计算效率高,容易实现。
然而,它依赖于初始中心点的选择,对离群值敏感,且对于非球形簇表现较差。
2.层次聚类算法:层次聚类算法根据对象之间的相似度或距离构建聚类关系的层次结构。
这些算法包括凝聚聚类和分裂聚类。
凝聚聚类从每个对象作为单个簇开始,然后通过合并相似的簇来减少簇的数量,直到达到预定的聚类数。
分裂聚类从所有对象作为一个簇开始,然后通过分裂簇来增加簇的数量,直到达到预定的聚类数。
层次聚类算法的优点是不需要事先确定聚类数,且能够发现嵌套的簇结构。
然而,它的计算复杂度较高,尤其在处理大规模数据时。
3.密度聚类算法:密度聚类算法将聚类定义为高密度区域被低密度区域分隔的数据区域。
其中最有代表性的算法是DBSCAN(Density-Based Spatial Clusteringof Applications with Noise)。
DBSCAN通过定义半径和邻居数量来判断一个点是否为核心点、边界点或噪声点。
密度聚类算法的优点是能够发现任意形状和大小的簇,并且对离群值和噪声点具有较好的鲁棒性。
但它对于定义合适的参数和处理不同密度的簇比较敏感。
4.基于网格的聚类算法:基于网格的聚类算法将数据空间划分为一个网格结构,并在每个网格中聚集数据点。
其中最常用的算法是BIRCH(balanced iterative reducing and clustering using hierarchies)。
聚类8种方法

聚类8种方法聚类是一种无监督学习方法,它将数据集中的对象分成不同的组或簇,使得同一组内的对象相似度较高,而不同组之间的对象相似度较低。
聚类方法可以应用于各种领域,如数据挖掘、图像处理、生物信息学等。
本文将介绍8种常见的聚类方法。
1. K均值聚类K均值聚类是最常见的聚类方法之一。
它将数据集中的对象分成K 个簇,每个簇的中心点称为质心。
算法的过程是先随机选择K个质心,然后将每个对象分配到最近的质心所在的簇中,接着重新计算每个簇的质心,重复以上步骤直到质心不再改变或达到预设的迭代次数。
2. 层次聚类层次聚类是一种自下而上或自上而下的聚类方法。
它将数据集中的对象逐步合并成越来越大的簇,直到所有对象都被合并为一个簇或达到预设的簇数。
层次聚类有两种方法:凝聚聚类和分裂聚类。
凝聚聚类是自下而上的方法,它从每个对象开始,逐步合并成越来越大的簇。
分裂聚类是自上而下的方法,它从所有对象开始,逐步分裂成越来越小的簇。
3. DBSCAN聚类DBSCAN聚类是一种基于密度的聚类方法。
它将数据集中的对象分为核心点、边界点和噪声点三类。
核心点是在半径为ε内有至少MinPts个对象的点,边界点是在半径为ε内有少于MinPts个对象的点,但它是核心点的邻居,噪声点是既不是核心点也不是边界点的点。
DBSCAN聚类的过程是从任意一个未被访问的核心点开始,找到所有密度可达的点,将它们合并成一个簇,直到所有核心点都被访问。
4. 密度聚类密度聚类是一种基于密度的聚类方法,它将数据集中的对象分为不同的簇,每个簇的密度较高,而不同簇之间的密度较低。
密度聚类的过程是从任意一个未被访问的点开始,找到所有密度可达的点,将它们合并成一个簇,直到所有点都被访问。
5. 谱聚类谱聚类是一种基于图论的聚类方法。
它将数据集中的对象看作是图中的节点,将它们之间的相似度看作是边的权重。
谱聚类的过程是将相似度矩阵转换成拉普拉斯矩阵,然后对拉普拉斯矩阵进行特征值分解,得到特征向量,将它们作为新的特征空间,再用K均值聚类或其他聚类方法进行聚类。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
各种聚类算法介绍及对比------------------------------------------作者xxxx------------------------------------------日期xxxx一、层次聚类1、层次聚类的原理及分类1)层次法(Hierarchical methods)先计算样本之间的距离.每次将距离最近的点合并到同一个类。
然后,再计算类与类之间的距离,将距离最近的类合并为一个大类。
不停的合并,直到合成了一个类.其中类与类的距离的计算方法有:最短距离法,最长距离法,中间距离法,类平均法等.比如最短距离法,将类与类的距离定义为类与类之间样本的最短距离。
层次聚类算法根据层次分解的顺序分为:自下底向上和自上向下,即凝聚的层次聚类算法和分裂的层次聚类算法(agglomerative和d ivisive),也可以理解为自下而上法(bottom—up)和自上而下法(top—down)。
自下而上法就是一开始每个个体(object)都是一个类,然后根据linkage寻找同类,最后形成一个“类"。
自上而下法就是反过来,一开始所有个体都属于一个“类",然后根据linkage排除异己,最后每个个体都成为一个“类”。
这两种路方法没有孰优孰劣之分,只是在实际应用的时候要根据数据特点以及你想要的“类"的个数,来考虑是自上而下更快还是自下而上更快。
至于根据Linkage判断“类”的方法就是最短距离法、最长距离法、中间距离法、类平均法等等(其中类平均法往往被认为是最常用也最好用的方法,一方面因为其良好的单调性,另一方面因为其空间扩张/浓缩的程度适中).为弥补分解与合并的不足,层次合并经常要与其它聚类方法相结合,如循环定位。
2)Hierarchical methods中比较新的算法有BIRCH(Balanced Iterative Reducingand Clustering UsingHierarchies利用层次方法的平衡迭代规约和聚类)主要是在数据量很大的时候使用,而且数据类型是numerical。
首先利用树的结构对对象集进行划分,然后再利用其它聚类方法对这些聚类进行优化;R OCK(A Hierarchical Clustering Algorithmfor Categorical Attributes)主要用在categorical的数据类型上;Chameleon(A Hierarchical ClusteringAlgor ithm Using Dynamic Modeling)里用到的linkage是kNN(k—nearest-neighbor)算法,并以此构建一个graph,Chameleon的聚类效果被认为非常强大,比BIRCH好用,但运算复杂度很高,O(n^2)。
2、层次聚类的流程凝聚型层次聚类的策略是先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到所有对象都在一个簇中,或者某个终结条件被满足。
绝大多数层次聚类属于凝聚型层次聚类,它们只是在簇间相似度的定义上有所不同。
这里给出采用最小距离的凝聚层次聚类算法流程:(1)将每个对象看作一类,计算两两之间的最小距离;(2)将距离最小的两个类合并成一个新类;(3) 重新计算新类与所有类之间的距离;(4) 重复(2)、(3),直到所有类最后合并成一类。
聚类的效果如下图,黑色是噪音点:另外我们可以看出凝聚的层次聚类并没有类似基本K均值的全局目标函数,没有局部极小问题或是很难选择初始点的问题。
合并的操作往往是最终的,一旦合并两个簇之后就不会撤销。
当然其计算存储的代价是昂贵的。
3、层次聚类的优缺点优点:1,距离和规则的相似度容易定义,限制少;2,不需要预先制定聚类数;3,可以发现类的层次关系;4,可以聚类成其它形状缺点:1,计算复杂度太高;2,奇异值也能产生很大影响;3,算法很可能聚类成链状r语言中使用hclust(d, method = "complete”, members=NULL) :进行层次聚类。
d为距离矩阵;method表示类的合并方法,single最短距离法,complete最长距离法,median中间距离法,mcquitty相似法,average 类平均法,centroid 重心法,ward离差平方和法;members为NULL或d长度的矢量。
二、划分聚类法k-means基于划分的方法(Partition—based methods):其原理简单来说就是,想象你有一堆散点需要聚类,想要的聚类效果就是“类内的点都足够近,类间的点都足够远".首先你要确定这堆散点最后聚成几类,然后挑选几个点作为初始中心点,再然后依据预先定好的启发式算法(heuristic algorithms)给数据点做迭代重置(iterativerelocation),直到最后到达“类内的点都足够近,类间的点都足够远”的目标效果。
Partition-based methods聚类多适用于中等体量的数据集,但我们也不知道“中等”到底有多“中”,所以不妨理解成,数据集越大,越有可能陷入局部最小。
1、Kmeans算法的原理k—means算法以k为参数,把n个对象分成k个簇,使簇内具有较高的相似度,而簇间的相似度较低。
k—means算法的处理过程如下:首先,随机地选择k个对象,每个对象初始地代表了一个簇的平均值或中心,即选择K个初始质心;对剩余的每个对象,根据其与各簇中心的距离,将它赋给最近的簇;然后重新计算每个簇的平均值。
这个过程不断重复,直到准则函数收敛,直到质心不发生明显的变化.通常,采用平方误差准则,误差的平方和SSE作为全局的目标函数,即最小化每个点到最近质心的欧几里得距离的平方和。
此时,簇的质心就是该簇内所有数据点的平均值。
选择K个点作为初始质心repeat将每个点指派到最近的质心,形成K个簇重新计算每个簇的质心until 簇不发生变化或达到最大迭代次数时间复杂度:O(tKmn),其中,t为迭代次数,K为簇的数目,m为记录数,n为维数空间复杂度:O((m+K)n),其中,K为簇的数目,m为记录数,n为维数K—Means 算法的详细过程从上图中,我们可以看到,A,B, C, D, E 是五个在图中点.而灰色的点是我们的种子点,也就是我们用来找点群的点.有两个种子点,所以K=2.然后,K-Means的算法如下:①随机在图中取K(这里K=2)个种子点。
②然后对图中的所有点求到这K个种子点的距离,假如点Pi离种子点Si最近,那么Pi属于Si点群。
(我们可以看到A,B属于上面的种子点,C,D,E属于下面中部的种子点)③接下来,我们要移动种子点到属于他的“点群”的中心。
(见图上的第三步)④然后重复第2)和第3)步,直到,种子点没有移动(我们可以看到图中的第四步上面的种子点聚合了A,B,C,下面的种子点聚合了D,E)。
聚类的效果如下图,折线是历次循环时3个簇的质心的更新轨迹,黑点是初始质心:我们查看基本K均值算法实现步骤及上面的聚类效果可以发现,该聚类算法将所有数据点都进行了指派,不识别噪音点。
另外选择适当的初试质心是基本K均值过程的关键.2、k均值的优缺点及分类优点:1,简单,易于理解和实现;2,时间复杂度低缺点:1)kmeans要手工输入类数目,对初始值的设置很敏感;所以有了k-means++、intelligent k-means、genetic k-means;2)k-means对噪声和离群值非常敏感,所以有了k—medoids 和k—medians;3)k—means只用于numerical类型数据,不适用于categoric al类型数据,所以k-modes;4)k—means不能解决非凸(non—convex)数据,所以有了kernel k-means。
5)k—means主要发现圆形或者球形簇,不能识别非球形的簇。
3、k-means与DBSCAN的区别k—means聚类算法的初始点选择不稳定,是随机选取的,这就引起聚类结果的不稳定。
k—means属于动态聚类,往往聚出来的类有点圆形或者椭圆形。
kmeans对于圆形区域聚类效果较好,dbscan基于密度,对于集中区域效果较好。
对于不规则形状,kmeans完全无法用,dbscan可以起到很好的效果。
4、k—means注意问题1)K如何确定kmenas算法首先选择K个初始质心,其中K是用户指定的参数,即所期望的簇的个数。
这样做的前提是我们已经知道数据集中包含多少个簇,但很多情况下,我们并不知道数据的分布情况,实际上聚类就是我们发现数据分布的一种手段。
如何有效的确定K值,这里大致提供几种方法:①与层次聚类结合[2]经常会产生较好的聚类结果的一个有趣策略是,首先采用层次凝聚算法决定结果粗的数目,并找到一个初始聚类,然后用迭代重定位来改进该聚类。
②稳定性方法[3]稳定性方法对一个数据集进行2次重采样产生2个数据子集,再用相同的聚类算法对2个数据子集进行聚类,产生2个具有k个聚类的聚类结果,计算2个聚类结果的相似度的分布情况。
2个聚类结果具有高的相似度说明k个聚类反映了稳定的聚类结构,其相似度可以用来估计聚类个数。
采用次方法试探多个k,找到合适的k值.③系统演化方法[3]系统演化方法将一个数据集视为伪热力学系统,当数据集被划分为K个聚类时称系统处于状态K。
系统由初始状态K=1出发,经过分裂过程和合并过程,系统将演化到它的稳定平衡状态Ki,所对应的聚类结构决定了最优类数Ki.系统演化方法能提供关于所有聚类之间的相对边界距离或可分程度,适用于明显分离的聚类结构和轻微重叠的聚类结构.④使用canopy算法进行初始划分[4]基于Canopy Method的聚类算法将聚类过程分为两个阶段Stage1、聚类最耗费计算的地方是计算对象相似性的时候,Canopy Method在第一阶段选择简单、计算代价较低的方法计算对象相似性,将相似的对象放在一个子集中,这个子集被叫做Canopy ,通过一系列计算得到若干Canopy,Canopy之间可以是重叠的,但不会存在某个对象不属于任何Canopy的情况,可以把这一阶段看做数据预处理;Stage2、在各个Canopy 内使用传统的聚类方法(如K-means),不属于同一Canopy 的对象之间不进行相似性计算。
从这个方法起码可以看出两点好处:首先,Canopy 不要太大且Canopy之间重叠的不要太多的话会大大减少后续需要计算相似性的对象的个数;其次,类似于K—means这样的聚类方法是需要人为指出K的值的,通过Stage1得到的Canopy个数完全可以作为这个K值,一定程度上减少了选择K的盲目性。