数据挖掘(6)聚类分析

news2025/1/19 14:39:49

一、什么是聚类分析

1.1概述

  1. 无指导的,数据集中类别未知
  2. 类的特征:
    • 类不是事先给定的,而是根据数据的相似性、距离划分的
    • 聚类的数目和结构都没有事先假定。
  3. 挖掘有价值的客户:
    • 找到客户的黄金客户
    • ATM的安装位置

1.2区别·

二、距离和相似系数

2.1概述

  1. 原则: 组内数据有较高相似度、不同组数据不相似
  2. 相似性的度量(统计学角度):
    1. Q型聚类:对样本聚类(行聚类)
    2. R型聚类:对变量聚类(列聚类)

2.2Q型聚类(样本聚类、行聚类)

1.样本资料矩阵: 

2.定义距离的准则:

3.变量的类型

  1. 间隔尺度变量(数值型变量):可加可比
  2. 有序尺度变量(叙述型变量):不可加可比
  3. 名义尺度变量(名义型变量):不可加不可比

4.间隔尺度变量(数值型变量)

  1. 缺点:数据集中存在变量取值范围相差十分悬殊,会造成大数吃小数现象。

  2. 数值与指标量纲有关

度量值的标准化:

  • 将初始测量值转换为无单位变量。
  • 常用零均值规范化

特例:比例数值变量

 5.有序尺度变量

  1. 只可以不可加:比如各种排名、等级
  2. 步骤

6.名义尺度变量(符号变量)

  1. 两种类型

    1. 二元变量:
      • 只有两个取值变量:如男女、开关、01
    2. 名义变量:
      • 二元变量推广:如颜色变量(R,G,B)
  2. 二元变量计算:

    1. 差异矩阵法:

    2. 恒定的相似度

      1. 对称的二元变量:取值01内容同等价值、相同权值
        • 如:男女
      2. 简单匹配系数
        • d_{ij}=\frac{r+s}{q+r+s+t}
        • 取值不一样(01或10)的个数在所有变量的比重
    3. 非恒定的相似度

      1. 非对称二元变量:取值01内容重要程度不同
        • 如:病毒阴阳性
      2. Jaccard相关系数
        • d_{ij}=\frac{r+s}{q+r+s}
        • 取值不一样(01或10)的个数在所有变量(除去取值为00)的比重
    4. 相似度系数例子(小题计算):
    5. 名义变量计算(最常用):

7.混合数据类型

  1. 现实数据库中包含多类型的数据
  2. 如何计算?
    1. 将变量按类型分组,对每种类型的变量单独聚类分析,但实际中,往往不可行。
    2. 将所有的变量一起处理,只进行一次聚类分析。
  3. 相似度计算

 2.3R型聚类(变量聚类、列聚类)

  1. 相似系数:

    • 夹角余弦
    • 相关系数
  2. 夹角余弦

    • 值越大越好
  3. 变量间相似系数

  4. 相似系数

  5. 相似矩阵

三、 类的定义和类间距离

3.1类的定义

  1. 定义1:任意元素x_i,x_j,间距离d_{ij}满足:d_{ij}\leq h
    1. 适合:团簇状
  2. 定义2:任意元素x_i,x_j,间距离d_{ij}满足\frac1{k-1}\sum_{x_j\in S}d_{ij}\leq h(类内平均距离)
    1. 适合:团簇状
  3. 定义3:对于任意元素x_i\in S,存在x_j\in S使得其满足d_{ij}\leq h(不要求任意两个元素)
    1. 适合:长条状

3.2类间距离

  1. 最近距离

    1. w_kw_1最近距离为D_{kl}=min[d_{ij}]

    2. w_lw_qw_p,合并得到的D_{kl}=\min[D_{kp},D_{kq}]

    3. 实际中不多见,避免极大值影响

    4. 例子

      1. 计算类间距离,然后将最小的两个进行合并

  2. 最远距离 
    1. w_kw_1最远距离为D_{kl}=max[d_{ij}]
    2. w_lw_qw_p,合并得到的D_{kl}=\max[D_{kp},D_{kq}]
    3. 可能被极大值扭曲,删除后再聚类

    4. 例题:与上面的类似,每次选取距离最小的,合并的时候取的是max

  3. 平均距离

  4. 中间距离 
  5. 重心距离
    1. 一个类空间的位置用重心表示,两个类重心之间距离为二者的距离

    2. 对异常值不敏感,结果能稳定

四、基于划分的聚类方法

4.1划分方法

  1. 将n个对象划分成k类,且满足:
    • 每个聚类内至少包含一个对象
    • 每个对象必须属于一个类(模糊划分计划可以放宽要求)
  2. 划分方法:
    1. k-均值:每个聚类用该聚类中对象的平均值表示
    2. k-中心点:每个聚类用接近聚类重心的一个对象(真实存在的点)表示

4.2k-均值聚类算法

  1. 类均值表示

  2. 不适合处理离散型属性,适合处理连续型属性

  3. 算法流程:
    1. 选取聚类中心:随机从n个数据选择k个对象作为初始聚类中心
    2. 对剩余的每个对象,根据各个聚类中心的距离,将其赋给最近的聚类。
    3. 重新计算每个聚类的平均值(中心)
    4. 不断重复,直到准则函数收敛(减小)
  4. 收敛准则函数:误差平方和最小
  5. 缺点:

    1. 局部最优,不是全局最优

    2. 结果与k的取值有关

    3. 不适合发现大小很不相同的簇、凹状的簇
      *[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AwfktfUP-1641719199744)(/uploads/upload_98816f0f833feeb2da5536e0c31765d5.png =400x)]

    4. 只有在簇的平均值被定义的情况下才能使用,不适合有类属性的数据。

    5. 对噪声、异常点敏感。

  6. 示意图例子:

4.3k-中心点聚类算法

  1. k-中心点与k-均值算法区别
    簇中心评价准则
    k-均值簇中对象均值(可以是虚点)误差平方和
    k-中心点接近簇中心的一个对象表示(实际存在的点)

    绝对误差

  2. 基本策略
    1. 随意选择一个代表对象作为中心点,将剩余对象按最小距离划分进簇中。
    2. 重复利用非中心对象代替中心对象,若改善聚类的整体距离,则进行替代。
    3. 用代价函数进行估算质量:C_{pjo}=d(i,p)-d(j,p)
  3. 替代的四种情况
  • 如何判断非代表对象O_{random}是否能替代当前代表对象O_j,需要对每个非中心点P考虑
  • 替换的总代价:{CC}_{jo}=\sum_{j=1}^nC_{pjo}
  • 若总代价为负,则可以替代

 4.算法步骤

  1. 选取聚类中心:随机从n个数据对象选择k个
  2. 循环3-5,知道聚类不发生变化
  3. 对剩余的每个对象,根据各个聚类中心的距离,将其划分给最近的聚类。
  4. 选择任意非中心对象O_{random}计算与中心对象O_j交换的成本S。
  5. 若成本S为负,则交换中心对象。

五、基于层次的聚类方法

5.1 总述

  1. 给定的数据对象集合进行层次分解,根据层次分解的方式,层次的方法被分为凝聚、分裂。
  2. 凝聚层次法(agnes算法)
    • 自底向上
    • 一开始将每个对象作为单独的一组,然后合并相近的组,直到合为一组或到达终止条件
  3. 分裂层次法(dinan算法)
    • 自底向下
    • 所有对象置于一个簇,在迭代的每一步,一个簇被分裂为更下的簇,直到每个对象单独为一个簇或到达某个终止条件
  4. 计算距离方法

5.2agnes算法

  1. 步骤:
    1. 每个对象当做一个初始簇
    2. repeant 3-4
    3. 根据两个簇中最近数据点找到最近的两个簇
    4. 合并两个簇,生成新的簇集合
    5. until 达到定义的簇的数目
  2. 例子
  3. 特点:
    • 算法简单,合并会出现问题:一旦合并就不能撤销,可能会对后续操作产生影响。
    • 复杂度比较大O(n^2)

5.3diana算法

  1. 簇的直径:一个簇中的任意两个数据点的距离中的最大值
  2. 平均相异度(平均距离):
  3. 算法步骤
    将所有对象当做一个初始簇
    for(int i = 1; i <= k; i++){
        在所以簇中挑选出最大直径的簇C
        找出C中与其他点平近距离最大的一个点p放入splinter group,剩余点放入old party
        Repeat
            在old party中找出到splinter group比到old party更近的点,加入splinter group
        Until 没有新的点被分到splinter group
        splinter group 与 old party 就被分解为两个新的簇
    }
    
  4. 例题

 六、 基于密度的聚类方法

6.1概述

  1. 基于密度聚类方法
    • 只要一个区域中点的密度(对象、数据点的数目)超过阈值,就将其加到与之相近的聚类中
  2. 可以过滤噪声、孤立点、发现任意形状的簇
  3. 代表算法:Dbscan、Optics、Denclue

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1107248.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

轻量级超分网络:Edge-oriented Convolution Block for Real-timeMM21_ECBSR 和 eSR

文章目录 ECBSR&#xff08;Edge-oriented Convolution Block for Real-timeMM21_ECBSR&#xff09;1. 作者目的是开发一个高效的适合移动端的超分网络。2. 作者决定使用plain net &#xff0c;但是效果不好&#xff0c;因此利用重参数化方法&#xff0c;丰富特征表示。3. re-p…

【数字人】6、ER-NeRF | 借助空间分解来实现基于 NeRF 的更高效的数字人生成(ICCV2023)

文章目录 一、背景二、方法2.1 问题设定2.2 Tri-Plane Hash Representation2.3 Region Attention Module2.4 训练细节 三、效果3.1 实验设定3.2 定量对比3.3 定性对比3.4 User study3.5 消融实验 四、代码4.1 视频数据预处理4.2 训练4.3 推理 论文&#xff1a;Efficient Region…

springboot+jaspersoft studio6制作报表

文章目录 前言一、开发工具下载安装二、开始制作1.新建1.文本2.图片3. 表格4.时间 三.遇到的问题1.中文不显示2.detail模块与column Footer之间有空白。怎么调节也消不掉 四.完整代码总结 前言 公司最近要做报销系统。需求就是将报销申请、报销审批。并将报销信息打印出来。 …

Nginx配置微服务避免actuator暴露

微服务一般在扫漏洞的情况下&#xff0c;需要屏蔽actuator健康检查 # 避免actuator暴露 if ($request_uri ~ "/actuator") { return 403; }

SD/SDIO(1):SD总线协议介绍

SD标准提供了很大的灵活性&#xff0c;除了作为存储卡外&#xff0c;还提供了SD卡槽的标准来扩展设备的功能。本篇文章就先来介绍一下SD总线的规范。对于SD/MMC协议的发展历史和概念介绍&#xff0c;可以参考我的这篇文章&#xff1a;SD、SDIO和MMC接口基础和规范介绍 文章目录…

【MySQL】数据库——库操作

文章目录 1. 创建数据库[IF NOT EXISTS] 的使用 2. 删除库3. 数据库的编码问题查看系统默认支持的字符集查看系统默认支持的校验集只查看 database的校验集指定编码创建数据库修改字符集修改校验集验证规则对数据库的影响utf8_general_ci ——不区分大小写utf8_bin ——区分大小…

【Qt之布局】QVBoxLayout、QHBoxLayout、QGridLayout、QFormLayout介绍及使用

在Qt中&#xff0c;布局管理器&#xff08;Layout&#xff09;用于管理窗口中的控件的位置和大小&#xff0c;以适应不同大小的窗口。 常用的布局管理器包括QVBoxLayout、QHBoxLayout、QGridLayout和QFormLayout。 先放张布局UI&#xff1a; 1. QVBoxLayout&#xff08;垂直布…

【爬虫教程】2023最详细的爬虫入门教程~

初识爬虫 学习爬虫之前&#xff0c;我们首先得了解什么是爬虫。 来自于百度百科的解释&#xff1a; 网络爬虫&#xff08;又称为网页蜘蛛&#xff0c;网络机器人&#xff0c;在FOAF社区中间&#xff0c;更经常的称为网页追逐者&#xff09;&#xff0c;是一种按照一定的规则&a…

视频批量加水印:保护版权,提升效率

在当今的自媒体时代&#xff0c;视频制作已经成为许多人的一项必备技能。然而&#xff0c;在视频制作过程中&#xff0c;如何为自己的视频添加独特的水印以保护知识产权&#xff0c;常常让许多制作者感到困扰。本文将为你揭示如何通过固乔剪辑助手软件&#xff0c;简单几步批量…

音乐播放器蜂鸣器ROM存储歌曲verilog,代码/视频

名称&#xff1a;音乐播放器蜂鸣器ROM存储歌曲 软件&#xff1a;Quartus 语言&#xff1a;Verilog 代码功能&#xff1a; 设计音乐播放器&#xff0c;要求至少包含2首歌曲&#xff0c;使用按键切换歌曲&#xff0c;使用开发板的蜂鸣器播放音乐&#xff0c;使用Quartus内的RO…

VUE前端判断是电脑端还是移动端

背景需求 ruoyi框架&#xff0c;前后端分离。现在要在用户访问的时候根据不同的设备跳转到不同的登录页面。 教程 router/index.js 修改src/router/index.js&#xff0c;在这里增加自己的要跳转的页面 permission.js 在白名单中添加自己的登录页面 增加以下识别的代码 le…

solidworks 2024新功能之-打造更加智能的工作 硕迪科技

SOLIDWORKS 2024 的新增功能 SOLIDWORKS 的每个版本都致力于改进您的工作流程&#xff0c;使您常用的工具尽可能快速高效地运作。此外&#xff0c;SOLIDWORKS 2024 可以通过量身定制的解决方案扩展您的工具集&#xff0c;并使您能够通过 Cloud Services 轻松将您的设计数据连接…

vue 写一个大富翁 和 老虎机组件

大富翁 老虎机https://github.com/YaminZheng/zillionaire.git Vue Ts 编写的大富翁&#xff0c;支持自定义路径&#xff0c;动画和图片可以自行添加 Dev git clone https://github.com/YaminZheng/zillionaire.git cd zillionaire yarn set version stable yarn install …

文心大模型4.0亮相2023百度世界大会,助力各赛道应用进一步发展

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师…

Map<String, Object> 和 com.fasterxml.jackson.databind.node.ObjectNode区别

Map<String, Object>和com.fasterxml.jackson.databind.node.ObjectNode都可以用来表示一个键值对集合&#xff0c;其中键是字符串&#xff0c;值可以是任何对象。 Map<String, Object>是Java标准库中的一种数据结构&#xff0c;用于存储一组键值对。它是一个接口…

【Electron】Not allowed to load local resource

问题描述 使用 audio 标签播放音频文件&#xff0c;控制台报错 Not allowed to load local resource。 Not allowed to load local resource原因分析 通常是安全策略所引起的。Electron 默认情况下禁止加载本地资源&#xff0c;以防止潜在的安全风险。 解决方案 在 main.js…

1208. 翻硬币

题目&#xff1a; 1208. 翻硬币 - AcWing题库 思路&#xff1a; 1.对于要求从A变化到B的这类题&#xff0c;可以采用开关控制的方法。 2.一次翻转连续两个硬币&#xff0c;求origin变为result 最少需要翻转多少次。我们在origin的两个硬币中间放一个开关&#xff0c;开关变换…

代码随想录第四十三天|343. 整数拆分 ● 96.不同的二叉搜索树

343.整数拆分 题目&#xff1a; 给定一个正整数 n&#xff0c;将其拆分为至少两个正整数的和&#xff0c;并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 输入: 2 输出: 1 解释: 2 1 1, 1 1 1。 示例 2: 输入: 10 输出: 36 解释: 10 3 3 4, 3 3 4 …

Linux:命令行参数和环境变量

文章目录 命令行参数环境变量环境变量的概念常见的环境变量PATH 环境变量表本地变量和环境变量命令分类 本篇主要解决以下问题&#xff1a; 什么是命令行参数命令行参数有什么用环境变量是什么环境变量存在的意义 命令行参数 在学习C语言中&#xff0c;对于main函数当初的写…

Spring framework Day 23:容器事件

前言 容器事件是 Spring Framework 中的一个重要概念&#xff0c;它提供了一种机制&#xff0c;使我们能够更好地了解和响应 Spring 容器中发生的各种事件。通过容器事件&#xff0c;我们可以在特定的时间点监听和处理容器中的各种状态变化、操作和事件触发&#xff0c;以实现…