数据挖掘——聚类

数据挖掘——聚类

  • 聚类
    • 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;
      • 只适用于凸型数据聚类

层次化聚类的优缺点

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在线机考|2024华为实习秋招春招编程题(最新)——第3题_个性化歌单推荐系统_300分(十一)

题目内容 假设你是音乐服务的开发者,为了提高用户体验需要解决推荐歌单的同质化问题,保证推荐给用户的所有歌单不包含相同歌曲的。给定一个包含N个歌单和M条歌单重复记录,每个歌单用一个从1到N的整数编号,歌单重复记录包含两个歌单的ID,表示两个歌单有相同的歌曲。 你的任…

每日OJ_牛客_宵暗的妖怪_DP_C++_Java

目录 牛客_宵暗的妖怪_DP 题目解析 C代码 Java代码 牛客_宵暗的妖怪_DP 宵暗的妖怪 描述&#xff1a; 露米娅作为宵暗的妖怪&#xff0c;非常喜欢吞噬黑暗。这天&#xff0c;她来到了一条路上&#xff0c;准备吞噬这条路上的黑暗。这条道路一共被分为n 部分&…

开源架构的自动化测试策略优化版

最近四篇文章推荐&#xff1a; 开源架构的容器化部署优化版&#xff08;New&#xff09; 开源架构的微服务架构实践优化版&#xff08;New&#xff09; 开源架构中的数据库选择优化版&#xff08;New&#xff09; 开源架构学习指南&#xff1a;文档与资源的智慧锦囊&#xff08…

2. 进程和线程

文章目录 前言1. 进程是什么2. 进程的相关属性3. 线程是什么4. 为什么引入线程5. 进程和线程的区别 前言 上一篇博客&#xff0c;我们讲到了CPU和操作系统&#xff0c;今天我们讲一个操作系统中一个非常重要的概念—线程和进程 1. 进程是什么 每个应用程序运行于现代操作系统…

三甲医院等级评审八维数据分析应用(八)--数据治理的持续改进与反馈机制篇

一、引言 1.1 研究背景与意义 当前三甲医院在数据管理方面暴露出诸多棘手问题。一方面,数据治理缺乏系统性与规范性,数据标准不统一,不同科室、信息系统之间的数据格式各异、编码混乱,导致数据整合与共享困难重重,严重制约了数据分析的准确性与深度。以某三甲医院为例,…

HTML——66.单选框

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>单选框</title></head><body><!--input元素的type属性&#xff1a;(必须要有)--> <!--单选框:&#xff08;如所住省会&#xff0c;性别选择&…

数据结构与算法之排序

9.1 排序的概念 1. 排序的定义 定义&#xff1a;排序是将表中的记录按关键字递增&#xff08;或递减&#xff09;有序排列的过程。说明&#xff1a;数据中可以存在相同关键字的记录。本章主要考虑递增排序。扩展&#xff1a;排序是数据处理中的基本操作之一&#xff0c;广泛应用…

Swagger学习⑩——@Server注解

介绍 Server 是 Swagger/OpenAPI 3.0 注解中的一个注解&#xff0c;用于定义 API 文档中的服务器信息。通过 Server 注解&#xff0c;你可以指定 API 服务的基础 URL 或其他相关信息。 源代码 package io.swagger.v3.oas.annotations.servers;import io.swagger.v3.oas.anno…

MATLAB仿真:基于GS算法的经大气湍流畸变涡旋光束波前校正仿真

GS算法流程 GS&#xff08;Gerchberg-Saxton&#xff09;相位恢复算法是一种基于傅里叶变换的最速下降算法&#xff0c;可以通过输出平面和输入平面上光束的光强分布计算出光束的相位分布。图1是基于GS算法的涡旋光束畸变波前校正系统框图&#xff0c;在该框图中&#xff0c;已…

C语言笔记之`char*`、`const char*` 和 `char[]`辨析

C语言笔记之char*、const char* 和 char[]辨析 code review! 参考笔记 1.C语言笔记之char*、const char* 和 char[]辨析 2.C++笔记之int、size_t、uint8_t、unsigned char*区别 3.C++之char和string字符串类探究 4.C++笔记之字节数组的处理 5.C++笔记之如何给 const char* 类型…

十种基础排序算法(C语言实现,带源码)(有具体排序例子,适合学习理解)

学习了十种常见的排序方法&#xff0c;此文章针对所学的排序方法进行整理&#xff08;通过C语言完成排序&#xff09;。 参考内容&#xff1a; https://blog.csdn.net/mwj327720862/article/details/80498455 https://www.runoob.com/w3cnote/ten-sorting-algorithm.html 1. 冒…

Timer、Ticker使用及其注意事项

Timer、Ticker使用及其注意事项 在刚开始学习golang语言的时候就听说Timer、Ticker的使用要尤其注意&#xff0c;很容易出现问题&#xff0c;这次就来一探究竟。 本文主要脉络&#xff1a; 介绍定时器体系&#xff0c;并介绍常用使用方式和错误使用方式源码解读 timer、tic…

密码学科普

1 信息传输中的安全隐患 1. 窃听 解决方案&#xff1a;明文加密&#xff0c;X只能窃听到密文 2. 假冒 解决方案&#xff1a;消息认证码或者数字签名 3. 篡改 解决方案&#xff1a;消息认证码或者数字签名 4. 事后否认 解决方案&#xff1a;数字签名 2 对称加密/非对称加密 1…

MMPose关键点检测实践(一)

一&#xff0c;安装环境 这一步&#xff0c;需根据自己的硬件环境&#xff0c;按照以下文档安装即可&#xff0c;最大的变数就是不同的硬件&#xff0c;对应的软件版本不一样&#xff0c;这个因人而异&#xff0c;没有统一版本。mmpose安装说明&#xff1a; https://mmpose.r…

指针 const 的组合

1、首先来了解一下常量 const int num 5&#xff1b; 那么num的值是5&#xff0c; num的值不可修改 2、来了解一下指针 int value 5; int* p &value; 我喜欢吧指针和类型放一起&#xff0c;来强调p是一个指针类型&#xff0c; 而赋值的时候就得赋值一个int类型的地址…

Unity-Mirror网络框架从入门到精通之Attributes属性介绍

前言 在现代游戏开发中&#xff0c;网络功能日益成为提升游戏体验的关键组成部分。Mirror是一个用于Unity的开源网络框架&#xff0c;专为多人游戏开发设计。它使得开发者能够轻松实现网络连接、数据同步和游戏状态管理。本文将深入介绍Mirror的基本概念、如何与其他网络框架进…

【大数据】(选修)实验4 安装熟悉HBase数据库并实践

实验4 安装熟悉HBase数据库并实践 1、实验目的 (1)理解HBase在Hadoop体系结构中的角色; (2)熟练使用HBase操作常用的Shell命令; (3)熟悉HBase操作常用的Java API。 2、实验平台 操作系统:Linux Hadoop版本:2.6.0或以上版本 HBase版本:1.1.2或以上版本 JDK版…

VVenC 编码器源码结构与接口函数介绍

VVenC VVenC&#xff08;Fraunhofer Versatile Video Encoder&#xff09;是由德国弗劳恩霍夫海因里希研究所&#xff08;Fraunhofer Heinrich Hertz Institute, HHI&#xff09;开发的一个开源的高效视频编码器。它实现了最新的视频编码标准——Versatile Video Coding (VVC)…

Nginx与frp结合实现局域网和公网的双重https服务

背景&#xff1a; 因为局域网内架设了 tiddlywiki、 Nextcloud 等服务&#xff0c;同时也把公司的网站架设在了本地&#xff0c;为了实现局域网直接在局域网内访问&#xff0c;而外部访问通过frps服务器作为反向代理的目的&#xff0c;才有此内容。 实现的效果如下图琐事 不喜欢…

PDFelement 特别版

Wondershare PDFelement Pro 是一款非常强大的PDF编辑软件&#xff0c;它允许用户轻松地编辑、转换、创建和管理PDF文件。这个中文特别版的软件具有许多令人印象深刻的功能&#xff0c;PDFelement Pro 提供了丰富的编辑功能&#xff0c;可以帮助用户直接在PDF文件中添加、删除、…