数据挖掘——聚类

news2025/3/13 16:02:17

数据挖掘——聚类

  • 聚类
    • K-means
    • KNN VS K-means
      • K-Nearest Neighbors (KNN)
      • K-means
    • K中心算法
      • PAM算法
    • K-modes算法——解决数据敏感的问题
    • KMeans++算法 ——解决初始点选择问题
    • K-中心点
    • 层次方法
      • AGNES算法——最小距离
        • 单链接
        • 全链接
        • 平均链接
    • 聚类评估
    • K均值和K中心点的优缺点
    • 层次化聚类的优缺点

聚类

什么是聚类?

  • 是把数据对象集合按照相似性划分成多个子集的过程。
  • 每个子集是一个簇(cluster),使得簇中的对象彼此相似,但与其他簇中的对象不相似。

聚类是无监督学习:给定的数据没有类标号信息

数据挖掘对聚类的要求

  1. 处理噪声数据的能力
    • 很多数据库都包含了孤立点,缺失或错误的数据
    • 而一些聚类算法对于这样的数据敏感,可能导致低质量的聚类结果
  2. 对输入数据的顺序不敏感和增量聚类
    • 同一个数据集合,以不同的次序提交给同一个算法,应该产生相似的结果
    • 能将新加入的数据合并到已有聚类中
  3. 高维度
    • 许多聚类算法擅长处理低维数据,可能只涉及两到三维
    • 而数据库或者数据仓库可能包含若干维或属性

划分方法:将有n 个对象的数据集D划分成k个簇,并且 k ≤ n k≤n kn,满足如下的要求:

  • 每个簇至少包含一个对象
  • 每个对象属于且仅属于一个簇

基本思想

  • 首先创建一个初始k划分(k为要构造的划分数)
  • 然后不断迭代地计算各个簇的聚类中心并依新的聚类中心调整聚类情况,直至收敛

目标

  • 同一个簇中的对象之间尽可能“接近”或相关
  • 不同簇中的对象之间尽可能“远离”或不同

启发式方法 E = ∑ i = 1 n ∑ p ∈ C i ( d (   c i ) ) 2 E=\sum\limits_{i=1}^n\sum_{p\in C_i}(d(\,c_i))^2 E=i=1npCi(d(ci))2

  • k-均值(k-means)

    • 每个簇用该簇中对象的均值来表示
    • 基于质心的技术
  • k-中心点(k-medoids)

    • 每个簇用接近簇中心的一个对象来表示
    • 基于代表对象的技术

适用性

  • 这些启发式算法适合发现中小规模数据库中的球状聚类
  • 对于大规模数据库和处理任意形状的聚类,这些算法需要进一步扩展

K-means

在这里插入图片描述

  • 优点
    • 聚类时间快
    • 当结果簇是密集的,而簇与簇之间区别明显时,效果较好
    • 相对可扩展和有效,能对大数据集进行高效划分
  • 缺点
    • 用户必须事先指定聚类簇的个数
    • 常常终止于局部最优
    • 只适用于数值属性聚类(计算均值有意义)
    • 对噪声和异常数据也很敏感
    • 不同的初始值,结果可能不同
    • 不适合发现非凸面形状的簇

如何确定最优的聚类数K
肘部法是一种通过观察聚类误差(簇内平方和,SSE)的变化来选择 K值的方法。其原理是随着 K增加,聚类误差逐渐减少,但在某个K值之后,误差的减少速度会大幅放缓。此时,图形上会出现一个“肘部”,该点对应的K值通常被认为是最优聚类数
在这里插入图片描述
在这里插入图片描述
由于聚类算法是无监督学习,所以我们可能不知道原始数据到底是几类别,从而无法确定k的值。有一种方法——肘部法则,我们需要尝试一系列的k值,并绘制图像。 如上图,我们发现k=3处,曲线有弯曲且下降速度较快,称为肘部,之后下降缓慢。 此时取k=3较为合适。而对于右图,很多时候图像是平缓的,所以无法确定肘部,我们一般选择可行范围的最大值。

优点:简单直观,适合大多数情况。
缺点:对于某些数据集,肘部可能不明显,难以精确定位。

KNN VS K-means

K-Nearest Neighbors (KNN) 和 K-means 是两种在机器学习中常用的算法,但是大家经常将他们两个混淆,但它们的应用场景、工作原理和目标完全不同。下面介绍一下这两种算法的对比:

K-Nearest Neighbors (KNN)

类型: 监督学习(Supervised Learning)

用途: 主要用于分类问题,也可以用于回归问题。

工作原理:

  • 在训练阶段,KNN 算法并不“学习”模型参数,而是存储训练数据集。
  • 在预测阶段,对于一个新的输入实例,KNN 会在训练数据集中找到与该实例最相似的 K 个邻居(基于某种距离度量,如欧氏距离),然后根据这些邻居的多数类别来决定新实例的类别(对于分类任务)或者取平均值(对于回归任务)。

特点:

  • 非参数化方法:不需要假设数据分布。
  • 计算成本较高:尤其是在大型数据集上进行预测时。
  • 对特征缩放敏感:因此通常需要标准化或归一化数据。

K-means

类型: 无监督学习(Unsupervised Learning)

用途: 用于聚类分析,即将数据点分组到不同的簇中,使得同一个簇内的成员比其他簇的成员更相似。

工作原理:

  • 随机选择 K 个中心点(centroid)作为初始簇中心。
  • 将每个数据点分配给最近的中心点,形成 K 个簇。
  • 重新计算每个簇的中心点(通常是簇内所有点的均值)。
  • 重复上述步骤,直到簇中心不再显著变化或达到最大迭代次数。

特点:

  • 基于划分的方法:试图最小化簇内误差平方和。
  • 对初始中心点的选择敏感:可能导致局部最优解。
  • 不需要标签信息:因为是无监督学习算法。

总结

  1. 监督 vs. 无监督: KNN 是一种监督学习算法,而 K-means 是一种无监督学习算法。
    目的不同: KNN 用于预测未知数据点的类别或数值,而 K-means 旨在发现数据中的自然分组。
  2. 对数据的要求: KNN 可以直接应用于分类和回归任务,而 K-means 主要用于聚类分析,且它对数据的预处理(如缺失值处理、异常值检测等)要求更高,因为它依赖于数据点之间的距离度量。

K中心算法

首先为每个簇随意选择一个代表对象,剩余的对象根据其与代表对象的距离分配给最近的一个簇;然后,迭代地用非代表对象来替代代表对象,以改进聚类的质量(找更好的代表对象);聚类结果的质量用一个代价函数来估算,该函数评估了对象与其参照对象之间的平均相异度。

PAM算法

PAM算法试图对n个对象给出K个划分,代表对象也被称为是中心点(Medoids),其他对象则被称为非代表对象。最初随机选择K个对象作为中心点,该算法反复地用非代表对象来代替代表对象,试图找出更好的中心点,以改进聚类的质量。

PAM算法关键步骤

  1. 初始化:随机选择K个对象作为初始中心点。

  2. 分配:将剩余对象分配给最近的中心点,形成K个簇。

  3. 迭代优化:

    • 对于每个中心点,对于每个非中心点:
      • 交换中心点和非中心点,重新计算损失(损失值的大小为:所有点到中心点的距离和)。
      • 如果总的损失增加则不进行交换。
  4. 结果输出:输出最终的K个簇中心和簇成员

K-modes算法——解决数据敏感的问题

  • K-means的改进算法主要区别在于:
    • 初始k均值选择
    • 相异度计算
    • 计算均值方法
  • 处理分类变量:K-modes
    • 针对分类数据
    • 用众数代替均值
    • 使用新的相异性度

在这里插入图片描述

KMeans++算法 ——解决初始点选择问题

基本原理
① 从输入的数据点集合中随机选择一个点作为第一个聚类中心
② 对于数据集中的每一个点X,计算其与聚类中心的距离D(X)
选择一个D(X)最大的点作为新的聚类中心
④ 重复2和3步直到K个聚类中心被选出
⑤ 利用K个初始聚类中心运行K-Means
在这里插入图片描述

K-中心点

  • 选用簇中位置最中心的实际对象即中心点作为参照点
  • 基于最小化所有对象与其参照点之间的相异度之和的原则来划分(使用绝对误差标准)

在这里插入图片描述

层次方法

  • 层次方法
    • 对给定数据对象集进行层次的分解
    • 使用距离矩阵作为聚类标准
    • 不需要输入聚类数目k,但需要终止条件
  • 两种层次方法
    • 自底向上方法(凝聚)
      • 初始将每个对象作为单独的一个簇,然后相继的合并相近的对象或簇,直到所有的簇合并为一个,或者达到一个终止条件
      • 代表算法:AGNES算法
    • 自顶向下方法(分裂)
      • 初始将所有的对象置于一个簇中,在迭代的每一步,一个簇被分裂为多个更小的簇,直到最终每个对象在一个单独的簇中,或达到一个终止条件
      • 代表算法:DIANA算法

AGNES算法——最小距离

单链接
  • 其每个簇可以用簇中所有对象代表,簇间的相似度用属于不同簇中最近的数据点对之间的相似度来度量
  • 也称为最短距离法,定义簇的邻近度为取自不同簇的两个最近的点之间的邻近度
  • d i j d_{ij} dij表示样本 X ( i ) X(i) X(i) X ( j ) X(j) X(j)之间的距离, D i j D_{ij} Dij表示类 G i G_i Gi G j G_j Gj之间距离

在这里插入图片描述

全链接

取自不同簇中的两个最远的点之间邻近度作为簇的邻近度
在这里插入图片描述

平均链接
  • 类间所有样本点的平均距离
  • 该法利用了所有样本的信息,被认为是较好的系统聚类法

在这里插入图片描述

聚类评估

  • 估计在数据集上进行聚类的可行性和被聚类方法产生的结果的质量
  • 聚类评估的任务
    • 估计聚类趋势:评估数据集是否存在非随机结构,如霍普金斯统计量
    • 确定数据集中的簇数:在聚类之前,估计簇数,如肘部(Elbow)方法
    • 测定聚类质量:聚类之后,评估结果簇的质量
      • 有监督:用某种聚类质量度量对聚类结果和基准进行比较
      • 无监督:通过考察簇的分离情况和簇的紧凑情况来评估聚类,如轮廓系数

K均值和K中心点的优缺点

  1. k-均值

    • 优点:高效,k-均值算法复杂度为 O(tkn),n是对象数目,k是聚类数目,t是迭代次数,一般的 k, t<< n;
    • 缺点:
      • 局部最优解;
      • 只适用于连续的固定的n维数据
      • 需要先确定聚类数目k;
      • 对噪音和离群点比较敏感:
      • 只适用于凸型数据聚类。
  2. k-中心点:

    • 优点:
      • 可适用于范围可变的数据:
      • 能够处理对噪声或离群点
    • 缺点:
      • 局部最优解
      • 只适用于数据集较小的数据集,对较大的数据集不适用(计算的复杂性)算法复杂度为 O(k(n-k)2)。
      • 需要先确定聚类数目k;
      • 只适用于凸型数据聚类

层次化聚类的优缺点

  • 优点:没有局部极小问题或是很难选择初始点的问题
  • 缺点:计算存储的代价昂贵

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

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

相关文章

web实操9——session

概念 数据保存在服务器HttpSession对象里。 session也是域对象&#xff0c;有setAttribute和getAttribute方法 快速入门 代码 获取session和塞入数据&#xff1a; 获取session获取数据&#xff1a; 请求存储&#xff1a; 请求获取&#xff1a; 数据正常打印&#xff1a…

GPT系统重大升级,开创国内先河:o1支持图片识别功能正式上线

文章目录 零、前言一、授权码登录体验优化&#xff1a;一步直达聊天界面二、全新“项目”功能&#xff1a;让工作更有条理三、语音功能升级&#xff1a;全新交互体验四、o1支持图片识别五、总结 零、前言 我是虚竹哥&#xff0c;目标是带十万人玩转ChatGPT。 亲爱的用户&…

unity 播放 序列帧图片 动画

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、方法一&#xff1a;代码控制播放序列帧1、设置图片属性2、创建Image组件3、简单的代码控制4、挂载代码并赋值 二、方法二&#xff1a;直接使用1.Image上添加…

VisionPro软件Image Stitch拼接算法

2D图像拼接的3种情景 1.一只相机取像位置固定&#xff0c;或者多只相机固定位置拍图&#xff0c;硬拷贝拼图&#xff0c;采用CopyRegion工具实现 2.一只或多只相机在多个位置拍照&#xff0c;相机视野互相重叠&#xff0c;基于Patmax特征定位后&#xff0c;无缝 拼图&#xff…

【大模型】7 天 AI 大模型学习

今天终于来到大模型学习的实战课了&#xff08;虽然前面跳了2天的课&#xff09;&#xff0c;今天我们会一起学习 Llama 模型的运行、部署、微调 ~ 一、Llama 介绍 Llama 模型官网&#xff1a;官网 Llama 论文&#xff1a;论文 Llama 代码&#xff1a;代码 理念&#xff1a;Th…

小程序学习08—— 系统参数获取和navBar组件样式动态设置

一 系统信息的概念 uni-app提供了异步(uni.getSystemInfo)和同步(uni.getSystemInfoSync)的2个API获取系统信息。 success 返回参数说明&#xff1a; 参数分类说明statusBarHeight手机状态栏的高度system操作系统名称及版本。。。 二 自定义navbar 2.1 获取系统参数 代码展示…

STM32的LED点亮教程:使用HAL库与Proteus仿真

学习目标&#xff1a;掌握使用STM32 HAL库点亮LED灯&#xff0c;并通过Proteus进行仿真验证&#xff01; 建立HAL库标准工程 1.新建工程文件夹 新建工程文件夹建议路径尽量为中文。建立文件夹的目的为了更好分类去管理项目工程中需要的各类工程文件。 首先需要在某个位置建立工…

密码学原理技术-第十一章-Hash Functions

文章目录 总结Why we need hash functionsDigital Signature with a Hash FunctionBasic Protocol for Digital Signatures with a Hash FunctionPrincipal input–output behavior of hash functions Security propertiesThe three security requirements of hash functionsWh…

【AI大模型系列】AI Agent与LangChain框架介绍(七)

目录 一、什么是AI Agent 二、什么是LangChain 三、LangChain的重要模块 3.1 Model I/O&#xff08;模块输入输出&#xff09; 3.2 Retrieval&#xff08;检索&#xff09; 3.3 Chains&#xff08;链式调用&#xff09; 3.4 Agents 3.5 Memory&#xff08;记忆&#xff…

RabbitMQ 架构介绍:深入理解与应用

RabbitMQ 是一个开源的消息代理&#xff08;Message Broker&#xff09;软件&#xff0c;它实现了高级消息队列协议&#xff08;AMQP&#xff09;&#xff0c;并提供了可靠的消息传递机制。RabbitMQ 广泛应用于分布式系统中&#xff0c;用于解耦系统组件、异步处理任务和实现消…

数据结构9.3 - 文件基础(C++)

目录 1 打开文件字符读写关闭文件 上图源自&#xff1a;https://blog.csdn.net/LG1259156776/article/details/47035583 1 打开文件 法 1法 2ofstream file(path);ofstream file;file.open(path); #include<bits/stdc.h> using namespace std;int main() {char path[]…

【C++】B2101 计算矩阵边缘元素之和

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目背景与描述题目描述输入格式输出格式输入输出样例说明与提示 &#x1f4af;分析与解决方案解法一&#xff1a;我的做法代码实现解题思路优点与局限性 解法二&#xff1…

【软考网工笔记】计算机基础理论与安全——计算机硬件知识

计算机分级存储体系 计算机分级存储体系目前最常用的是三级存储体系。 CPU——CaChe&#xff08;高速缓存&#xff09;——主存——辅存 其中 Cache 是用于解决存取速度不够快&#xff0c;辅存是用于解决存储容量不够大&#xff0c;二者结合可在容量和速度实现提升的情况下尽可…

回归预测 | MATLAB实ELM-Adaboost多输入单输出回归预测

回归预测 | MATLAB实ELM-Adaboost多输入单输出回归预测 目录 回归预测 | MATLAB实ELM-Adaboost多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 一、极限学习机&#xff08;ELM&#xff09; 极限学习机是一种单层前馈神经网络&#xff0c;具有训练速…

【MATLAB】【Simulink仿真】向模型中添加自定义子系统

一、子系统的创建 1、启动Simulink&#xff0c;选择【新建】——【空白子系统】——【创建子系统】 2、选择【浏览组件库】&#xff0c;创建使能子系统。 3、保存至当前工作目录。 二、建立模型仿真 1、启动Simulink&#xff0c;选择【新建】——【空白子系统】——【创建子系…

国产编辑器EverEdit - 使用技巧:变量重命名的一种简单替代方法

1 使用技巧&#xff1a;变量重命名的一种简单替代方法 1.1 应用场景 写过代码的都知道&#xff0c;经常添加功能的时候&#xff0c;是把别的地方的代码拷贝过来&#xff0c;改吧改吧&#xff0c;就能用了&#xff0c;改的过程中&#xff0c;就涉及到一个变量名的问题&#xff…

手持PDA终端,提升零售门店管理效率

随着科技的不断进步和零售行业的持续发展&#xff0c;手持PDA终端的应用将会越来越广泛。它将不断融合更多先进的技术和功能&#xff0c;为零售门店管理带来更加便捷、高效、智能的解决方案。 手持PDA终端是集成了数据处理、条码扫描、无线通信等多种功能于一体的便携式设备‌…

机器学习之逻辑回归算法、数据标准化处理及数据预测和数据的分类结果报告

逻辑回归算法、数据标准化处理及数据预测和数据的分类结果报告 目录 逻辑回归算法、数据标准化处理及数据预测和数据的分类结果报告1 逻辑回归算法1.1 概念理解1.2 算法导入1.3 算法优缺点 2 LogisticRegression理解2.1查看参数定义2.2 参数理解2.3 方法2.4基本格式 3 数据标准…

ICLR2017 | Ens | 深入研究可迁移的对抗样本和黑盒攻击

Delving Into Transferable Adversarial Examples And Black-Box Attacks 摘要-Abstract引言-Introduction对抗深度学习和可迁移性-Adversarial Deep Learning And Transferability对抗深度学习问题生成对抗样本的方法评估方法 非目标性对抗样本-Non-Targeted Adversarial Exam…

在IDEA中如何用git拉取远程某一分支的代码

想要在idea中拉取远程某一分支的代码&#xff0c;我们可以在idea中使用git命令 1.选择idea的Terminal窗口 2.使用git -v 命令查看一下git的版本&#xff0c;顺便测试一下能否使用git命令&#xff08;不能使用的话需要在idea中进行相关配置&#xff09; 3.使用 git fetch命令更新…