ML随记之聚类算法整理总结(各类聚类算法比较+聚类算法选取衡量标准)

- 聚类算法的分类
- 衡量聚类算法优劣的标准:
(1)算法的处理能力:算法复杂度、噪声处理、任意形状处理、有间隙的嵌套数据的能力;
(2)是否需要预设条件:聚类个数、初始中心点、启发式规则等等;
(3)数据输入属性:数据输入顺序;数据维数;数据类型等等;

聚类分析的算法可以分为划分法(Partitioning Methods)、层次法(Hierarchical Methods)、基于密度的方法(density-based methods)、基于网格的方法(grid-based methods)、基于模型的方法(Model-Based Methods)以及其他聚类方法


划分法:

  • 核心思想:给定一个有N个元组或者纪录的数据集,分裂法将构造K个分组,每一个分组就代表一个聚类,K
  • 大白话解释:拿到一堆散点,首先确定散点要分成多少类,然后挑选几个点作为初始中心点,再根据启发式算法不断迭代,达到“类内点距离足够近、类外点距离足够远”的效果。最经典的算法就是K近邻。
  • 主要算法:K-MEANS、K-MEDOIDS、CLARANS,k-prototypes、k-modes、CLARA、Focused CLARAN、PCM等。
  • 优点:简单、可解释,易实现;时间复杂度低。
  • 缺点:需要手工设置类的数量和初始中心点,如果设置不好容易影响聚类效果和聚类速度,(改进算法:k-means++、intellegent k-means、 genetic k-means);对噪声敏感,(改进算法:k-modoids、k-medians);只适合numerical类型数据,不适合categorical类型数据,(改进算法:k-modes);不能解决非凸数据,(改进算法:kernel k-means);主要发现圆形或球形簇,不能识别非球形的簇。
  • 算法流程:K近邻
    1. 随机地选择k个对象,每个对象初始地代表了一个簇的中心;

    2. 对剩余的每个对象,根据其与各簇中心的距离,将它赋给最近的簇;

    3. 重新计算每个簇的平均值,更新为新的簇中心;

    4. 不断重复2、3,直到准则函数收敛。


层次法:

  • 核心思想:对给定的数据集进行层次似的分解,直到某种条件满足为止。分为“自底向上”和“自顶向下”。,在“自底向上”方案中,初始时每一个数据纪录都组成一个单独的组,在接下来的迭代中,它把那些相互邻近的组合并成一个组,直到所有的记录组成一个分组或者某个条件满足为止。

  • 大白话解释:之前把所有的样本点都看成一个类,然后计算每个点之间的欧氏距离,然后把距离最近的两个点聚成一个新类,然后继续计算新类之间的距离,不停迭代,直到达到聚类数的要求。(自顶向下则是一开始开成一个类,然后不断排除异己的过程)

  • 主要算法:AGNES算法、BIRCH算法、CURE算法、CHAMELEON算法、CURE、ROCK、SBAC、BUBBLE、BUBBLE-FM等。

  • 优点:与其他的聚类算法比较,不需要提前指定随机的中心点,能有效的对初始样本进行聚类;距离和规则的相似度容易定义,限制少;可以发现类的层次关系;可以聚类成任意形状;

  • 缺点:需要指定聚类数k或者终止条件。(可以在随用其他聚类方法前先用层次聚类的方法确定初始的聚类点);计算复杂度高;奇异值会产生很大影响;可能会聚类成链状;
    #优缺点针对K-近邻。

  • 算法流程:

    1. 将每个对象看作一类,计算两两之间的最小距离;

    2. 将距离最小的两个类合并成一个新类;

    3. 重新计算新类与所有类之间的距离;

    4. 重复2、3,直到所有类最后合并成一类


基于密度的方法:

  • 核心思想:假设聚类结构能通过样本分布的紧密程度确定。基于密度进行聚类,而不是距离。只要一个区域中的点的密度大过某个阈值,就把它加到与之相近的聚类中去。最经典的算法是DBSCAN算法。
  • 大白话解释:用一些圆圈把一堆散点给分开,需要定义两个参数,一个是圈的半径,另一个是圈里最少要有多少个点。
  • 主要算法:DBSCAN算法、OPTICS算法、DENCLUE算法、GDBSCAN、DBLASD、FDC。
  • 优点:不需要事先确定类的数量;可以发现任意形状的簇;可以识别出噪声点;对样本顺序不敏感。
  • 缺点:不能很好反应高尺寸数据;不能很好反应数据集变化的密度;很难定义高维稀疏数据的密度。
  • 参数敏感改进:OPTICS(Ordering Points To Identify Clustering Structure)
  • 算法流程:DBSCAN流程
    1. 从任一对象点p开始;
    2. 寻找并合并核心p对象直接密度可达(eps)的对象;
    3. 如果p是一个核心点,则找到了一个聚类,如果p是一个边界点(即从p没有密度可达的点)则寻找下一个对象点;
    4. 重复2、3,直到所有点都被处理

图论聚类法

  • 核心思想:把待分类的对象想x1,x2,x3,x4……看做一个全连接无向图G=[X,E]中的节点,然后给每一条边赋值,计算任意两点之间的距离(例如欧氏距离)定义为边的权值。并生成最小支撑树,设置阈值将对象进行聚类分析。
  • 大白话解释:迭代的删除最长的边,且并不需要相似度计算,简化计算,节省时间,然后求解优化问题。相当于图的分割问题。
  • 主要算法:谱聚类
  • 优点:实现简单、不会陷入局部最优易于处理局部数据特征。
  • 缺点:参数敏感、时间和空间复杂度大。
  • 算法流程
  1. 利用prim算法构造最小支撑树。
  2. 给定一个阈值r,在最小支撑树中移除权值大于阈值的边,形成森林。
  3. 森林中包含剩下的所有的树。
  4. 每棵树视为一个聚类。

基于网格的方法:

  • 核心思想:将数据空间划分成为有限个单元(cell)的网格结构,所有的处理都是以单个的单元为对象的,计算每个单元的密度。根据预设的阈值判断每个网格单元是否为高密度单元,由邻近的稠密单元组形成”类“。

  • 大白话解释:/

  • 主要算法:STING算法、CLIQUE算法、WAVE-CLUSTER算法;

  • 优点:处理速度快(因为与数据对象的个数无关,只依赖于单元的个数)

  • 缺点:参数敏感;不能处理不规则分布数据;维数灾难;算法效率的提升以牺牲聚类精确度为代价。
    #可以与基于密度的算法结合使用。

  • 算法流程
    1、 划分网格

    2、 使用网格单元内数据的统计信息对数据进行压缩表达

    3、 基于这些统计信息判断高密度网格单元

    4、 最后将相连的高密度网格单元识别为簇


基于模型的方法:

  • 核心思想:给每一个聚类假定一个模型(主要是概率模型和神经网络模型),然后去寻找能够很好的满足这个模型的数据集。这样一个模型可能是数据点在空间中的密度分布函数或者其它。它的一个潜在的假定就是:目标数据集是由一系列的概率分布所决定的。

  • 大白话解释:用概率或者神经网络训练的方式去寻找合适的分类,提高了模型灵活性。
    概率模型主要是指概率生成模型,同一”类“的数据属于同一种概率分布,即假设数据是根据潜在的概率分布生成的,最经典的方法是高斯混合模型GMM。神经网络模型主要指SOM(Self Organized Maps)。

  • 主要算法:统计的方案(COBWeb、CLASSIT、AutoClass)和神经网络的方案(SOM)。

  • 优点:模糊类别,以概率形式和类内特征表达簇;

  • 缺点:执行效率低,尤其是分布多数据少的时候。

  • 算法流程:
    1、 网络初始化,对输出层每个节点权重赋初值;
    2、 将输入样本中随机选取输入向量,找到与输入向量距离最小的权重向量;
    3、定义获胜单元,在获胜单元的邻近区域调整权重使其向输入向量靠拢;
    4、 提供新样本、进行训练;
    5、收缩邻域半径、减小学习率、重复,直到小于允许值,输出聚类结果。


基于模糊的聚类(FCM模糊聚类)

  • 核心思想:(用模糊数学的方法进行聚类分析,是一种以隶属度来确定每个数据点属于某个聚类程度的算法),样本以一定的概率属于某个类。

  • 大白话解释:每个点不一定要属于某个具体的类别。例:点m属于类别A的概率为0.2,属于类别B的概率为0.6,属于类别C的概率为0.2。

  • 优点:对满足正态分布的数据聚类效果会很好;对孤立点敏感;

  • 缺点:算法的性能依赖于初始聚类中心;不能确保能够收敛到最优解;(解决办法:用其他快速算法确定初始聚类中心或用不同的中心点多次运行FCM)

  • 改进算法:模糊C均值(简称FCM)聚类算法是HCM聚类算法的改进。

  • 算法流程

  • 1、 标准化数据矩阵;

    2、 建立模糊相似矩阵,初始化隶属矩阵;

    3、 算法开始迭代,直到目标函数收敛到极小值;

    4、 根据迭代结果,由最后的隶属矩阵确定数据所属的类,显示最后的聚类结果。


其他聚类方法:基于约束、核聚类、量子聚类、其他算法

基于约束的方法:

  • COD(Clustering with Ob2structed Distance):用两点之间的障碍距离取代了一般的欧氏距离来计算其间的最小距离。

核聚类方法:利用Mercer核,增加样本特征的优化,把输入空间的样本映射到高维特征空间,并在高维特征空间进行聚类。
论文:核聚类算法,张莉等2002计算机学报。

量子聚类:借用薛定谔方程的形式(使用了势能算符和动能算符)《Algorithm for Data Clustering in Pattern Recognition Problems Based on Quantum Mechanics》David Horn et al.

其他算法

  • CLIQUE算法:自动子空间聚类算法——综合了基于密度和基于网格的算法。
    特点:对数据输入顺序不敏感;发现的聚类类型是凸形或球形;对噪声敏感程度一般。

参考:
1、https://baike.baidu.com/item/聚类算法/1252197?fr=aladdin
2、https://blog.csdn.net/changyuanchn/article/details/80850192
3、https://blog.csdn.net/abc200941410128/article/details/78541273
4、各类型具体聚类算法对比参考:http://blog.chinaunix.net/uid-10289334-id-3758310.html

你可能感兴趣的:(算法整理总结,整理总结,ML)