task2 聚类分析--“物以类聚”

1.1聚类任务

在无监督学习(unsupervised learing)中,训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的数据分析提供基础。“聚类”是此类学习任务中研究最多,应用最广的。

“簇”:聚类将数据集中的样本划分为若干个不相交的子集,每个子集即为簇

聚类过程仅能自动形成簇结构,簇所对应的概念语义需要使用者自己把握命名

聚类   既能  作为一个单独的过程,用于寻找数据内在的分布结构;

          也能   作为分类等其他学习任务的前驱过程。

1.2性能度量--“有效性指标”

什么样聚类结果的比较好

      同一簇单样本尽可能彼此相似,不同簇的样本尽可能不同。

   换言之,簇相似度;簇相似度

聚类性能度量 

    外部指标:将聚类结果与某个参考模型比较

    内部指标:直接考察聚类结构而不利用任何参考模型

基于(9.1)~(9.4)可以导出下面这些常用的聚类性能度量外部指标

基于(9.8)~(9.11)可以导出下面常用的聚类性能度量内部指标

1.3距离计算

函数dist(. , .),作为距离度量需要满足的基本性质

直递性通常被直接称作“三角不等式”

通常将属性划分为   连续属性-----在定义域上有无穷多个可能的取值

                                离散属性-----在定义域上是有限个取值

1.4原型聚类

   “原型”  是  指样本空间中具有代表性的点

通常情况下,算法先对原型进行初始化,然后对原型进行迭代更新求解。采用不同的原型表示、不同的求解方式,将产生不同的算法。

1.4.1 K均值聚类(K-Means Clustering)

原理:通过迭代的方法,将数据集划分为K个簇,每个簇由一个质心(中心点)表示。

步骤: 

   1.随机选择K个初始质心。

   2.将每个样本分配到最近的质心所属的簇。

   3.重新计算每个簇的质心。

   4.重复步骤2和3,直到质心不再变化或达到最大迭代次数。

优点:简单高效,适用于大规模数据集

缺点:需要预先指定K值,对初始质心敏感,适用于球形簇。

1.4.2 层次聚类(Hierarchical Clustering)

层次聚类试图在不同层次对数据集进行划分,从而形成树形的聚类结构,数据集的划分可以采用“自底向上”的聚合策略,也可采用“自顶向下”的拆分策略。

1.4.2.1凝聚(Agglomerative)
   层次凝聚的代表是AGNES(Agglomerative Nesting)算法。

AGNES算法最初将每个数据样本作为一个簇,然后这些簇根据某些准则被一步步地合并。
这是一种单链接方法,其每个簇可以被簇中所有数据样本代表,两个簇间的相似度由这两个不同簇的距离确定(相似度可以定义为距离的倒数)。
算法描述:
输入:数据样本集D,终止条件为簇数目k
输出:达到终止条件规定的k个簇

步骤

  1.将每个数据样本当成一个初始簇;
  2.根据两个簇中距离最近的数据样本找到距离最近的两个簇;
  3.合并两个簇,生成新簇的集合;
  4.循环step2到step4直到达到定义簇的数目。

1.4.2.2 分裂(Divisive)
 层次分裂的代表是DIANA(Divisive Analysis)算法。


DIANA算法采用一种自顶向下的策略,在DIANA方法处理过程中,所有样本初始数据都放在一个簇中。根据一些原则(如簇中最临近数据样本的最大欧式距离),将该簇分裂。簇的分裂过程反复进行,直到最终每个新的簇只包含一个数据样本。
算法描述:
输入:数据样本集D,终止条件为簇数目k
输出:达到终止条件规定的k个簇

步骤:

  1.将所有数据样本整体当成一个初始簇;
  2.在所有簇中挑出具有最大直径的簇;
  3.找出所挑簇里与其它数据样本平均相异度最大的一个数据样本放入splinter group,剩余的放入       old party中;
  4.在old party里找出到splinter group中数据样本的最近距离不大于到old party 中数据样本的最近        距离的数据样本,并将该数据样本加入splinter group;
  5.循环step2到step4直到没有新的old party数据样本分配给splinter group;
     splinter group和old party为被选中的簇分裂成的两个簇,与其他簇一起组成新的簇集合。

优点:不需要预先指定簇数,能生成聚类树。

缺点:计算复杂度较高,适用于小规模数据集

1.4.2.3基于层次聚类算法的Python实现

AgglomerativeClustering()是scikit-learn提供的层次聚类算法模型,常用形式为:

AgglomerativeClustering(n_clusters=2,affinity='euclidean',memory=None, compute_full_tree='auto', linkage='ward')

参数说明:

   1.n_clusters:int,指定聚类簇的数量。
   2.affinity:一个字符串或者可调用对象,用于计算距离。可

      以为:’euclidean’、’mantattan’、’cosine’、’precomputed’,如果linkage=’ward’,则affinity

     必 须为’euclidean’。
  3.memory:用于缓存输出的结果,默认为None(不缓存)。
  4.compute_full_tree:通常当训练到n_clusters后,训练过程就会停止。但是如果  compute_full_tree=True,则会继续训练从而生成一颗完整的树。
  5.linkage:一个字符串,用于指定链接算法。若取值’ward’:单链接single-linkage,采用     distmin;若取值’complete’:全链接complete-linkage算法,采用distmax;若取值’average’:均连 接average-linkage算法,采用distaverage。


1.4.3 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)

密度聚类(Density-Based Clustering)是一种基于密度的聚类方法,主要用于识别数据集中密度较高的区域作为簇,并能处理噪声和发现任意形状的簇。最常见的密度聚类算法是DBSCAN。

原理:基于密度的聚类方法,通过寻找高密度区域形成簇。

步骤: 

     1. 对于每个点,找到其在给定半径(ε)内的邻居点数。

     2.如果邻居点数大于或等于最小样本数(MinPts),则该点为核心点,构成一个簇。

     3.递归地将核心点的邻居点加入簇中,直到没有新的点可以加入。

优点:能识别任意形状的簇,能处理噪声数据。

缺点:参数ε和MinPts的选择较为敏感。


1.4.4 高斯混合模型(Gaussian Mixture Model, GMM)

原理:假设数据集由多个高斯分布的混合组成,通过期望最大化算法(EM算法)来估计每个高斯             分布的参数。

步骤: 

    1.初始化每个高斯分布的参数。

    2.计算每个样本属于每个高斯分布的概率。

    3.更新每个高斯分布的参数。

     4.重复步骤2和3,直到参数收敛。

优点:能处理具有不同形状和大小的簇。

缺点:计算复杂度较高,容易陷入局部最优解。

高斯混合模型(Gaussian Mixture Model, GMM)是一种概率模型,假设数据集由多个高斯分布组成。GMM 是一种软聚类方法,即每个样本属于每个簇的概率不同,而不是硬聚类中样本只属于一个簇。

  • 33
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值