精华内容
下载资源
问答
  • 层次聚类定义、层次聚类过程可视化、簇间距离度量、BIRCH、两步聚类、BIRCH算法优缺点
    2021-06-06 12:04:10

    层次聚类定义、层次聚类过程可视化、簇间距离度量、BIRCH、两步聚类、BIRCH算法优缺点

    目录

    更多相关内容
  • 层次聚类和Kmeans

    2020-12-21 20:56:12
    文章目录层次聚类层次聚类流程层次聚类优缺点Kmeans聚类Kmeans聚类流程K-Means的优缺点 层次聚类 层次聚类流程 (1) 计算两两样本之间的距离; (2) 将距离最小的两个类合并成一个新类; (3) 重新计算新类与所有类之间...
  • 层次聚类: 优点: 1,距离和规则的相似度容易定义,限制少; 2,不需要预先制定聚类数; 3,可以发现类的层次关系; 4,可以聚类成其它形状 缺点: 1,计算复杂度太高; 2,奇异值也能产生很大影响; 3,算法很可能...

    k-means:

    优点:
    1,简单,易于理解和实现;
    2,时间复杂度低
    缺点:
    1,需要对均值给出定义,
    2,需要指定要聚类的数目;
    3,一些过大的异常值会带来很大影响;
    4,算法对初始选值敏感;
    5,适合球形聚类

    层次聚类:

    优点:
    1,距离和规则的相似度容易定义,限制少;
    2,不需要预先制定聚类数;
    3,可以发现类的层次关系;
    4,可以聚类成其它形状

    缺点:
    1,计算复杂度太高;
    2,奇异值也能产生很大影响;
    3,算法很可能聚类成链状

    密度聚类
    优点:
    1, 可以对任意形状的稠密数据集进行聚类,相对的,K-Means之类的聚类算法一般只适用于凸数据集。
    2、 可以在聚类的同时发现异常点,对数据集中的异常点不敏感。
    3、聚类结果没有偏倚,相对的,K-Means之类的聚类算法初始值对聚类结果有很大影响。
    缺点:
    1、如果样本集的密度不均匀、聚类间距差相差很大时,聚类质量较差,这时用DBSCAN聚类一般不适合。
    2、如果样本集较大时,聚类收敛时间较长,此时可以对搜索最近邻时建立的KD树或者球树进行规模限制来改进。
    3、 调参相对于传统的K-Means之类的聚类算法稍复杂,主要需要对距离阈值ϵ,邻域样本数阈值MinPts联合调参,不同的参数组合对最后的聚类效果有较大影响。

    展开全文
  • 层次聚类

    2019-07-11 09:03:29
    层次聚类方法对给定的数据集进行层次的分解,直到满足某种条件为止,传统的层次聚类算法主要分为两大类算法: 凝聚的层次聚类:AGNES算法(AGglomerative NESting )==>采用自底向上的策略。 最初将每个对象作为一...

    层次聚类方法对给定的数据集进行层次的分解,直到满足某种条件为止,传统的层次聚类算法主要分为两大类算法:

    凝聚的层次聚类:AGNES算法( AGglomerative NESting )==>采用自底向上的策略。 最初将每个对象作为一个簇,然后这些簇根据某些准则被一步一步合并,两个簇间的距离可以由这两个不同簇中距离最近的数据点的相似度来确定;聚类的合并过程反复进行直到所有的对象满足簇数目。

    分裂的层次聚类:DIANA算法(DIvisive ANALysis)==>采用自顶向下的策略。首先将所有对象置于一个簇中,然后按照某种既定的规则逐渐细分为越来越小的簇(比如最大的欧式距离),直到达到某个终结条件(簇数目或者簇距离达到阈值)。

    传统层次聚类的优缺点:简单,理解容易,但合并点/分裂点选择不太容易、合并/分类的操作不能进行撤销、大数据集不太适合、执行效率较低O(t*n 2 ),t为迭代次数,n为样本点数。

    AGNES算法中簇间距离:

    最小距离(SL聚类)
    两个聚簇中最近的两个样本之间的距离(single/word-linkage聚类法)最终得到模型容易形成链式结构
    最大距离(CL聚类)
    两个聚簇中最远的两个样本的距离(complete-linkage聚类法)如果存在异常值,那么构建可能不太稳定
    平均距离(AL聚类)
    两个聚簇中样本间两两距离的平均值(average-linkage聚类法)
    两个聚簇中样本间两两距离的中值(median-linkage聚类法)

    展开全文
  • 聚类算法总结 - 优缺点对比

    万次阅读 多人点赞 2019-08-27 09:55:19
    聚类算法是一种无监督的算法,由于不需要训练集,算法简单快速,引用在一些工程里比较简单突出,今天来了解一下聚类算法。 k-means算法(k均值算法) 算法步骤: (1)随机选取 K 个点,作为 K 类的聚类中心,用 ...

    前言

    聚类算法是一种无监督的算法,由于不需要训练集,算法简单快速,引用在一些工程里比较简单突出,今天来了解一下聚类算法。

    k-means算法(k均值算法)

    算法步骤:

    • (1)随机选取 K 个点,作为 K 类的聚类中心,用 K i K_i Ki表示

    • (2)遍历所有的数据点 P j P_j Pj,通过计算距离,找到距离 P j P_j Pj 最近的聚类中心点 K i K_i Ki,此时可以说第 j 个数据属于第 i 类

    • (3)分别计算第 i 类的所有数据的中心点,作为该类的新的聚类中心点。

    • (4)重复进行(2)(3)步骤。直到每一类的聚类中心不再发生变化

    从算法中我们需要确定以下几个标准:

    • k值的确定,我们必须确定我们算法中需要分几类
    • 计算距离公式,这个公式我们可以利用欧式距离来计算,
    • 聚类中心的计算:因为要不断更新聚类中心点,需要一个更新策略来更新
    优点
    • k-平均算法是解决聚类问题的一种经典算法,算法简单、快速。
    • 对处理大数据集,该算法是相对可伸缩的和高效率的,因为它的复杂度大约是 O ( n k t ) O(nkt) O(nkt),其中n是所有对象的数目,k是簇的数目,t是迭代的次数。通常k<<n。这个算法经常以局部最优结束。
    • 算法尝试找出使平方误差函数值最小的k个划分。当簇是密集的、球状或团状的,而簇与簇之间区别明显时,它的聚类效果很好。
    缺点
    • 对 K 值敏感。也就是说,K 的选择会较大程度上影响分类效果。在聚类之前,我们需要预先设定 K 的大小,但是我们很难确定分成几类是最佳的,比如上面的数据集中,显然分为 2 类,即K = 2 最好,但是当数据量很大时,我们预先无法判断。

    • 对离群点和噪声点敏感。如果在上述数据集中添加一个噪音点,这个噪音点独立成一个类。很显然,如果 K = 2,其余点是一类,噪音点自成一类,原本可以区分出来的点被噪音点影响,成为了一类了。如果 K = 3,噪音点也是自成一类,剩下的数据分成两类。这说明噪音点会极大的影响其他点的分类。

    • 初始聚类中心的选择。K-means 是随机选择 K 个点作为初始的聚类中心。但是,我们可以对这个随机性进行一点约束,使迭代速度更快。举个例子,如果上面的数据集我随机选择了(0,0)和(1,0)两个点,或者选择了(1.5,1.5)和(9,9)两个点,即可以加快迭代速度,也可以避免陷入局部最优。

    • 只能聚凸的数据集。所谓的凸数据集,是指集合内的每一对点,连接两个点的直线段上的每个点也在该集合内。通俗讲就是K-means 聚类的形状一般只能是球状的,不能推广到任意的形状,但是有研究表明,若采用 Bregman 距离,则可显著增强此类算法对更多类型簇结构的适用性

    改进
    • 针对K值的选择问题,主要是 K 的值必须认为预先设定,并且在整个算法执行过程中无法更改。此时,可以利用 ISODATA 算法:当属于某个类别的样本数过少,就将这个类别剔除;当属于这个类别的样本过多、分散程度很大的时候,就将这个类别分为两个子类,此时 K 也就会 + 1了,一些说明:虽然有很多启发式用于自动确定 k 的值,但是实际应用中,最常用的仍然是基于不同的 K 值,多次运行取平均值(周志华 《机器学习》书 P218)

    • 针对离群点和噪声点,我们可以使用一些算法,比如 RANSAC 、LOF 等剔除离群点。此外,基于 K-means 的改进算法有 k-medoids 和 k-medians

    • 对于初始聚类中心点的问题,K-means ++ 不再随机选择 K 个聚类中心:假设已经选取了 m 个聚类中心( 0 < m < K),m = 1时,随机选择一个聚类中心点;在选取第 m+1 个点的时候,距离当前 m 个聚类中心点的中心越远的点,越会以更高的概率被选为第 m+1 个聚类中心。这种方法在一定程度上可以让“随机”选择的聚类中心点的分布更均匀。此外还有 canopy 算法等。

    • K-means 是使用欧式距离来测量,显然,这种度量方式并不适合于所有的数据集。换句话说,K-means 比较适合聚那些球状的簇。参照 SVM 中核函数的思想,将样本映射到另外一个特征空间,就可以改善聚类效果。代表算法是;kernel K-means

    DBSCAN算法:基于密度的聚类算法

    算法流程:

    • 以每一个数据点 x i x_i xi为圆心,以 eps值 为半径画一个圆圈。这个圆圈被称为 x i x_i xi eps 邻域

    • 对这个圆圈内包含的点进行计数。
      (1) 如果一个圆圈里面的点的数目超过了密度阈值 MinPts,那么将该圆圈的圆心记为核心点,又称核心对象。
      (2) 如果某个点的 eps 邻域内点的个数小于密度阈值但是落在核心点的邻域内,则称该点为边界点
      (3) 既不是核心点也不是边界点的点,就是噪声点

    • 核心点 x i x_i xi的 eps 邻域内的所有的核心点连在一起,这样不断的将区域内的核心点连在一起,核心点的区域内又有核心点相当于从 x 1 x_1 x1 - > x 2 x_2 x2 - > . . . - > x n x_n xn,类似于密度传导一样,那么, x n x_n xn x 1 x_1 x1 密度可达。这个性质说明了由密度直达的传递性,可以推导出密度可达。

    • 如果对于 x k x_k xk,使 x i x_i xi x j x_j xj都可以由 x k x_k xk密度可达,那么,就称 x x i x_i xi x j x_j xj 密度相连。将密度相连的点连接在一起,就形成了我们的聚类簇。

    通过上述算法我们可以看到算法需要两个参数:

    • eps值,半径值,用来做区域
    • MinPts值,用来判断哪些点是核心点

    西瓜书上的算法图:

    [外链图片转存失败(img-XUnqJLD8-1566869759407)(https://raw.githubusercontent.com/Klauszhao/picture/master/picture/cluster/DBSCAN%E8%81%9A%E7%B1%BB%E7%AE%97%E6%B3%95.png)]

    英文算法:
    [外链图片转存失败(img-rOHqxEAp-1566869523673)(https://raw.githubusercontent.com/Klauszhao/picture/master/picture/cluster/DBSCAN%E8%8B%B1%E6%96%87%E7%89%88.jpg)]

    优点
    • 自适应的聚类,不需要提前设定K值大小,可以自适应的做聚类结果。

    • 对噪声不敏感。这是因为该算法能够较好地判断离群点,并且即使错判离群点,对最终的聚类结果也没什么影响

    • 能发现任意形状的簇。这是因为DBSCAN 是靠不断连接邻域呢高密度点来发现簇的,只需要定义邻域大小和密度阈值,因此可以发现不同形状,不同大小的簇

    • 聚类结果没有偏倚,相对的,K-Means之类的聚类算法初始值对聚类结果有很大影响

    缺点
    • 对两个参数的设置敏感,即圈的半径 eps 、阈值 MinPts

    • DBSCAN 使用固定的参数识别聚类。显然,当聚类的稀疏程度不同,聚类效果也有很大不同。即数据密度不均匀时,很难使用该算法

    • 如果数据样本集越大,收敛时间越长。此时可以使用 KD 树优化

     
    from sklearn.datasets.samples_generator import make_circles
    import matplotlib.pyplot as plt
     
    import time
    from sklearn.cluster import KMeans
     
    from sklearn.cluster import DBSCAN
     
    X,y_true = make_circles(n_samples=1000,noise=0.15) #这是一个圆环形状的
     
    plt.scatter(X[:,0],X[:,1],c=y_true)
    plt.show()
     
     
    #DBSCAN 算法
    t0 = time.time()
    dbscan = DBSCAN(eps=.1,min_samples=6).fit(X)  # 该算法对应的两个参数
    t = time.time()-t0
    plt.scatter(X[:, 0], X[:, 1], c=dbscan.labels_)
    plt.title('time : %f'%t)
    plt.show()
    

    凝聚式层次聚类

    层次聚类可以分为凝聚(agglomerative)层次聚类和分裂(divsive)层次聚类。分裂层次聚类采用的就是"自顶而下"的思想,先将所有的样本都看作是同一个簇,然后通过迭代将簇划分为更小的簇,直到每个簇中只有一个样本为止。凝聚层次聚类采用的是"自底向上"的思想,先将每一个样本都看成是一个不同的簇,通过重复将最近的一对簇进行合并,直到最后所有的样本都属于同一个簇为止。

    算法步骤:

    • 我们首先将每个数据点视为一个单一的簇,即如果我们的数据集中有 X 个数据点,那么我们就有 X 个簇。然后,我们选择一个测量两个簇之间距离的距离度量标准。作为例子,我们将用 average linkage,它将两个簇之间的距离定义为第一个簇中的数据点与第二个簇中的数据点之间的平均距离。
    • 在每次迭代中,我们将两个簇合并成一个。这两个要合并的簇应具有最小的 average linkage。即根据我们选择的距离度量标准,这两个簇之间的距离最小,因此是最相似的,应该合并在一起。
    • 重复步骤 2 直到我们到达树根,即我们只有一个包含所有数据点的簇。这样我们只需要选择何时停止合并簇,即何时停止构建树,来选择最终需要多少个簇!

    从算法中我们可以知道,我们需要提供一下:

    • 距离计算公式,计算两个类之间的距离

    在凝聚层次聚类中,判定簇间距离的两个标准方法就是单连接(single linkage)和全连接(complete linkage)。单连接,是计算每一对簇中最相似两个样本的距离,并合并距离最近的两个样本所属簇。全连接,通过比较找到分布于两个簇中最不相似的样本(距离最远),从而来完成簇的合并。

    凝聚层次聚类除了通过单连接和全连接来判断两个簇之间的距离之外,还可以通过平均连接(average linkage)和ward连接。使用平均连接时,合并两个簇所有成员间平均距离最小的两个簇。使用ward连接,合并的是使得SSE增量最小的两个簇。

    优点
    • 1、距离和规则的相似度容易定义,限制少
    • 2、不需要预先制定聚类数
    • 3、可以发现类的层次关系
    缺点
    • 1,计算复杂度太高;
    • 2,奇异值也能产生很大影响;
    • 3,算法很可能聚类成链状

    参考博客

    聚类算法(一)—— k-means算法以及其改进算法
    聚类算法(三)——基于密度的聚类算法(以 DBSCAN 为例)
    聚类算法(二)、聚类算法的系统性比较

    展开全文
  • 聚类算法优缺点总结

    万次阅读 2020-07-01 23:57:12
    聚类算法优缺点总结 目录 K均值算法 二分K-均值算法 Min单链凝聚层次聚类 Max全链凝聚层次聚类 组平均凝聚层次聚类 Ward方法 质心方法 Lance-Williams公式 DBSCAN密度聚类 聚类算法分析的角度 数据具有大小很不同...
  • 层次聚类的介绍

    万次阅读 2016-03-04 20:43:12
    AGNES算法(自底向上层次聚类)  AGNES(Agglomerative Nesting) 是凝聚的层次聚类算法,如果簇C1中的一个对象和簇C2中的一个对象之间的距离是所有属于不同簇的对象间欧式距离中最小的,C1和C2可能被合并。这是一...
  • 上篇博客介绍的层次聚类,尤其是AGNES这一传统的层次聚类算法。这篇博客介绍层次聚类的优化算法。...优缺点: 适合大规模数据集,线性效率; 只适合分布呈凸形或者球形的数据集、需要给定聚类个数和簇之间
  • 层次聚类(Hierarchical Clustering)是聚类算法的一种,通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树。在聚类树中,不同类别的原始数据点是树的最低层,树的顶层是一个聚类的根节点。创建聚类树有...
  • 聚类算法优缺点分析

    千次阅读 2020-12-11 10:03:46
    不均匀的话,聚类效果不好,样本大,收敛时间长 凝聚式层次聚类 速度快,对异常值影响不大,使用内存小 对高斯簇聚类效果不好 EM算法 基于图 使用降维技术,适合高维空间。对聚类类别少准确率高。 对参数敏感,不...
  • 2.3 间隔统计量法 算法优缺点: 该方法可以适用于任何聚类算法。 对大数据集而言,其k值的确定会比较慢。 3 Kmeans算法的缺点 需要用户指定该算法的聚类个数。 如果原始数据集存在量纲上的差异,就必须对其进行标准...
  • 聚类算法汇总 一、方法名字 ...K均值算法的缺点: 1)在簇的平均值可被定义的情况下才能使用,可能不适用于某些应用; 2) 在 K-means 算法中 K 是事先给定的,这个 K 值的选定是非常难以估计的。很多时候,事...
  • 聚类算法(二)—— 优缺点对比

    千次阅读 2020-07-10 18:47:45
    各种聚类算法优缺点: https://blog.csdn.net/randompeople/article/details/91351177 总结下: Kmeans 优点: 简单快速 可处理大数据集,高效可伸缩,复杂度O(nkt),经常以局部最优结束 尝试找出使平方误差...
  • 层次聚类和kmeans聚类python学习
  • 一、层次聚类 - 单连接聚类(Single Link) Step: 1、假设每个点是一个类(1,2,3,4,5,6,7,8) 2、计算每个类两两之间的距离 3、距离最短的类,合并为同一个类,如果类中有多个,根据不同层次算法选择的距离不同 ...
  • 层次聚类和实例分析

    2022-02-16 10:31:29
    层次聚类 层次聚类(Hierarchical Clustering)是聚类算法的一种,通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树。在聚类树中,不同类别的原始数据点是树的最低层,树的顶层是一个聚类的根节点。...
  • (十七 层次聚类

    2021-02-01 11:46:04
    层次聚类 参考 什么是层次聚类 层次聚类(Hierarchical Clustering)是聚类算法的一种,顾名思义就是要一层一层地进行聚类,通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树。在聚类树中,不同类别的...
  • 层次聚类-Hierarchical Clustering

    千次阅读 2021-07-24 10:09:28
    层次聚类(Hierarchical Clustering)是聚类算法的一种,通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树,距离越小,相似度越高。在聚类树中,不同类别的原始数据点是树的最低层,树的顶层是一个聚类...
  • 层次聚类 层次聚类的概念: 层次聚类是一种很直观的算法。顾名思义就是要一层一层地进行聚类。 层次法(Hierarchicalmethods)先计算样本之间的距离。每次将距离最近的点合并到同一个类。然后,再 计算类与类之间的...
  • 聚类算法之层次聚类

    千次阅读 2019-05-02 21:41:54
    层次聚类(hierarchical clustering)是一种基于原型的聚类算法,试图在不同层次对数据集进行划分,从而形成树形的聚类结构。数据集的划分可采用"自底向上"的聚合策略,也可以采用"自顶向下"的分拆策略。层次聚类算法...
  • 起步层次聚类( Hierarchical Clustering )是聚类算法的一种,通过计算不同类别的相似度类创建一个有层次的嵌套的树。层次聚类算法介绍假设有 n 个待聚类的样本,对于层次聚类算法,它的步骤是:步骤一:(初始化)将...
  • 所谓聚类,就是将相似的事物聚集在一 起,而将不相似的事物划分到不同的类别的过程,是数据分析之中十分重要的一种手段。比如古典生物学之中,人们通过物种的形貌特征将其分门别类,可以说就是 一种朴素的人工聚类...
  • 聚类总结:分类、优缺点、适用场景总结

    万次阅读 多人点赞 2020-05-26 23:11:50
    一.聚类的概念 ...(1)基于层次聚类 原理:试图在不同层次上对数据集进行划分,从而形成树形的聚类结构。数据集的划分可采用“自底向上”的聚合策略和“自顶向下”的拆分策略。 (2)基于分割(划分)的
  • 层次聚类算法介绍

    2020-07-15 00:23:38
    3合并算法思想1)重心法2)最短距离法3)最长距离法4)组间平均连接法5)组内平均链接法4算法流程程序执行过程:5 示例与分析5.1基于最小值的层次聚类优缺点5.2 基于最大值的层次聚类优缺点5.3基于组平均优缺点 ...
  • 机器学习sklearn(13)层次聚类

    万次阅读 2019-04-09 20:34:15
    层次聚类(Hierarchical Clustering)是聚类算法的一种,基于层次的聚类算法(Hierarchical Clustering)可以是凝聚的(Agglomerative)或者分裂的(Divisive),取决于层次的划分是“自底向上”还是“自顶向下”。...
  • 作者 | Josh Thompson编译 | 张睿毅、王雨桐来源 | 数据派THU原文 | Choosing the Right Clustering Algorithm for your Dataset - KDnuggets聚类算法十分容易上手,但是选择恰当的聚类算法并不是一件容易的事。...
  • 聚类算法(4)--Hierarchical clustering层次聚类

    万次阅读 多人点赞 2018-11-07 17:45:47
    3、层次聚类优缺点 二、python实现 1、sklearn实现 2、scipy实现 树状图分类判断 一、层次聚类 1、层次聚类的原理及分类 1)层次法(Hierarchicalmethods)先计算样本之间的距离。每次将距离最近的点合并到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,226
精华内容 2,090
关键字:

层次聚类优缺点