聚类分析定义
聚类分析又称群分析,它是研究对样品或指标进行分类的一种多元统计方法.
所谓的“类”,通俗地说就是相似元素的集合.聚类分析是按照观测样品(或变量)取值 的相似程度,对观测样品(或变量)进行分类,使在同一类内的观测样品(或变量)是相似的,不同类间的观测(或变量)是不相似的
聚类分析的起源与应用
- 起源领域:数据挖掘、统计学、机器学习、模式识别等。
- 功能:作为独立工具,揭示数据分布,概括簇特征,或对特定簇进行深入分析。
数据挖掘中的聚类分析
- 特点:处理大规模、复杂数据集。
- 挑战:算法需具备可伸缩性、处理不同类型属性、发现任意形状类、处理高维数据的能力。
- 可伸缩性:算法能够适应不同规模的数据集。
- 多属性处理:算法能够处理包括数值、类别等不同类型的属性。
- 任意形状类发现:算法能够识别非球形或不规则形状的簇。
- 高维数据处理:算法能够有效处理高维空间中的数据。
R型聚类
- 定义:基于变量间的相似性进行聚类,目的是将变量分组,以识别影响系统的主要因素。
- 应用场景:当变量数量多且相关度高时,使用R型聚类来简化模型和分析。
- 例子:服装标准制定中的变量聚类,将14个身体测量部位分为两组,一组反映身高(如上身长、全身长等),另一组反映体型(如胸围、腰围等)。
Q型聚类
- 定义:基于样本间的相似性进行聚类,目的是将样本(如个体或对象)分组。
- 应用场景:当需要根据样本的特征或行为进行分类时,使用Q型聚类。
- 例子:销售员业绩表的聚类,将销售员根据业绩分为不同的类别,如优秀、较好、较差等。
R/Q聚类比较
在课堂上主要讨论Q型聚类分析, Q型聚类常用的统计量是距离.
-
R型聚类:
- 重点在于变量的聚合。
- 适用于变量众多且相关性强的情况。
- 目的在于简化变量,识别关键影响因素。
-
Q型聚类:
- 重点在于样本的聚合。
- 适用于需要对样本进行分类的情况。
- 目的在于识别样本间的相似性,进行有效分类。
-
聚类结果:
- R型聚类结果:变量被分为反映不同特征的组。
- Q型聚类结果:样本被分为具有相似特征的组。
距离定义
### 类内距离方法
类间距离方法
-
最短距离法(Single Linkage)
- 定义:用两个类别中任意两个样本之间的最小距离作为类间距离。
- 定义:用两个类别中任意两个样本之间的最小距离作为类间距离。
-
最长距离法(Complete Linkage)
- 定义:用两个类别中任意两个样本之间的最大距离作为类间距离。
- 定义:用两个类别中任意两个样本之间的最大距离作为类间距离。
-
类平均距离(Average Linkage)
- 定义:用两个类别中所有样本对之间的距离的平均值作为类间距离。
- 定义:用两个类别中所有样本对之间的距离的平均值作为类间距离。
-
重心距离(Centroid)
- 定义:用两个类别的重心(均值点)之间的欧氏距离作为类间距离。
- 公式:( D_{pq} = |\bar{x}_p - \bar{x}_q| ),其中 ( \bar{x}_p ) 和 ( \bar{x}_q ) 分别是类别 ( G_p ) 和 ( G_q ) 的重心。
- 最短距离法:强调最近点的相似性,可能导致链状效应,使得紧密的小类容易合并。
- 最长距离法:强调最远点的差异性,倾向于形成分散的、紧密的大类。
- 类平均距离:提供一个平衡的类间距离度量,考虑了所有样本对之间的距离。
- 重心距离:基于类别中心的位置,适用于类的形状近似为凸形的情况。
确定类个数的方法
-
阈值确定法
- 使用预先设定的距离阈值来决定是否合并两个类。
-
直观法
- 根据数据点的散布和分布直观地估计类的个数。
-
统计量确定法
- 利用统计量(如方差、类内距离等)来辅助确定类的个数。
-
谱系图确定法
- 通过分析谱系图(dendrogram)来选择一个合适的分类层次。
确定类个数的准则
-
重心间距离:各类的重心之间的距离应该足够大,以确保类之间的区分度。
-
类内元素数量:每个类中的元素数量不宜过多,以保持类的同质性。
-
实际应用符合性:类的个数应与实际应用场景和需求相符合。
-
一致性检验:
- 如果使用多种聚类方法,应在不同的聚类结果中发现一致的类。
K-Means聚类算法原理
- 无监督学习:不需要预先标记的训练数据。
- 目标:最小化簇内样本与簇中心(质心)之间的平方误差。
K-Means算法流程
- 初始化:随机选择K个样本点作为初始簇中心。
- 分配:将每个样本点分配到最近的簇中心,形成K个簇。
- 更新:重新计算每个簇的中心(簇内所有点的均值)。
- 迭代:重复分配和更新步骤,直到簇中心不再变化或达到预定迭代次数。
K-Means算法性能分析
- 优点:
- 算法简单、快速。
- 适合处理大数据集。
- 当簇是密集且近似凸形时效果较好。
- 缺点:
- 需要预先指定K值。
- 对初始簇中心敏感,可能产生不同结果。
- 不适合非凸形簇或大小差异很大的簇。
- 对噪声和异常点敏感。
K-Means MapReduce实现思路
-
Map阶段:
- 读取数据,与所有簇中心比较,确定最近的簇中心。
- 以簇中心ID为Key,数据为Value输出。
-
Reduce阶段:
- 将相同Key的数据归并,计算新的簇中心。
- 输出新簇中心的平均值。
-
中心更新:
- 如果新旧簇中心不同,更新簇中心数据文件。
- 清空原中心文件,写入新中心数据。
-
收敛判断:
- 如果新旧簇中心相同,结束迭代。
- 否则继续迭代MapReduce过程。
-
最终输出:
- 运行无Reduce任务,输出最终簇中心ID和值。
- K-Means算法:是一种高效且广泛应用的聚类方法,尤其适用于大规模数据集。
- 算法实现:通过迭代过程最小化簇内误差,直至收敛。
- 性能考量:算法性能受初始簇中心影响,可能需要多次运行以获得稳定结果。
- MapReduce优化:利用MapReduce框架的分布式计算能力,提高K-Means算法的可伸缩性和处理速度。
- 实际应用:在实际应用中,应根据数据特性和聚类需求,合理选择K值和距离度量方法。