信息检索与数据挖掘 | (十二)聚类

news2024/9/29 3:19:18

文章目录

  • 📚聚类
  • 📚KMeans
  • 📚层次聚类
    • 🐇层次聚类概述
    • 🐇dendrogram-树状图
    • 🐇linkages-衡量两个类之间的距离
    • 🐇Lance-Williams算法
    • 🐇K-means VS 层次聚类
  • 📚DBSCAN

📚聚类

  • 定义:聚类是一种无监督学习,样本没有标签,将一群样本划分到一个类中,使得:最大化类间距,最小化类内

  • 距离测量指标
    在这里插入图片描述

  • 四种聚类

    1. 基于质心的聚类,使用中心表示该簇(K-means,K-medoids)

    2. 基于链接的聚类:层次聚类-在一定阈值处切断树,从而得到几个类

    3. 基于密度的聚类,DBSCAN,OPTICS,将高密度的区域连接起来

    4. 基于分布的聚类,Mixture models

📚KMeans

  • K-means的思想:最小化数据到中心点的方差S,算法的目标是最小化数据点与所属簇中心之间的平方距离之和。

    在这里插入图片描述

  • K-means 算法步骤

    1. 初始化:选择 k 个初始聚类中心(可以是随机选择或根据特定的策略选择),每个数据点被分配到离其最近的聚类中心所对应的簇。
    2. 迭代更新:重复以下步骤直到达到停止条件(例如,聚类中心不再发生变化):
      • 计算每个簇的新聚类中心:将每个簇内的所有数据点的坐标取平均值,得到新的聚类中心。
      • 将每个数据点重新分配到离其最近的新聚类中心所对应的簇。
    3. 输出结果:当算法终止时,得到 k 个簇,每个簇包含一组数据点,以及每个簇的聚类中心。

  • 但是如果是一个NP-hard问题,可以使用启发式搜索

    • 随机选K个中心点,然后将剩下的数据点按照距离划到相应的类中,同时更新每类的中心点,然后继续划分,划分后更新中心点,不断重复直至收敛。
      在这里插入图片描述

    • 保证在有限的迭代次数内收敛(有限收敛)

    • 数据点划分到距离最近的簇中心点所需时间为O(KN)

    • 重新计算簇中心点的时间为O(N)

  • K-means的问题:

    • 初始化的方式有可能导致划分结果完全不同,所以我们要对之进行避免

      • 解决方法
        • 可以多次运行,然后选择error最小的聚类方式
        • 不使用随机的方式选择初始点,比如选择最远的点作为聚类中心(kmeans++)
    • 首先随机选择第一个类的中心点,然后计算剩余点的距离,在选取第n+1个聚类中心时:距离当前n个聚类中心越远的点会有更高的概率被选为第n+1个聚类中心。

  • K-means的限制

    1. 簇是不同大小的话,不能很好的划分

    2. 簇有密度之分的话,也不能很好的划分

    3. 簇是非球形的话,划分结果也不好

    4. 解决方法:先划分出小的簇,然后合并成大簇。使用层次聚类或者基于密度的聚类可以克服以上三个问题。

  • Kmeans评价

    • 优点

      1. 简单,适用于规则不相交的簇
      2. 收敛相对较快
      3. 高效性,且时间复杂度为O(tkn)t是迭代次数,k是簇的个数,n是数据点的个数
    • 缺点

      1. 需要事先确定k的值
      2. 可能只收敛到局部最优解,需要尝试多种不同的初始中心
      3. 可能对噪声点和离群点敏感
      4. 有些集群的形状并不适用

📚层次聚类

🐇层次聚类概述

  • 层次聚类定义:一种无监督学习方法,用于将数据点划分为多个不同的聚类簇。该算法通过计算数据点之间的相似性或距离来构建层次结构,并根据相似性度量逐步合并或划分聚类簇。

  • 层次聚类思想:描述AB的相似度,A和B的相似性用最低共享内部节点的高度,相较于kmeans提供的是随机的结果,层次聚类提供的是确定性的结果,分为凝聚型层次聚类和分裂型层次聚类,主要关注自下而上或凝聚层次聚类。

  • 层次聚类算法:开始每个点都是一类。然后确定距离最近的两个类,将之合并。重复直到只剩下一个类。

  • 层次聚类优点

    • 不需要预先指定聚类数目,可以根据数据的内在结构自动进行聚类。
    • 能够捕捉到不同粒度的聚类结果,提供了更丰富的信息。
  • 层次聚类不足

    • 对于大规模数据集,计算复杂度较高。
    • 对噪声和离群点较为敏感。
    • 在处理非球形聚类簇或非线性可分数据时,效果可能不理想。

🐇dendrogram-树状图

  • 定义:树状图(dendrogram)是一种用于可视化层次聚类结果的图形表示方法。它将数据点和聚类簇按照层次结构展示,并显示它们之间的相似性或距离关系。

  • 结构:在树状图中,每个数据点都表示为一个叶节点(leaf node),而每个聚类簇则表示为一个内部节点(internal node)。叶节点和内部节点之间通过(branches)连接起来,形成一个树状结构。树状图的根节点(root node)表示整个数据集或最终的全局聚类簇。

  • 特点:树状图通常以垂直方向绘制,其中纵轴表示聚类簇之间的距离或相似性度量。根据树状图上的切割点,可以选择不同层次的聚类簇。根据需要,可以通过调整切割点来获取不同粒度的聚类结果。

  • 应用:树状图可以帮助我们直观地理解数据点之间的相似性和聚类结构。通过观察树状图,我们可以确定合适的聚类簇数目,或者选择合适的切割点来获取特定粒度的聚类结果。它在生物学、社会科学、计算机视觉等领域中被广泛使用。

🐇linkages-衡量两个类之间的距离

在这里插入图片描述

  • 两类距离

    • single linkage cut interpretation:对任意点xi,簇内存在一点xj,d(xi,xj)<=0.9
    • complete linkage cut interpretation:对任意点xi,其簇内的所有点都满足d(xi,xj)<=5
  • 各种问题

    • single linkage可能会划分出链条型的簇,簇不能太紧凑或者太分散
    • complete linkage可以避免链条型的簇,但是会受到过于紧凑簇的影响。因为它的分数是基于簇的最坏情况所以一个点可以更接近其他簇中的点,而不是它自己簇中的点。簇很紧凑,但距离不够远。
    • average linkage:不同于上述两个linkage,当我们切树状图的时候average linkage并不能给我们一个很好的解释。另外如果对结果简单应用一个单调递减变化,会影响最后的结果,从而我们不确定要使用哪种距离函数,而上述两个linkage没有这个问题

🐇Lance-Williams算法

  • Lance-Williams算法是一种用于层次聚类中的距离更新方法。它基于凝聚型层次聚类,在每次迭代中通过计算更新聚类簇之间的相似性或距离来合并最近的聚类簇。
  • Lance-Williams算法中聚类簇之间的连接方式:

    1. 单链接(Single Linkage):使用两个聚类簇中最近的两个数据点之间的距离作为聚类簇之间的距离。这种连接方式通常会导致产生长而细的聚类簇。

    2. 完全链接(Complete Linkage):使用两个聚类簇中最远的两个数据点之间的距离作为聚类簇之间的距离。这种连接方式通常会产生更紧凑且密集的聚类簇。

    3. 平均链接(Average Linkage):使用两个聚类簇中所有数据点对之间的平均距离作为聚类簇之间的距离。这种连接方式介于单链接和完全链接之间,能够平衡聚类簇的大小和紧密度。

  • 算法思想:Lance-Williams算法通过递归地更新聚类簇之间的距离矩阵来实现。在每次迭代中,根据选择的连接方式计算新合并的聚类簇与其他聚类簇之间的距离,并将这些距离更新到距离矩阵中。这个过程不断重复,直到满足停止条件或达到预定的聚类数目。

  • 特别注意:Lance-Williams算法只是层次聚类中的一种距离更新方法,而不是完整的层次聚类算法。它通常与其他聚类算法(如凝聚型层次聚类或K-means聚类)结合使用,以完成完整的聚类过程。

  • 下面的更新公式是所有linkage的统一公式:

在这里插入图片描述

  • Lance-Williams算法可以检测出离群点。

🐇K-means VS 层次聚类

  • K-means:低内存占用;计算快,时间复杂度 O ( n ) O(n) O(n);但是结果对随机的初始化非常敏感,同时初始簇的个数需要事先确定。

  • 层次聚类:是确定性的算法;树状图向我们展示了K的不同选择;仅需要一个距离矩阵,来看簇之间的不同;但是占用大量的内存,所需的计算也比K-means多。

📚DBSCAN

  • 基于密度的聚类算法,簇是高密度的区域,噪声点位于低密度的区域。

  • 对于簇来说有两类点

    • core point:其以eps为半径的范围内有至少MinPts个点

    • border point:在eps范围内的点数少于MinPts,但是他是core point的邻居

  • 簇的概念

    • 对于簇C内的每个点p,存在一个C中的点q,p在q的eps-neighborhood内,而且,q是core point

    • 点p是点q的直接密度可达,当p在q的eps-neighborhood范围内,且q是core point。是一个非对称的关系,p是q的直接密度可达,但是q不一定是p的直接密度可达

      在这里插入图片描述

    • p是q的密度可达,当有一系列的点p1,p2,…,ps,p1=q,ps=p,对所有1<i<s-1,pi+1是pi的直接密度可达

      在这里插入图片描述

    • p到q密度连通,当存在一个点v,是p和q的密度可达点,是一个对称的关系

      在这里插入图片描述

  • 簇举例

    • C是数据集D的非空子集:
    • (1)对所有p,q属于D,若p属于C,q是p的密度可达,那么q也属于C(Maximality)
    • (2)对所有p,q属于C,p是q的密度可达(connectivity)
  • 定义噪声点:不属于任何一个类的点称为噪声点。

  • 基本原理:簇C中的所有点都是密度可达的。

    1. 首先对所有点找其eps淋雨内的点到个数,判断其是否是core point
    2. 在邻域图上找core point的连通分量,忽略所有的非core point
    3. 将非core point划分到其eps邻域的簇,否则认为其是噪声点

    在这里插入图片描述

  • DBSCAN可以处理不同形状和大小的簇,但是当不同簇的密度不同时,DBSCAN很难有很好的的效果。

  • 时间复杂度:计算每个neighborhood的时候需要O(logn)的复杂度,整个算法时间复杂度为O(nlogn)

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

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

相关文章

pdf怎么转换成jpg图片?pdf转图片工具用它就够了

有时候&#xff0c;我们可能需要将pdf文档转换为图片格式&#xff0c;以便于文档的处理和管理。通过将pdf转换为图片&#xff0c;可以将每一页pdf转换为独立的图片文件&#xff0c;便于整理、存储和管理&#xff0c;如果您有多个PDF文件需要转换成图片&#xff0c;可以批量pdf转…

WorkPlus AI智能客服解决方案,提升企业服务质量

在当今竞争激烈的商业环境中&#xff0c;提供卓越的客户服务成为企业赢得市场竞争的关键。而AI智能客服技术的不断发展&#xff0c;则成为了提高服务效率和满意度的利器。作为一款领先的AI助理解决方案&#xff0c;WorkPlus AI助理以其出色的性能和智能化的功能&#xff0c;助力…

(二十八)ATP应用测试平台——使用electron集成vue3桌面应用程序

前言 Electron 是一个开源的框架&#xff0c;它允许使用 Web 技术&#xff08;HTML、CSS 和 JavaScript&#xff09;构建跨平台的桌面应用程序。通过 Electron&#xff0c;开发者可以使用前端技术栈来创建具有原生应用程序体验的桌面应用。 Electron可以在 Windows、Mac 和 L…

【C++进阶】STL容器--list使用迭代器问题分析

目录 前言 1. list的基本使用 1.1 list构造函数 1.2 list迭代器 1.3 list capacity 1.4 list元素访问 1.5 list 修改操作 insert erase swap resize clear 2. list失效迭代器问题 3. list使用算法库函数问题 总结 前言 list&#xff08;链表&#xff09;在C中非常重要…

怎么把音频转换成二维码?把音频制作成二维码的方法

现在很多二维码被用来作为信息传递的一种方式&#xff0c;常见的类型包括文本、图片、音视频等等。选择这种方式的好处在于&#xff0c;不仅制作起来非常简单&#xff0c;有效的降低成本&#xff0c;而且便捷性也比较强。那么如何将音频格式的文件做成二维码图片呢&#xff1f;…

一文读懂:怎样将 MongoDB 转变为预测数据库?操作详解来了!

商界对人工智能 (AI) 和机器学习 (ML) 的兴趣日益浓厚。ML/AI 的预测功能能够以比人工分析更快的速度从检测到的模式中快速获得见解。此外&#xff0c;生成式机器学习应用程序&#xff08;如 OpenAI 和 Hugging Face&#xff09;的最新进展为企业提供了强大工具以用于生成和分析…

arcgis 面要素shp数据处理

面要素是工作中用到最多的&#xff0c;那么面要素是如何形成的呢&#xff0c;主要还是由闭合的线要素转换而成。在面要素数据中常用的有以下几点&#xff1a; 一、 线转面&#xff08;要素转面&#xff09; 通过上一篇得到了点转线的要素&#xff0c;那么根据上节的线要素&am…

【Linux C | 进程】Linux 进程间通信的10种方式(2)

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

jieba.net使用NuGet管理器安装后初始化TfidfExtractor对象时报错

在引用安装jieba.net后,引用的Resources下只有如图几个文件 导致初始化TfidfExtractor时报错,报找不到 Could not find file E:\\TZKJNet\\robotindustry\\modules\\Tzkj.Superhard.SupplyDemand\\src\\Tzkj.Superhard.SupplyDemand.HttpApi.Host\\bin\\Debug\\net7.0\\Reso…

【C++干货基地】C++入门篇:输入输出流 | 缺省函数 | 函数重载(文末送书)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 哈喽各位铁汁们好啊&#xff0c;我是博主鸽芷咕《C干货基地》是由我的襄阳家乡零食基地有感而发&#xff0c;不知道各位的…

[leetcode] 18. 四数之和

文章目录 题目描述解题方法排序 双指针java代码 相似题目 题目描述 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] &#xff08;若两个四元组元素一一对应&a…

《解锁R统计分析:深度探索R Commander图形界面》

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 在数据科学与大数据技术的浪潮中&#xff0c;R…

Python爬取猫眼电影专业评分数据中的应用案例

在数据分析和可视化展示中&#xff0c;获取准确的电影专业评分数据至关重要。猫眼电影作为中国领先的电影信息与票务平台&#xff0c;其专业评分对于电影行业和影迷的数据来说具有重要意义。通过Python爬虫技术&#xff0c;我们可以实现从猫眼电影网站上自动获取这些数据目标。…

go swagger怎么玩(使用swagger为go项目生成python的SDK)

异常详细&#xff01;所到之处&#xff0c;问题全量解决、你值得拥有&#xff01; 目录 go方面需要做的准备&#xff08;步骤代码&#xff09; 生成对应语言的SDK 生成后怎么调用验证 提示&#xff1a;生成哪种语言的SDK只是本文的其中一步&#xff0c;具体哪种语言可以选择…

数字图像处理(实践篇)二十七 Python-OpenCV 滑动条的使用

目录 1 涉及的函数 2 实践 1 涉及的函数 ⒈ setWindowProperty()用于设置GUI应用程序的属性 cv2.setWindowProperty(windowsName, prop_id, prop_value) 参数: ①

Oracle篇—分区表的管理(第二篇,总共五篇)

☘️博主介绍☘️&#xff1a; ✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux&#xff0c;也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章&#xff0c;并且也会默默的点赞收藏加关注❣…

Wordpress seo优化该怎么做?

Wordpress作为开源管理系统&#xff0c;目前已然是世界上最流行的cms之一&#xff0c;这不仅仅因为他开源&#xff0c;对用户友好&#xff0c;让任何人都能轻而易举的制作网站&#xff0c;更是因为这套程序对于搜索引擎非常友好&#xff0c;是做谷歌seo的不二之选 Wordpress作为…

消息队列RabbitMQ.03.死信交换机的讲解与使用

目录 一、死信队列(延迟队列) 概念讲解 二、确认消息&#xff08;局部方法处理消息&#xff09; 三、代码实战 1.编写生产者代码&#xff0c;配置消息、直连交换机、路由键 1.1代码解析&#xff1a; 2.配置消费者接受类接受直连交换机的路由键 2.1. String msg&#xff…

nsenter比docker exec更底层的命令

文章目录 nsenter介绍安装方法简单使用 nsenter介绍 nsenter命令是一个可以在指定进程的命令空间下运行指定程序的命令。它位于util-linux包中。典型的用途就是进入容器的网络命令空间。相当多的容器为了轻量级&#xff0c;是不包含较为基础的命令的&#xff0c;比如说ip addr…

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例4-7 datalist

代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>datalist</title> </head><body> <input id"address" list"addressList"> <datalist id"addressList"…