大数据聚类算法

在这里插入图片描述

聚类分析定义

聚类分析又称群分析,它是研究对样品或指标进行分类的一种多元统计方法.

所谓的“类”,通俗地说就是相似元素的集合.聚类分析是按照观测样品(或变量)取值 的相似程度,对观测样品(或变量)进行分类,使在同一类内的观测样品(或变量)是相似的,不同类间的观测(或变量)是不相似的

聚类分析的起源与应用
  • 起源领域:数据挖掘、统计学、机器学习、模式识别等。
  • 功能:作为独立工具,揭示数据分布,概括簇特征,或对特定簇进行深入分析。
数据挖掘中的聚类分析
  • 特点:处理大规模、复杂数据集。
  • 挑战:算法需具备可伸缩性、处理不同类型属性、发现任意形状类、处理高维数据的能力。
  • 可伸缩性:算法能够适应不同规模的数据集。
  • 多属性处理:算法能够处理包括数值、类别等不同类型的属性。
  • 任意形状类发现:算法能够识别非球形或不规则形状的簇。
  • 高维数据处理:算法能够有效处理高维空间中的数据。

R型聚类

  • 定义:基于变量间的相似性进行聚类,目的是将变量分组,以识别影响系统的主要因素。
  • 应用场景:当变量数量多且相关度高时,使用R型聚类来简化模型和分析。
  • 例子:服装标准制定中的变量聚类,将14个身体测量部位分为两组,一组反映身高(如上身长、全身长等),另一组反映体型(如胸围、腰围等)。
    在这里插入图片描述

Q型聚类

  • 定义:基于样本间的相似性进行聚类,目的是将样本(如个体或对象)分组。
  • 应用场景:当需要根据样本的特征或行为进行分类时,使用Q型聚类。
  • 例子:销售员业绩表的聚类,将销售员根据业绩分为不同的类别,如优秀、较好、较差等。
    在这里插入图片描述

R/Q聚类比较

在课堂上主要讨论Q型聚类分析, Q型聚类常用的统计量是距离.

  • R型聚类

    • 重点在于变量的聚合。
    • 适用于变量众多且相关性强的情况。
    • 目的在于简化变量,识别关键影响因素。
  • Q型聚类

    • 重点在于样本的聚合。
    • 适用于需要对样本进行分类的情况。
    • 目的在于识别样本间的相似性,进行有效分类。
  • 聚类结果

    • R型聚类结果:变量被分为反映不同特征的组。
    • Q型聚类结果:样本被分为具有相似特征的组。

距离定义

在这里插入图片描述### 类内距离方法在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

类间距离方法

  1. 最短距离法(Single Linkage)

    • 定义:用两个类别中任意两个样本之间的最小距离作为类间距离。
      - 公式:( D_{pq} = \min_{i \in G_p, j \in G_q} d_{ij} )。
  2. 最长距离法(Complete Linkage)

    • 定义:用两个类别中任意两个样本之间的最大距离作为类间距离。
      - 公式:( D_{pq} = \max_{i \in G_p, j \in G_q} d_{ij} )。
  3. 类平均距离(Average Linkage)

    • 定义:用两个类别中所有样本对之间的距离的平均值作为类间距离。
      - 公式:( D_{pq} = \frac{1}{np \cdot nq} \sum_{i \in G_p} \sum_{j \in G_q} d_{ij} )。
  4. 重心距离(Centroid)

    • 定义:用两个类别的重心(均值点)之间的欧氏距离作为类间距离。
    • 公式:( D_{pq} = |\bar{x}_p - \bar{x}_q| ),其中 ( \bar{x}_p ) 和 ( \bar{x}_q ) 分别是类别 ( G_p ) 和 ( G_q ) 的重心。
      在这里插入图片描述
  • 最短距离法:强调最近点的相似性,可能导致链状效应,使得紧密的小类容易合并。
  • 最长距离法:强调最远点的差异性,倾向于形成分散的、紧密的大类。
  • 类平均距离:提供一个平衡的类间距离度量,考虑了所有样本对之间的距离。
  • 重心距离:基于类别中心的位置,适用于类的形状近似为凸形的情况。

最短距离法

确定类个数的方法

  1. 阈值确定法

    • 使用预先设定的距离阈值来决定是否合并两个类。
  2. 直观法

    • 根据数据点的散布和分布直观地估计类的个数。
  3. 统计量确定法

    • 利用统计量(如方差、类内距离等)来辅助确定类的个数。
  4. 谱系图确定法

    • 通过分析谱系图(dendrogram)来选择一个合适的分类层次。
确定类个数的准则
  • 重心间距离:各类的重心之间的距离应该足够大,以确保类之间的区分度。

  • 类内元素数量:每个类中的元素数量不宜过多,以保持类的同质性。

  • 实际应用符合性:类的个数应与实际应用场景和需求相符合。

  • 一致性检验

    • 如果使用多种聚类方法,应在不同的聚类结果中发现一致的类。

K-Means聚类算法原理

  • 无监督学习:不需要预先标记的训练数据。
  • 目标:最小化簇内样本与簇中心(质心)之间的平方误差。
K-Means算法流程
  1. 初始化:随机选择K个样本点作为初始簇中心。
  2. 分配:将每个样本点分配到最近的簇中心,形成K个簇。
  3. 更新:重新计算每个簇的中心(簇内所有点的均值)。
  4. 迭代:重复分配和更新步骤,直到簇中心不再变化或达到预定迭代次数。
K-Means算法性能分析
  • 优点
    • 算法简单、快速。
    • 适合处理大数据集。
    • 当簇是密集且近似凸形时效果较好。
  • 缺点
    • 需要预先指定K值。
    • 对初始簇中心敏感,可能产生不同结果。
    • 不适合非凸形簇或大小差异很大的簇。
    • 对噪声和异常点敏感。
K-Means MapReduce实现思路
  1. Map阶段

    • 读取数据,与所有簇中心比较,确定最近的簇中心。
    • 以簇中心ID为Key,数据为Value输出。
  2. Reduce阶段

    • 将相同Key的数据归并,计算新的簇中心。
    • 输出新簇中心的平均值。
  3. 中心更新

    • 如果新旧簇中心不同,更新簇中心数据文件。
    • 清空原中心文件,写入新中心数据。
  4. 收敛判断

    • 如果新旧簇中心相同,结束迭代。
    • 否则继续迭代MapReduce过程。
  5. 最终输出

    • 运行无Reduce任务,输出最终簇中心ID和值。
  • K-Means算法:是一种高效且广泛应用的聚类方法,尤其适用于大规模数据集。
  • 算法实现:通过迭代过程最小化簇内误差,直至收敛。
  • 性能考量:算法性能受初始簇中心影响,可能需要多次运行以获得稳定结果。
  • MapReduce优化:利用MapReduce框架的分布式计算能力,提高K-Means算法的可伸缩性和处理速度。
  • 实际应用:在实际应用中,应根据数据特性和聚类需求,合理选择K值和距离度量方法。

相关推荐

  1. AI - 算法

    2024-06-18 18:30:04       41 阅读
  2. DBSCAN算法

    2024-06-18 18:30:04       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-18 18:30:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-18 18:30:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-18 18:30:04       87 阅读
  4. Python语言-面向对象

    2024-06-18 18:30:04       96 阅读

热门阅读

  1. 闲鱼商品详情API:深入解析与应用指南

    2024-06-18 18:30:04       24 阅读
  2. Gradle相关概念

    2024-06-18 18:30:04       23 阅读
  3. Redis 键(key)

    2024-06-18 18:30:04       33 阅读
  4. .net core使用EPPlus设置Excel的页眉和页脚

    2024-06-18 18:30:04       25 阅读
  5. SqlServer添加索引

    2024-06-18 18:30:04       25 阅读
  6. cephfs的形式使用ceph,大致思路

    2024-06-18 18:30:04       30 阅读
  7. Github 2024-06-16 php开源项目日报 Top10

    2024-06-18 18:30:04       29 阅读
  8. UE5 发射物目标追踪

    2024-06-18 18:30:04       33 阅读
  9. MYSQL

    MYSQL

    2024-06-18 18:30:04      24 阅读
  10. C#面:请解释C#接口的显式实现有什么意义

    2024-06-18 18:30:04       32 阅读
  11. 联合类型和交叉类型

    2024-06-18 18:30:04       31 阅读