聚类算法总结 划分法,层次聚类,基于网格,基于密度,谱聚类,基于模型,模糊聚类

划分法:

K-means:随机选择k个类的初始中心,对每一个样本都求解到k个中心点的距离,将它归类到距离最短的中心所在的类别。通过计算与类别内样本平均距离最小的点作为新的中心点。直到类别的聚类中心点不发生变化

算法的时间复杂度是O(nkt),n是所有对象的数目,k是簇的数目,t是迭代的次数,这个算法是局部收敛的。

它找到的是使平方误差函数值最小的k个划分,当簇是密集的,球状的时候,聚类效果比较好。


特点:当噪声点比较多的时候,会对均值产生极大影响。需要事先确定k,会随机选择初始点为质心,计算每一个样本与质心之间的相似度j

K-medoids:

K中心点与K均值的不同点在于中心点的选取,在 k-means 中,将中心点取为当前 cluster 中所有数据点的平均值,在 k-medoids 中,将中心点的选取限制在当前 cluster 所包含的数据点的集合中。换句话说,在 k-medoids 算法中,我们将从当前 cluster 中选取这样一个点——它到其他所有(当前 cluster 中的)点的距离之和最小——作为中心点。

K中心点特点:

不容易受到那些由于误差之类的原因产生的脏数据的影响,一般只适合小数据量。

层次聚类

凝聚和分裂采用自下而上和自上而下策略把对象组织到层次结构,

凝聚方法从每个对象作为一个集合开始,迭代的合并这些集合,形成更大的集合。与此相反,分裂方法开始将所有给定的对象放入同一个集合中,迭代的分裂集合,形成较小的集合。

如果需要,计算邻近度矩阵

(2)Repeat

(3)合并最接近的两个簇

(4)更新邻近度矩阵,以反映新的簇与原来的簇之间的邻近性

(5)Until 仅剩下一个簇

邻近性度量:
(1)单链(MIN):邻近度定义为两个簇中任意两点之间的最短距离。擅长处理非椭圆形状的簇,对噪声和离群点很敏感。
(2)全链(团,MAX):邻近度定义为两个簇中任意两点之间的最长距离。
偏好球形簇,对噪声和离群点不太敏感,可能使大的簇破裂。
(3)组平均:两个簇的邻近度定义为不同簇的所有点对邻近度的平均值。是介于单链和全链之间的折中方法。
 
簇 和 的邻近度, 和 分别为簇 和 的大小。
(4)Ward方法(离差平方和法):两个簇的邻近度定义为两个簇合并时导致的平方误差的增量。目标函数与k均值相同。
 
 为簇的个数, 为第k个簇的平均值, 为第k个簇中对象的个数。

(5)质心方法:通过计算簇质心之间的距离来计算两个簇之间的邻近度。


凝聚层次聚类算法特点:

    可以产生较高质量的聚类,受限于数据集的大小,且所有合并是最终的。

    R中凝聚层次聚类算法实现:在cluster包中有该算法实现,具体方法

            ——hclust()

            ——agnes()


基于密度的聚类算法

基于密度的方法(density-based methods),基于密度的方法与其它方法的一个根本区别是:它不是基于各种各样的距离的,而是基于密度的。这样就能克服基于距离的算法只能发现“类圆形”的聚类的缺点。基于密度的聚类寻找被低密度区域分离的高密度区域。

这个方法的指导思想就是,只要一个区域中的点的密度大过某个阈值,就把它加到与之相近的聚类中去。

    DBSCAN是一种简单、有效的基于密度的聚类算法。

DBSCAN使用基于中心的方法,数据集中特定点的密度通过对该点Eps 半径之内的点计数。
核心点:这些点在基于密度的簇内部。如果某点的给定邻域(Eps)内的点的个数超过给定的阈值MinPts,则该点为核心点。
边界点:边界点不是核心点,但它落在某个核心点的邻域内。

噪声点:噪声点是既非核心点也非边界点的任何点。

    DBSCAN不能很好反映高尺寸数据;不能很好反映数据集变化的密度;对于高维数据,点之间极为稀疏,密度就很难定义了。


基于网格的聚类算法

该方法是一种使用多分辨率的网络数据结构。它将对象空间量化为有限数目的单元,这些单元形成了网络结构,所有的聚类操作都在该结构上进行。这种方法的主要优点处理速度快,其处理的时间独立于数据对象数,而仅依赖于量化空间中每一维的单元数。


算法基本思想:将每个属性的可能值分割成许多相邻的区间,创建网格单元的集合。每个对象落入一个网格单元,网格单元对应的属性区间包含该对象的值。

    基于网格的聚类算法

算法:基于网格的聚类算法

(1)定义一个网格单元

(2)将对象指派到合适的单元,并计算每个单元的密度

(3)删除密度低于指定的阈值的单元

(4)由邻近的稠密单元形成簇

连续属性离散化可以等宽区间,也可以等频率离散化,此处的阈值十分重要,阈值过大会丢失簇的部分,过小会让不同的簇合并,该算法不适用于高维数据——微阵列。

CLIQUE算法(综合了基于密度和基于网格的算法)
  CLIQUE算法即自动子空间聚类算法。该算法利用自顶向上方法求出各个子空间的聚类单元。CLUQUE算法主要用于找出在高维数据空间中存在的低维聚类。为了求出d维空间聚类,必须组合给出所有d-1维子空间的聚类,导致其算法的空间和时间效率都较低,而且要求用户输入两个参数:数据取值空间等间隔 距离和密度阔值。这2个参数与样本数据紧密相关,用户一般难以确定。CLIQUE算法对数据输人顺序不敏感。

CLIQUE算法特点:

发现的聚类类型是凸形或是球形,对脏数据或异常数据的敏感性一般,对数据输入顺序不敏感。

基于图论的聚类算法

该方法中,利用图论相关算法解决聚类问题,将聚类问题转换成组合优化问题,其基本思想是迭代的删除最长的边,且并不需要相似度计算,简化计算,节省时间,然后求解优化问题。


谱聚类算法特点:

实现简单,不会陷入局部最优解,对参数敏感,时间和空间复杂度大


六、基于模型的聚类算法
基于模型的方法(model-based methods),基于模型的方法给每一个聚类假定一个模型,然后去寻找能够很好的满足这个模型的数据集。这样一个模型可能是数据点在空间中的密度分布函数或者其它。它的一个潜在的假定就是:目标数据集是由一系列的概率分布所决定的。
(6.1)EM算法
EM(期望最大化)算法通过不断改变簇属性值的隶属度来获得逐步优化的簇。1997 年,Mitchell 等人提出。
EM算法:
算法:EM算法
(1)选择模型参数的初始集(随机选择)
(2)Repeat
(3)期望步:对于每个对象,计算每个对象属于每个分布的概率,即计算 
 
 
(4)最大化步:给定期望步得到的概率,找出最大化该期望似然的新的参数估计。
 
(5)Until参数不再变化
其中, 是第j个分布产生一个对象的概率, 是对象 来自第j个分布的概率,K个分布,m个对象, 是第j个分布的参数, 是所有参数的集合。
EM算法特点:
可以使用合适的统计模型来捕获潜在簇,并且非常简洁,广泛应用于处理数据挖掘和统计学中的学习问题。然而,EM算法可能收敛不到最优解,而是收敛到局部极大点。
EM算法针对不同模型,高斯混合模型可以看成EM算法的一个现实中的应用。并且它的R实现:在mclust包中有该算法的实现——Mclust()
(高斯混合模型就是用高斯概率密度函数(正态分布曲线)精确地量化事物,它是一个将事物分解为若干的基于高斯概率密度函数(正态分布曲线)形成的模型。
所谓混合高斯模型(GMM)就是指对样本的概率密度分布进行估计,而估计采用的模型(训练模型)是几个高斯模型的加权和(具体是几个要在模型训练前建立好)。每个高斯模型就代表了一个类(一个Cluster)。对样本中的数据分别在几个高斯模型上投影,就会分别得到在各个类上的概率。然后我们可以选取概率最大的类所为判决结果。

    从中心极限定理的角度上看,把混合模型假设为高斯的是比较合理的,当然,也可以根据实际数据定义成任何分布的Mixture Model,不过定义为高斯的在计算上有一些方便之处,另外,理论上可以通过增加Model的个数,用GMM近似任何概率分布。)


(6.2)自组织映射SOM算法
SOM的目标是发现质心的集合(参考向量),并将数据集中的每个对象指派到提供该对象最佳近似的质心。
与增量K均值一样,每次处理一个数据对象并更新最近的质心,不同之处在于SOM赋予质心地形序,而且更新附近的质心。
基本SOM算法:
算法:基本SOM算法
(1)初始化质心
(2)Repeat
(3)     选择下一个对象
(4)     确定到该对象最近的质心
(5)     更新该质心和附近的质心,即在一个特定邻域内的质心
(6)Until质心改变不多或超过某个阈值
(7)指派每个对象到最近的质心,并返回簇和质心
SOM算法特点:
二维SOM可以建立各种量与关联每个质心(簇)的网格点的联系,并通过各种类型的图显示结果。例如,绘制与每个簇相关联的点数将揭示点和簇之间分布的图;SOM将相邻关系强加到结果集上,因此互为邻居的簇之间比非邻居的簇之间更相关。这种联系有助于聚类结果的解释和可视化,因此SOM应用于基因阵列数据。
但它也有一些局限性:用户必须选择参数,邻域函数,网格类型和质心个数;一个SOM簇通常并不对应于单个自然簇:当自然簇的大小、形状和密度不同时,SOM趋向于分裂或合并它们;SOM缺乏具体的目标函数:比较不同SOM聚类的结果是困难的;SOM不能保证收敛,但它通常收敛。
    R中SOM算法实现:在som包中有该算法实现,具体方法
            ——som() 

你可能感兴趣的:(聚类算法总结 划分法,层次聚类,基于网格,基于密度,谱聚类,基于模型,模糊聚类)