数据挖掘——聚类

数据挖掘——聚类

  • 聚类
    • 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

在这里插入图片描述

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

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.rhkb.cn/news/501059.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx - 整合lua 实现对POST请求的参数拦截校验(不使用Openresty)

文章目录 概述步骤 1: 安装 Nginx 和 Lua 模块步骤 2: 创建 Lua 脚本用于参数校验步骤 3: 配置 Nginx 使用 Lua 脚本写法二&#xff1a; 状态码写法三 &#xff1a; 返回自定义JSON复杂的正则校验 步骤 4: 测试和验证ngx.HTTP_* 枚举值 概述 一个不使用 OpenResty 的 Nginx 集…

虚拟机中的时统卡功能和性能调优

【写在前面】 飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力&#xff0c;聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域&#xff0c;包含了应用使能套件、软件仓库、软件支持、软件适…

GXUOJ-算法-补题:22级《算法设计与分析》第一次课堂练习

2.最大子数组和 问题描述 代码解答 #include<bits/stdc.h> using namespace std; const int N1005; int sum,n,a[N]; int res-1;int result(){for(int i0;i<n;i){if(sum<0) suma[i];else{suma[i];resmax(res,sum);}}return res; } int main(){cin>>n;for(i…

信息学奥赛一本通:1311:【例2.5】求逆序对

1311&#xff1a;【例2.5】求逆序对 时间限制: 1000 ms 内存限制: 65536 KB提交数:74572 通过数: 17809 【题目描述】 给定一个序列a1,a2,…,an&#xff0c;如果存在i<j并且ai>aj&#xff0c;那么我们称之为逆序对&#xff0c;求逆序对的数目。 【输入】 第一…

免登录游客卡密发放系统PHP网站源码

源码介绍&#xff1a; 这是一个简单易用的卡密验证系统&#xff0c;主要功能包括&#xff1a; 卡密管理和验证&#xff0c;多模板支持&#xff0c;响应式设计&#xff0c;验证码保护&#xff0c;防刷机制&#xff0c;简洁的用户界面&#xff0c; 支持自定义模板&#xff0c;移…

关于 PPPOE技术的详细解释

PPPoE&#xff08;以太网点对点协议&#xff09;是一种网络协议&#xff0c;它通过光纤将点对点协议&#xff08;PPP&#xff09;封装以实现宽带接入点。PPPoE主要用于ADSL和光纤等宽带接入技术中&#xff0c;它允许多个用户共享同一个交换机连接&#xff0c;同时为每个用户提供…

C# 服务应用研究

文章目录 创建Windows Service项目选中serviceInstaller1组件&#xff0c;查看属性生成和发布服务安装服务卸载服务重新再安装服务停止服务再次卸载服务调试服务 创建Windows Service项目 选中serviceInstaller1组件&#xff0c;查看属性 生成和发布服务 安装服务 卸载服务 重新…

MySQL中distinct和group by去重的区别

MySQL中distinct和group by去重的区别 在MySQL中&#xff0c;我们经常需要对查询结果进行去重&#xff0c;而DISTINCT和GROUP BY是实现这一功能的两种常见方法。虽然它们在很多情况下可以互换使用&#xff0c;但它们之间还是存在一些差异的。接下来&#xff0c;我们将通过创建测…

三维场景重建3D高斯点渲染复现

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;传知代码 欢迎大家点赞收藏评论&#x1f60a; 目录 三维场景重建概述MVSNetNerf3D gaussian-splatting 效果演示3D gaussian-splatting原理高斯分布的数学基础渲染过程优化与加速 3D Gaussian-sp…

小波滤波器处理一维信号-附Matlab源代码

⭕⭕ 目 录 ⭕⭕ 一、引言二、多分辨率分析原理2.1 概念解析2.2 尺度函数和小波函数的关系2.3 滤波器本质2.4 二维正交多分辨率分析 三、一维信号小波滤波器处理实例四、Matlab程序获取与验证 一、引言 Fourier变换无法同时描述和定位信号在时间和频率上的突变部分。小波变换的…

log4j2的Strategy、log4j2的DefaultRolloverStrategy、删除过期文件

文章目录 一、DefaultRolloverStrategy1.1、DefaultRolloverStrategy节点1.1.1、filePattern属性1.1.2、DefaultRolloverStrategy删除原理 1.2、Delete节点1.2.1、maxDepth属性 二、知识扩展2.1、DefaultRolloverStrategy与Delete会冲突吗&#xff1f;2.1.1、场景一&#xff1a…

vue v-for 数据增加页面不刷新

<div style"float:left;border:1px solid red;height:100px;width:600px;"><el-form-item label"多语言配置" style"width:700px;" prop"validTanleHead"><el-input style"width: 180px" placeholder"请…

Mac 版本向日葵退出登录账号

找遍整个软件&#xff0c;Mac 版本的向日葵甚至逆天到没有提供退出登录的功能… 随后我发现可以直接删除向日葵的配置文件达到退出登录的效果&#xff0c;具体操作如下&#xff1a; cd /etc # 确认存在 orayconfig.conf 文件 ls orayconfig.conf  # 删除 sudo rm -f oray…

双目视觉:reprojectImageTo3D函数

前言 reprojectImageTo3D 是 OpenCV 中用于从视差图生成三维点云的函数。它的原理是利用视差图和相机的校准参数&#xff0c;通过三角测量法&#xff0c;计算每个像素对应的三维坐标。以下内容根据源码分析所写&#xff0c;觉得可以的话&#xff0c;点赞收藏哈&#xff01;&am…

苍穹外卖04——Redis初入门 在店铺打烊or营业状态管理功能中的使用

Redis入门 redis简介 它以键值对的形式存储数据在内存中,并且以极高的性能和灵活性而著称,通常用于缓存、消息代理以及持久化数据。 - 基于内存存储,读写性能高- 适合存储热点数据(热点商品、资讯、新闻)- 企业应用广泛Windows版下载地址:https://github.com/microsoft…

No.1十六届蓝桥杯备战|第一个C++程序|cin和cout|命名空间

第一个C程序 基础程序 使用DevC5.4.0 写一个C程序 在屏幕上打印hello world #include <iostream> using namespace std;int main() {cout << "hello world" << endl;return 0; } 运行这个C程序 F9->编译 F10->运行 F11->编译运行 mai…

springboot实战(19)(条件分页查询、PageHelper、MYBATIS动态SQL、mapper映射配置文件、自定义类封装分页查询数据集)

引言&#xff1a; 该类博客的学习是基于b站黑马视频springbootvue视频学习&#xff01;具体围绕项目——"大事件"进行实战学习。 目录 一、功能介绍&#xff08;需求&#xff09;。 1、文章列表功能基本介绍。 2、条件分页查询功能与注意。 3、前端页面效果。&#x…

LoRA微调系列笔记

系列文章目录 第一章&#xff1a;LoRA微调系列笔记 第二章&#xff1a;Llama系列关键知识总结 第三章&#xff1a;LLaVA模型讲解与总结 文章目录 系列文章目录LoRA&#xff1a;Low-Rank Adaptation of Large Language Models目的&#xff1a;依据&#xff1a;优势&#xff1a;…

Python - 游戏:飞机大战;数字华容道

Pygame是一个利用SDL库的写的游戏库&#xff0c;SDL呢&#xff0c;全名Simple DirectMedia Layer&#xff0c;是一位叫做Sam Lantinga的大牛写的 SDL是用C写的&#xff0c;不过它也可以使用C进行开发&#xff0c;当然还有很多其它的语言&#xff0c;Pygame就是Python中使用它的…

【JVM】总结篇-字节码篇

字节码篇 Java虚拟机的生命周期 JVM的组成 Java虚拟机的体系结构 什么是Java虚拟机 虚拟机&#xff1a;指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 &#xff0c;是物理机的软件实现。常用的虚拟机有VMWare&#xff0c;Visual Box&…