精华内容
下载资源
问答
  • 聚类指的是按照某个特定标准(如距离准则)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。即聚类后同一类的数据尽可能聚集到一起,...

    一.聚类的概念

    1.定义
    聚类指的是按照某个特定标准(如距离准则)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。即聚类后同一类的数据尽可能聚集到一起,不同数据尽量分离。
    (注:聚类方法是属于无监督的分类方式。)

    2.聚类的分类

    聚类方法主要划分为五大类:
    (1)基于层次的聚类
    原理:试图在不同层次上对数据集进行划分,从而形成树形的聚类结构。数据集的划分可采用“自底向上”的聚合策略和“自顶向下”的拆分策略。

    (2)基于分割(划分)的聚类
    原理:首先要确定一堆散点最后聚成几类,然后挑选几个点作为初始中心点,再然后依据预先定好的启发式算法(heuristic algorithms)给数据点做迭代重置(iterative relocation),直到最后到达“类内的点都足够近,类间的点都足够远”的目标效果。

    (3)基于密度的聚类
    原理:定一个距离半径,最少有多少个点,然后把可以到达的点都连起来,判断为同类。

    (4)基于网格的聚类
    原理:将数据空间划分为网格单元,将数据对象集映射到网格单元中,并计算每个单元的密度。根据预设的阈值判断每个网格单元是否为高密度单元,密度足够大的网格单元形成簇。

    (5)基于模型的聚类
    原理:为每簇假定了一个模型,寻找数据对给定模型的最佳拟合,这一类方法主要是指基于概率模型的方法和基于神经网络模型的方法,尤其以基于概率模型的方法居多。

    二.五类聚类方法详解

    1.基于层次的聚类

    (1)算法流程
    以下流程以自下向上为例。
    a.将每个对象看作一类,计算两两之间的最小距离;
    b. 将距离最小的两个类合并成一个新类;
    c. 重新计算新类与所有类之间的距离;
    d. 重复b, c, 直到所有类最后合并成一类。(在此我们了已选择我们需要多少个簇)

    (2)代表算法:BIRCH、Chameleon、CURE等

    算法具体描述
    BIRCHBIRCH算法利用树结构对数据集进行处理,叶结点存储一个聚类,用中心和半径表示,顺序处理每一个对象,并把它划分到距离最近的结点,该算法也可以作为其他聚类算法的预处理过程
    Chameleon首先由数据集构造成一个K-最近邻图Gk ,再通过一个图的划分算法将图Gk划分成大量的子图,每个子图代表一个初始子簇,最后用一个凝聚的层次聚类算法反复合并子簇,找到真正的结果簇
    CURE先将每个数据点看成一个簇,然后再以一个特定的“收缩因子”向簇中心“收缩”它们,即合并距离最近的两个簇直到簇的个数为所要求得个数为止

    三种算法优缺点比较:

    算法优缺点
    BIRCH优点: 可以在数据量很大时使用、节省内存、速度快、可识别噪声点。缺点: 对高维数据特征的聚类效果不好、若数据集分布簇不是类似于超球体或凸的则聚类效果不好。
    Chameleon优点: 可以处理非常复杂不规则形状的簇。缺点: 高维数据的运算复杂度比较高。
    CURE优点: 可以处理复杂空间的簇、受噪点影响小,对孤立点的处理更加健壮。缺点: 参数较多、对空间数据密度差异敏感

    2.基于划分的聚类
    基于划分的聚类代表方法有:K-means及其变体包括k-medoids、k-modes、k-medians等、CLARA、PAM等算法。
    k-means算法流程:
    a. 随机地选择k个对象,每个对象初始地代表了一个簇的中心;
    b.对剩余的每个对象,根据其与各簇中心的距离,将它赋给最近的簇;
    c.重新计算每个簇的平均值,更新为新的簇中心;
    d.不断重复b, c, 直到准则函数收敛。

    算法具体描述
    k-means以集群点的平均值作为参考对象进行聚类
    k-medoids以集群点中最中心(中位数)的对象为参考进行聚类
    k-modes以集群点特征的众数作为参考进行聚类
    PAMk-medoids的一个变体,使用迭代和贪心算法进行聚类
    CLARA在PAM的基础上对数据进行了抽样

    各类基于划分的算法优缺点比较:

    算法优缺点
    k-means优点: 算法简单,时间复杂度低。缺点: 无法处理非球形等不规则的数据、对初始值k的设置很敏感、对离群点敏感。
    k-medoids优点: 对噪点和离群点不敏感。缺点: 处理时间比k-means长、须事先指定所需聚类簇个数k。
    k-modes优点: 可适用于离散性数据集、时间复杂度更低。缺点: 需要事先对k值进行确定。
    PAM优点: 对离群点数据不敏感。缺点: 时间复杂度高。
    CLARA优点: 可用于大规模数据集的聚类。缺点: 在对数据进行随机抽样过程中采样不准确。

    3.基于密度的聚类
    (1)算法流程
    a.指定合适的r(点的半径)和M(在一个点半径内至少包含的点的个数);
    b.计算所有的样本点,如果点p的r邻域里有超过M个点,则创建一个以p为核心点的新簇;
    c.反复寻找这些核心点直接密度可达的点,将其加入到相应的簇,对于核心点发生"密度相连"状况的簇,给予合并;
    d.当没有新的点可以被添加到任何簇,算法结束。

    (2)代表算法:DBSCAN、OPTICS、DENCLUE等。

    算法具体描述
    DBSCAN这类方法采用空间索引技术来搜索对象的邻域,将簇看做是数据空间中被低密度区域分割开的稠密对象区域
    OPTICS是DBSCAN算法的一种改进,对数据对象集合中的对象进行排序,得到一个有序的对象列表,其中包含了足够的信息用来提取聚类
    DENCLUE将每个数据点的影响用一个数学函数形式化地模拟出来,聚类簇通过密度吸引点(全局密度函数的局部最大值)来确定

    各种算法的优缺点比较:

    算法优缺点
    DBSCAN优点: 可以处理任何形状的聚类簇、能够检测异常点。缺点: 需要给定数据点的半径r和最少数量m、对输入参数较敏感。
    OPTICS优点: 对输入参数不敏感。缺点: 计算量大、速度较慢。
    DENCLUE优点: 对有巨大噪声的数据点有良好的聚类效果、比DBSCAN算法快得多、有严格的数学基础。缺点:需要大量的参数并且参数对结果的影响巨大。

    4.基于网格的聚类
    (1)算法流程:
    a.划分网格;
    b.使用网格单元内数据的统计信息对数据进行压缩表达;
    c.基于这些统计信息判断高密度网格单元 ;
    d.最后将相连的高密度网格单元识别为簇。

    (2)代表算法:STING、WaveCluster、CLIQUE等。

    算法具体描述
    STING将输入对象的空间区域划分成矩形单元,每个网格单元的统计信息(均值、最大值、最小值)被作为参数预先计算和存储
    WaveCluster把多维数据看做一个多微信号处理,即划分为网格结构后,通过小波变换将数据空间变换成频域空间进行处理
    CLIQUE对高维数据集采用了子空间的概念,划分为网格结构后识别出密集单元,然后运用深度优先算法发现空间中的聚类,再对每个聚类簇确定最小覆盖区域

    各个算法的优缺点比较:

    算法优缺点
    STING优点: 效率高、时间复杂度低。缺点: 聚类质量受网格结构最底层的粒度影响、欠缺对网格单元之间的联系的考量。
    WaveCluster优点: 速度快、是一个多分辨率算法,高分辨率可获得细节信息,低分辨率可获得轮廓信息。缺点: 对已处理簇与簇之间没有明显边缘的情况聚类效果较差。
    CLIQUE优点: 善于处理高维数据和大数据集。缺点: 聚类的准确度较低。

    5.基于模型的聚类
    这一类方法主要是指基于概率模型的方法和基于神经网络模型的方法,尤其以基于概率模型的方法居多。
    这里的概率模型主要指概率生成模型(generative Model),同一”类“的数据属于同一种概率分布,即假设数据是根据潜在的概率分布生成的。
    代表算法:高斯混合模型(GMM)、SOM(Self Organized Maps)

    算法具体描述
    GMM基于概率模型,将数据分解为若干个基于高斯概率密度函数形成的模型
    SOM基于神经网络模型,一种无监督学习网络,输入层接受输入信号,输出层由神经元按一定方式排列成一个二维节点矩阵

    各算法的优缺点比较:

    算法优缺点
    GMM优点: 结果用概率表示,更具可视化并且可以根据俄这些概率在某个感兴趣的区域重新拟合预测。缺点: 需要使用完整的样本信息进行预测、在高维空间失去有效性。
    SOM优点: 映射至二维平面,实现可视化、可获得较高质量的聚类结果。缺点: 计算复杂度较高、结果一定程度上依赖于经验的选择。

    6.各种算法的使用场景总结

    在这里插入图片描述
    在这里插入图片描述

    三.五大聚类方法优缺点总结

    分类特点及优缺点
    基于层次1.算法简单 2.层次用于概念聚类(生成概念、文档层次树) 3.处理大小不同的簇 4.得到不同粒度上的多层次聚类结构 6.适用于任意形状的聚类 7.对样本的输入顺序不敏感 8.算法时间复杂度较大 9.过程具有不可逆性 10.聚类终止条件具有不精确性。
    基于划分1.算法简单 2.基于距离 3.易于发现球形互斥的簇 4. 时间复杂度相对较低 5.基于质心的聚类,对边缘点离群点处理效果一般
    基于密度1.可以发现任意形状的簇 2.广泛应用于空间信息处理 3.对噪音不敏感 4.比较直观
    基于网格1.处理速度快 2.精确性不高 3.所有的聚类都在网格结构中进行
    基于模型1.更具可视化 2.计算复杂度较高 3.执行效率低 4.数据量小的时候效果不好

    参考:
    1.聚类
    2.常见的六大聚类算法
    3.聚类评估
    4.各种聚类算法的系统介绍和比较

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

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

    聚类算法优缺点总结

    目录

    1. K均值算法
    2. 二分K-均值算法
    3. Min单链凝聚层次聚类
    4. Max全链凝聚层次聚类
    5. 组平均凝聚层次聚类
    6. Ward方法
    7. 质心方法
    8. Lance-Williams公式
    9. DBSCAN密度聚类

    聚类算法分析的角度

    数据具有大小很不同的簇
    高维数据
    具有离群点的数据
    具有高度不规则区域的数据
    具有球形簇的数据
    具有很不相同的密度的数据
    具有少量噪声点的数据
    非欧几里得数据
    欧几里得数据
    具有许多属性和混合属性的数据

    1.K均值算法

    目标函数:最小化每个点到最近质心的距离的平方,即最小化SSE。
    优点:
    (1)原理比较简单,实现也是很容易,收敛速度快。
    (2)局部最优。
       (3)算法的可解释度比较强。
        (4)主要需要调参的参数仅仅是簇数k。
    (5)对处理大数据集,该算法保持可伸缩性和高效性
    (6)当簇接近高斯分布时,它的效果较好
    缺点:
    (1)处理空簇,如果所有点在指派步骤都未分配到某个簇,就会得到空簇
    (2)对噪声和异常点比较敏感
    (3)K值不好把握
    (4)对于不是凸的数据集比较难收敛
    (5)如果各隐含类别的数据不平衡,比如各隐含类别的数据量严重失衡,或者各隐含类别的方差不同,则聚类效果不佳
    (6)采用迭代方法,得到的结果只是局部最优
    (7)初始聚类中心的选择
    适用的数据类型:
    适用于各种数据类型,比较符合随机分布的欧几里得数据,但是不能处理非球形簇,不同尺寸和不同密度的簇

    2. 二分K-均值算法

    目标函数:从二分试验中选择具有最小总SSE的两个簇
    优点:与K均值相同,而且更有效(初始点的选择)
    缺点:与K均值相同
    适用的数据类型:与K均值相同

    3. K-means ++算法

    目标函数:通过选择较大的数据点作为质心使总SSE最小
    优点:与K均值相同,而且更有效(初试质心的选择)
    缺点:与K均值相同
    适用的数据类型:与K均值相同

    4. Min单链凝聚层次聚类

    目标函数:不同两个聚类中离得最近的两个点之间的距离
    优点:
    (1) 不需要指定K值
    (2) 产生高质量的聚类
    缺点:
    (1) 对于计算量和存储需求而言,此算法是昂贵的
    (2) 所有的合并都是最终的,对于噪声,高维数据,可能造成问题
    (3) 缺乏全局目标函数
    (4) 不能很好的处理不同大小簇的能力
    适用的数据类型:单链技术擅长于处理非椭圆形状的簇,但对噪声和离群点很敏感,适用于基本应用需要层次结构,创建一种分类方法,不适用于高维数据,适用于具有少量噪声并且具有欧几里得数据

    5. Max全链凝聚层次聚类

    目标函数:不同两个聚类中离得最远的两个点之间的距离
    优点:与凝聚层次聚类相同
    缺点:与凝聚层次聚类相同
    适用的数据类型:与凝聚层次聚类相同

    6. 组平均凝聚层次聚类

    目标函数:不同两个聚类中所有点对距离的平均值
    优点:与凝聚层次聚类相同
    缺点:与凝聚层次聚类相同
    适用的数据类型:与凝聚层次聚类相同

    7. Ward方法

    目标函数:最小化两个簇合并时导致的平方误差的增量
    优点:与凝聚层次聚类相同
    缺点:与凝聚层次聚类相同
    适用的数据类型:与凝聚层次聚类相同

    8. 质心方法

    目标函数:计算簇质心之间的距离来计算两个簇之间的邻近度
    优点:
    (1) 与凝聚层次聚类相同
    (2) 倒置的可能性
    缺点:与凝聚层次聚类相同
    适用的数据类型:与凝聚层次聚类相同

    9. DBSCAN密度聚类

    目标函数: 给定eps和minpts来聚类
    优点:
    (1) 相对抗噪声的
    (2) 能够处理任意形状和大小的簇,这也是比K均值好的地方
    (3) 聚类结果没有偏倚,而K-means聚类算法对初始值要求很高
    缺点:
    (1) 不能处理密度变化太大以及聚类间距相差很大的簇,不然效果比较差
    (2) 不能处理高维数据
    (3) 如果样本集较大时,聚类收敛时间较长
    (4) 需要进行调参,eps和minpts的参数确定
    (5) 算法聚类效果依赖距离公式的选取
    适用的数据类型:不能高维,簇密度不能变化太大,聚类间距也不能太大,样本集合适。

    展开全文
  • 聚类算法汇总 一、方法名字 ...K均值算法的缺点: 1)在簇的平均值可被定义的情况下才能使用,可能不适用于某些应用; 2) 在 K-means 算法中 K 是事先给定的,这个 K 值的选定是非常难以估计的。很多时候,事...

    一、方法名字

    1.基于质心的算法

    K均值算法
    K均值算法的优点:
    1)是解决聚类问题的一种经典算法,简单、快速
    2)对处理大数据集,该算法保持可伸缩性和高效性
    3)当簇接近高斯分布时,它的效果较好。
    K均值算法的缺点:
    1)在簇的平均值可被定义的情况下才能使用,可能不适用于某些应用;
    2) 在 K-means 算法中 K 是事先给定的,这个 K 值的选定是非常难以估计的。很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适;
    3) 在 K-means 算法中,首先需要根据初始聚类中心来确定一个初始划分,然后对初始划分进行优化。这个初始聚类中心的选择对聚类结果有较大的影响,一旦初始值选择的不好,可能无法得到有效的聚类结果;
    4) 该算法需要不断地进行样本分类调整,不断地计算调整后的新的聚类中心,因此当数据量非常大时,算法的时间开销是非常大的;
    5) 若簇中含有异常点,将导致均值偏离严重(即:对噪声和孤立点数据敏感);
    6) 不适用于发现非凸形状的簇或者大小差别很大的簇。
    模糊c均值聚类
    https://blog.csdn.net/lyxleft/article/details/88964494
    用三角不等式加速的K均值算法
    https://blog.csdn.net/haimengao/article/details/29553767

    2.层次聚类

    BIRCH层次聚类
    BIRCH层次聚类的优点
    1)节约内存,所有的样本都在磁盘上,CF Tree仅仅存了CF节点和对应的指针。
    2) 聚类速度快,只需要一遍扫描训练集就可以建立CF Tree,CF Tree的增删改都很快。
    3) 可以识别噪音点,还可以对数据集进行初步分类的预处理
    BIRCH层次聚类的缺点
    1) 由于CF Tree对每个节点的CF个数有限制,导致聚类的结果可能和真实的类别分布不同.
    2) 对高维特征的数据聚类效果不好。此时可以选择Mini Batch K-Means
    3) 如果数据集的分布簇不是类似于超球体,或者说不是凸的,则聚类效果不好。
    https://blog.csdn.net/Mbx8X9u/article/details/78910496

    3.基于概率分布的算法

    EM算法 期望最大化算法
    https://blog.csdn.net/qq_17073497/article/details/81272704
    https://blog.csdn.net/qq_43468729/article/details/84952202

    4.基于密度的算法

    DBSCAN算法(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)
    DBSCAN的优点:
    1) 可以对任意形状的稠密数据集进行聚类,相对的,K-Means之类的聚类算法一般只适用于凸数据
    2) 可以在聚类的同时发现异常点,对数据集中的异常点不敏感。
    3) 聚类结果没有偏倚,相对的,K-Means之类的聚类算法初始值对聚类结果有很大影响。
    DBSCAN的缺点:
    1)如果样本集的密度不均匀、聚类间距差相差很大时,聚类质量较差,这时用DBSCAN聚类一般不适合。
    2) 如果样本集较大时,聚类收敛时间较长,此时可以对搜索最近邻时建立的KD树或者球树进行规模限制来改进。
    3)调参相对于传统的K-Means之类的聚类算法稍复杂,主要需要对距离阈值,邻域样本数阈值MinPts联合调参,不同的参数组合对最后的聚类效果有较大影响。
    OPTICS算法(Ordering points to identify the clustering structure,排序点来识别聚类结构)
    这个算法有效的解决了密度不同导致的聚类效果不好的问题。
    Mean Shift算法 (均值漂移)基于核密度估计技术,是一种寻找概率密度函数极值点的算法
    https://blog.csdn.net/stesha_chen/article/details/88827010

    5.基于图的算法

    谱聚类算法
    谱聚类算法的优点
    1)当聚类的类别个数较小的时候,谱聚类的效果会很好,但是当聚类的类别个数较大的时候,则不建议使用谱聚类;
    2)谱聚类算法使用了降维的技术,所以更加适用于高维数据的聚类;
    3)谱聚类只需要数据之间的相似度矩阵,因此对于处理稀疏数据的聚类很有效。这点传统聚类算法(比如K-Means)很难做到
    4)谱聚类算法建立在谱图理论基础上,与传统的聚类算法相比,它具有能在任意形状的样本空间上聚类且收敛于全局最优解
    谱聚类算法的缺点
    1)谱聚类对相似度图的改变和聚类参数的选择非常的敏感;
    2)谱聚类适用于均衡分类问题,即各簇之间点的个数相差不大,对于簇之间点个数相差悬殊的聚类问题,谱聚类则不适用;
    https://blog.csdn.net/qq_24519677/article/details/82291867

    二、各种方法在sklearn库中的调用

    算法名称函数
    K均值聚类算法from sklearn.cluster import KMeans
    小批量K均值算法from sklearn.cluster import MiniBatchKMeans
    BIRCH层次聚类ffrom sklearn.cluster import Birch
    .EM算法from sklearn.mixture import GaussianMixture
    DBSCAN算法from sklearn.cluster import DBSCAN
    OPTICS算法from sklearn.cluster import OPTICS
    Mean Shift算法from sklearn.cluster import MeanShift
    谱聚类算法from sklearn.cluster import SpectralClustering

    三、不同数据下聚类效果对比

    数据1的距离对比
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    通过上述4组不同的数据可以简单的看出不同数据下各类聚类算法的聚类好坏程度。以便于根据不同的数据类型选择不同的聚类方式。

    陈鑫您好!

    展开全文
  • 聚类之K-means分析以及优缺点

    千次阅读 2020-07-01 20:10:05
    K-Means是最为经典的无监督聚类(Unsupervised Clustering)算法,其主要目的是将n个样本点划分为k个簇,使得相似的样本尽量被分到同一个聚簇。K-Means衡量相似度的计算方法为欧氏距离(Euclid Distance)。 K-Means...

    K-means

    K-Means是最为经典的无监督聚类(Unsupervised Clustering)算法,其主要目的是将n个样本点划分为k个簇,使得相似的样本尽量被分到同一个聚簇。K-Means衡量相似度的计算方法为欧氏距离(Euclid Distance)。
    K-Means算法的特点是类别的个数是人为给定的,如果让机器自己去找类别的个数,我们有AP聚类算法。K-Means的一个重要的假设是:数据之间的相似度可以使用欧氏距离度量,如果不能使用欧氏距离度量,要先把数据转换到能用欧氏距离度量,这一点很重要。(注:可以使用欧氏距离度量的意思就是欧氏距离越小,两个数据相似度越高)

    算法

    伪代码:
    function K-Means(输入数据,中心点个数K)
    获取输入数据的维度Dim和个数N
    随机生成K个Dim维的点,或随机选k个样本中的点
    while(算法未收敛)
    对N个点:计算每个点属于哪一类。
    对于K个中心点:
    1,找出所有属于自己这一类的所有数据点
    2,把自己的坐标修改为这些数据点的中心点坐标,即平均值
    end
    输出结果:
    end
    数据集 D有 N个样本点 {x1,x2,…,xn},假设现在要将这些样本点聚类为 k个簇, k个簇中心为{μ1,μ2,…,μn } 。定义指示变量 γij∈\in∈{0,1},如果第 i个样本被聚类到第 k个簇,那么 γij=1,否则 γij=0 。在K-Means中每个样本只能属于一个簇,这是Hard-Clustering,也称为Non-fuzzy Clustering,与之对应的是Soft-Clustering或者Fuzzy-Clustering,指的是一个样本可以被归为多个簇。在K-Means里面有 ∑\sum∑j γij=1,那么K-Means的优化目标为:
    在这里插入图片描述
    目标需要优化的变量有 和 ,由于 是01离散变量,优化起来是NP-Hard问题。所以采用启发式的求解,即Lloyd’s algorithm。求解过程分为Assignment和Update两步。
    Assignment Step:
    在这里插入图片描述
    Update Step:
    在这里插入图片描述
    在Assignment Step,把样本归为最近的簇中心所代表的簇,很明显,这一步更新会减小目标函数的值;在Update Step中,更新聚簇中心,用这个簇的所有样本的中心点当作新的聚簇中心,不难证明这一步是最小化簇内样本到聚簇中心欧式距离平方和的最优解。所以,按照上述两步,只要有 和 被更新了,那么目标函数值肯定会下降。由于将 个样本点分配到 个聚簇中心最多只有 个划分方案,每一种划分方案对应一个目标函数值。采用上述两步算法,每步更新都会使得目标函数值减少,故上述算法流程肯定会收敛。但是由于是采用的启发式算法,不一定能保证收敛到全局最优解。事实上,K-Means的两步更新可以看作是EM算法的两步,即Expectation和Maximization两步,这里不再详细介绍。

    K-Means缺点

    1、需要确定K的值。K的取值需要事先确定,然而在无监督聚类任务上,由于并不知道数据集究竟有多少类别,所以很难确定K的取值。举例来说,利用K-Means做 彩色图像分割(Segmentation)任务,如果图像只有一个物体和背景,那么很容易确定将K设置为2,并且较容易得到比较好的分割效果,但是对于一副有更多物体的图像,K的设定就很难了,因为我们并不总能人工去判断这幅图像里面有几个类别。对于文档聚类更是如此,比如一批新闻 数据集,可以按照主题聚类,但是有多少主题呢,这个不能事先获得。
    2、对异常点敏感。K-Means很容易受到异常点(outliers)的影响,由于K-Means在Update Step取得是簇内样本均值,那么就会很容易受到异常点的影响,比如某个簇内样本在某个维度上的值特别大,这就使得聚簇中心偏向于异常点,从而导致不太好的聚类效果。
    3、凸形聚类。K-Means由于采用欧氏距离来衡量样本之间相似度,所以得到的聚簇都是凸的,就不能解决“S型”数据分布的聚类,这就使得K-Means的应用范围受限,难以发现数据集中一些非凸的性质。
    4、聚簇中心初始化,收敛到局部最优,未考虑密度分布等等。

    K-Means优化

    K-Medians。不同于K-Means使用欧式距离计算目标函数,K-Medians使用曼哈顿距离(Manhattan Distance),对应的则是 l1范数。在目标求解的Update过程中,用簇内样本每个维度的中位数来当作聚簇中心在该维度的值(K-Means使用的是平均值),K-Medians的Median就是这个意思;在Assignment过程中,使用曼哈顿距离将每个样本划归为最近的聚簇。K-Medians可以很好地解决异常点问题.不难发现,在异常点的影响下,K-Medians更鲁棒,能较好的代表聚类结果。
    K-Medoids。在K-Means中,聚簇中心不一定是样本点,而是样本点的中心。但是在K-Medoids中,聚簇中心就是样本点。比如在初始化过程中,K-Means是随机初始化k个聚簇中心,K-Medoids是在样本集中选择k个作为聚簇中心。即便K-Means初始过程中也可以选择样本点,但是在后续Step中,K-Medoids一直保持聚簇中心为样本点,K-Means则不然。另外,K-Medoids使用的是和K-Medians一样的曼哈顿距离,更新聚簇中心时,在簇内选择一个使得簇内曼哈顿距离之和最小的样本点作为聚簇中心。选择样本点作为聚簇中心的一个好处是聚簇中心可能是稀疏的,比如在文本聚类中,文本向量大多数是稀疏向量,系数向量计算相似度或距离速度更快。
    K-Means++。初始聚簇中心的选择是K-Means的一个重要难点,K-Means++使用了一种方法来寻找到一组比较好的初始聚簇中心。其主要思想是:首先,选择一个样本点作为第一个聚簇中心,然后再选择下一个聚簇中心时要尽量离第一个已经选择的簇中心远一些,选择的方法是根据一个概率分布,这个概率分布和样本到聚簇中心的距离有关,比如 ,即已选择的聚簇中心越远概率越大;对于第三个聚簇中心的选择,需要加权考虑到第一、第二个已选择聚簇中心的距离。重复上述过程直到选出k个聚簇中心。K-Means++可以很好地解决K-Means的初始化问题。
    其他聚类方法。为了解决K-Means的K初始值选取的问题,可以采用层次聚类(Hierarchical Clustering)的方法;为了解决K-Means未考虑密度分布以及非凸聚类的缺陷,可以考虑使用密度聚类DBSCAN算法。此外还有很多聚类算法,比如混合高斯聚类。

    评价方法-轮廓系数

    聚类算法中最常用的评估方法——轮廓系数(Silhouette Coefficient):

    在这里插入图片描述

    计算样本i到同簇其它样本到平均距离ai。ai越小,说明样本i越应该被聚类到该簇(将ai称为样本i到簇内不相似度)。
    计算样本i到其它某簇Cj的所有样本的平均距离bij,称为样本i与簇Cj的不相似度。定义为样本i的簇间不相似度:bi=min(bi1,bi2,…,bik2)
    si接近1,则说明样本i聚类合理
    si接近-1,则说明样本i更应该分类到另外的簇
    若si近似为0,则说明样本i在两个簇的边界上

    k-means的python实现

    from numpy import *
    import time
    import matplotlib.pyplot as plt
    # calculate Euclidean distance
    def euclDistance(vector1, vector2):
    	return sqrt(sum(power(vector2 - vector1, 2)))
     
    # init centroids with random samples
    def initCentroids(dataSet, k):
    	numSamples, dim = dataSet.shape
    	centroids = zeros((k, dim))
    	for i in range(k):
    		index = int(random.uniform(0, numSamples))
    		centroids[i, :] = dataSet[index, :]
    	return centroids
     
    # k-means cluster
    def kmeans(dataSet, k):
    	numSamples = dataSet.shape[0]
    	# first column stores which cluster this sample belongs to,
    	# second column stores the error between this sample and its centroid
    	clusterAssment = mat(zeros((numSamples, 2)))
    	clusterChanged = True
     
    	## step 1: init centroids
    	centroids = initCentroids(dataSet, k)
     
    	while clusterChanged:
    		clusterChanged = False
    		## for each sample
    		for i in xrange(numSamples):
    			minDist  = 100000.0
    			minIndex = 0
    			## for each centroid
    			## step 2: find the centroid who is closest
    			for j in range(k):
    				distance = euclDistance(centroids[j, :], dataSet[i, :])
    				if distance < minDist:
    					minDist  = distance
    					minIndex = j
    			
    			## step 3: update its cluster
    			if clusterAssment[i, 0] != minIndex:
    				clusterChanged = True
    				clusterAssment[i, :] = minIndex, minDist**2
     
    		## step 4: update centroids
    		for j in range(k):
    			pointsInCluster = dataSet[nonzero(clusterAssment[:, 0].A == j)[0]]
    			centroids[j, :] = mean(pointsInCluster, axis = 0)
     
    	print 'Congratulations, cluster complete!'
    	return centroids, clusterAssment
     
    # show your cluster only available with 2-D data
    def showCluster(dataSet, k, centroids, clusterAssment):
    	numSamples, dim = dataSet.shape
    	if dim != 2:
    		print "Sorry! I can not draw because the dimension of your data is not 2!"
    		return 1
     
    	mark = ['or', 'ob', 'og', 'ok', '^r', '+r', 'sr', 'dr', '<r', 'pr']
    	if k > len(mark):
    		print "Sorry! Your k is too large! please contact Zouxy"
    		return 1
     
    	# draw all samples
    	for i in xrange(numSamples):
    		markIndex = int(clusterAssment[i, 0])
    		plt.plot(dataSet[i, 0], dataSet[i, 1], mark[markIndex])
     
    	mark = ['Dr', 'Db', 'Dg', 'Dk', '^b', '+b', 'sb', 'db', '<b', 'pb']
    	# draw the centroids
    	for i in range(k):
    		plt.plot(centroids[i, 0], centroids[i, 1], mark[i], markersize = 12)
     
    	plt.show()
    
    #测试代码:
    
    
    from numpy import *
    import time
    import matplotlib.pyplot as plt
     
    ## step 1: load data
    print "step 1: load data..."
    dataSet = []
    fileIn = open('E:/Python/Machine Learning in Action/testSet.txt')
    for line in fileIn.readlines():
    	lineArr = line.strip().split('\t')
    	dataSet.append([float(lineArr[0]), float(lineArr[1])])
     
    ## step 2: clustering...
    print "step 2: clustering..."
    dataSet = mat(dataSet)
    k = 4
    centroids, clusterAssment = kmeans(dataSet, k)
     
    ## step 3: show the result
    print "step 3: show the result..."
    showCluster(dataSet, k, centroids, clusterAssment)
    

    转载:https://blog.csdn.net/weixin_43526820/article/details/89493751

    展开全文
  • 聚类模型聚类分析

    2021-03-01 10:29:30
    聚类分析 有监督学习和无监督学习 如何选择? 1、是否有标签(主要):(是否可人工标注标签) 有监督学习-“有老师的学习”,有已知的训练的样本,通过已知的训练样本(如已知输入和对应的输出)来训练,从而得到一...
  • 一、基本思想主成分分析 就是将多项指标转化为少数几项综合指标,用综合指标来解释多变量的方差- 协方差结构。综合指标即为主成分。...聚类分析 是依据实验数据本身所具有的定性或定量的特征,来对大量的数据...
  • http://blog.sina.com.cn/s/blog_67fcf49e0101g1lt.html
  • KNN算法,K聚类优缺点

    千次阅读 2019-01-18 16:15:35
    优点 ① 简单,易于理解,易于实现,无需参数估计...缺点 ① 对测试样本分类时的计算量大,内存开销大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。目前常用的解决方法是...
  • 灰色聚类评价模型

    千次阅读 多人点赞 2020-06-07 21:33:31
    2.1 灰色关联聚类模型 2.2 灰色变权聚类评价模型 设有 n 个聚类对象,m 个聚类指标,s 个不同灰类,对象 i 关于指标 j 的样本观测值为 xij ,i=1,2,⋯ ,n;j=1,2,⋯ ,m x_{ij}\ \text{,}i=1,2,\cdots ,n\text{;...
  • 目的描述​ 出于模型的需要,我们的团队选择做一次聚类分析,通常这部分在队伍中是会有同学专门负责这块的,至于为什么笔者就不在这里多说了。解决思路​ 在MATLAB中封装了有关因子分析的方法--cluster,读者可以...
  • 1、理解模糊 C-均值聚类算法的局限性,理解模拟退火算法与遗传算法的优缺点,理解模拟 退火算法与遗传算法相结合所产生的优越性。 2、利用 Matlab 实现聚类问题的求解。分析算法中各种参数变化对结果的影响。分析在...
  • 常见聚类模型

    千次阅读 2020-03-26 21:17:36
    聚类之后,我们可以更加准确地在每个类中单独使用统计模型进行估计,分析或者预测;也可以研究不同类之间的差异。聚类算法常见的有K-means聚类算法,系统聚类算法,DBSCAN算法 2.K-means聚类算法 a.算法流程: 指定...
  • 文章目录聚类分析介绍K-Means聚类 聚类分析介绍 关键词:没有先验知识、亲密程度、相似性个体、自动分类; K-Means聚类   K均值聚类是一种动态聚类法,为了改进之前的算法在样品个数很大时内存和时间都消耗极大的...
  • 分类、聚类模型

    千次阅读 2020-08-22 18:25:53
    水果分类(3)Fisher线性判别分析(4)举个Fisher线性判断的例子二、聚类模型(1)K-means聚类算法(2)K-means++算法(3)举个例子--K-means++聚类算法(4)系统层次聚类1、样品与样品之间常用的距离计算方法2、...
  • 核心内容:使用python的sklearn的KMeans算法对电商用户进行分类。 包含内容:数据概览、特征构建、k值选择、模型训练、可视化等。
  • KMeans聚类: 中心思想是不断调整中心点来计算聚类,生成新的中心点,直到达到平衡为止。 随机选取K个中心点,计算其他点到中心点的位置,并选择最近的归类,重复该过程,直到中心点不再变化。服从高斯(正态)分布...
  • 聚类分析

    千次阅读 2017-12-21 00:04:26
    聚类分析Cluster Analysis 聚类分析的作用 聚类分析的目的 聚类算法 划分方法 partitioning method K - Means 算法 K - 中心点算法 层次的方法hierarchical method AGNES算法 DIANA算法 基于密度的方法density-based...
  • 聚类分析并不靠谱

    千次阅读 2019-06-24 13:57:26
    聚类分析中,距离有两种定义方式,即: 依据远近:即距离的远近程度,远即距离远,近即距离近; 依据相似程度:即相似程度低为距离远,相似程度高为距离近 相同的聚类分析中,距离的定义方式不同,得到的...
  • 无监督学习 聚类分析④ EM(Expectation Maximization Algorithm) 1.EM算法的基本思想 假如我们随机选取了100名男生和100名女生,两百个人混在一起,而目前只有每个人学生的身高数据,我们既不知道每个身高数据所...
  • 以家庭为分析对象,用现在出行的发生、吸引率求得将来的发生、吸引交通量。 各类家庭单位时间内的平均出行次数称为出行率 假设: (1)同一类型的家庭的出行率基本相等 (2)一定时期内出行率是稳定的 (3)家庭规模...
  • 聚类分析 关联学习 维度缩减 二、聚类分析 2.1定义 把数据样本按照一定的方法分成不同的组别,这样让在同一个组别中的成员对象都有相似的一些属性 2.2应用场景 目标用户的群体分类 图像切割 基因聚类
  • 聚类分析——客户分群分析

    千次阅读 2020-05-27 14:06:37
    聚类分析练习——客户分群
  • 模型优缺点总结

    千次阅读 2020-12-26 16:06:49
    一、聚类算法 1、kmeans 定义:K-means算法,也被称为K-均值或K-平均算法,是一种广泛使用的聚类算法。K-means算法是基于相似性的无监督的算法,通过比较样本之间的相似性,将较为相似的样本划分到同一类别中。 ...
  • 什么是聚类分析聚类分析方法的类别

    万次阅读 多人点赞 2019-07-03 21:09:55
    聚类分析是指将数据对象的集合分组为由类似的对象组成的多个类的分析过程。 基本概念 聚类(Clustering)就是一种寻找数据之间内在结构的技术。聚类把全体数据实例组织成一些相似组,而这些相似组被称作簇。处于...
  • 缺点:对噪音和异常点比较的敏感。k-means是在做凸优化,因此处理不了非凸的分布。如果两个类别距离比较近,k-means的效果也不会太好。初始中心点的选择以及k值的选择对结果影响较大,可能每次聚类结果都不一样。...
  • 8.最佳电影聚类分析

    2021-02-05 21:37:14
    8.最佳电影聚类分析将使用电影简介作为原始数据,将总共 100 部流行电影进行聚类分析。IMDb 也称为互联网电影数据库(www.imdb.com),是一个在线的数据库,它提供有关电影、电子游戏和电视节目的大量详细信息。它聚集...
  • 聚类篇——(一)聚类分析概述

    千次阅读 2020-06-30 21:23:12
    聚类分析是一种探索性的分析,在分类的过程中,人们不必事先给出一个分类的标准,聚类分析能够从样本数据出发,自动进行分类。聚类的目标是同一类对象的相似度尽可能大,不同类对象之间的相似度尽可能的小。
  • 聚类分析是没有给定划分类别的情况下,根据样本相似度进行样本分组的一种方法,是一种非监督的学习算法。聚类的输入是一组未被标记的样本,聚类根据数据自身的距离或相似度划分为若干组,划分的原则是组内距离最小化...
  • 聚类分析的概念  1.聚类分析的定义  聚类分析指将物理或抽象对象的集合分组为由类似的对象组成的多个类的分析过程。  聚类是将数据分类到不同的类或者簇这样的一个过程,所以同一个簇中的对象有很大的相似性,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,880
精华内容 7,152
关键字:

聚类分析模型的优缺点