聚类--机器学习西瓜书阅读笔记(六)
无监督学习:通过对无标记训练样本的学习,揭示数据内在规律和性质。
聚类试图将数据集中的样本划分为若干不相交的子集,聚类过程自动形成簇结构,簇对应的语义需要子集命名把握。
聚类过程可以作为单独的过程,寻找数据内在分布结构,也可作为其他任务的前驱过程。
聚类涉及的两个基本问题——————性能度量和距离计算
性能度量(有效性指标):外部指标、内部指标,明确性能度量可以作为聚类过程的优化目标。
距离度量:常用闵可夫斯基距离。
闵可夫斯基距离可用于有序属性(可以直接在属性值上计算距离);
VDM用于无序属性(不能直接在属性值上计算距离);
闵可夫斯基距离和VDM结合可以处理混合属性。
样本空间中,不同属性的重要性不同,可以使用加权距离。
一般基于距离定义相似性度量,距离越大,相似性度量越大,用于相似性度量的距离未必一点要满足距离度量所有基本属性(非负、同一、对称、直递),即非度量距离。现实任务中,有必要基于数据样本确定合适的距离计算。
原型聚类:假设聚类结构能通过一度原型刻画
原型:样本空间中具有代表性的点。
K均值算法(k-means):属于NP问题,采用贪心策略
具体步骤包括:
- 初始化:随机选择K个数据点作为初始的簇质心。
- 分配:根据每个数据点与各个簇质心的距离,将其分配给最近的簇。
- 更新:重新计算每个簇的质心,即取簇内所有数据点的平均值作为新的质心。
- 迭代:重复分配和更新步骤,直到满足某种终止条件(如簇质心不再发生显著变化或达到预设的迭代次数)。需要设置最大运行次数和最小调整幅度阈值。
优点:
- 算法简单,易于实现。
- 计算效率高,适合处理大规模数据集。
- 可以识别出任意形状的聚类,只要聚类是凸形的。
缺点:
- 对初始聚类中心的选择敏感,不同的初始值可能导致不同的聚类结果。
- 需要预先指定聚类数目K,但K值往往难以确定。
- 对噪声和异常值敏感,可能影响聚类结果。
- 只适合发现具有相似方差的聚类,且聚类是凸形的。
为了改善K-means算法对初始聚类中心选择的敏感性,K-means++算法被提出。K-means++的主要改进在于初始聚类中心的选取方式:
- 从数据集中随机选择一个点作为第一个聚类中心。
- 对于数据集中的每个点,计算其到已选择的聚类中心的距离。
- 选择下一个聚类中心,其被选中的概率与到已选择聚类中心的距离的平方成正比。
- 重复步骤2和3,直到选择了K个聚类中心。
K-means算法的变种和改进:
- K-means||:一种快速的K-means算法,用于大规模数据集。
- 模糊C均值(FCM):允许数据点属于多个聚类,具有一定程度的隶属度。
- 基于密度的K-means:结合了密度信息,更适合处理非球形聚类。
学习向量量化(LVQ)
数据带有标签,学习过程利用监督信心辅助聚类。
假设给定样本集,共m个,每个样本是由n个属性描述的特征向量。LVQ的学习目标,学得一组n维原型向量,每个原型向量代表一个聚类簇。形成对样本空间的簇划分,称为Voronoi剖分。
LVQ的工作流程主要包括以下步骤:
- 初始化:随机选择若干个初始码本向量,每个向量对应一个类别标签。
- 训练:对于每一个输入样本,算法计算其与所有码本向量之间的距离,并将其归为最近的类别。然后根据LVQ更新规则,调整最近类别对应的码本向量的位置。
- 迭代优化:重复上述过程直至达到预设的停止条件,如达到最大迭代次数或误差率低于阈值。
LVQ算法的更新规则
- 当输入样本与正类别原型的距离小于负类别原型时,正类别原型会向输入样本移动;
- 反之,则远离输入样本。这一动态更新机制确保了码本向量能够逐步逼近训练集各类别的边界,实现更准确的分类决策边界学习。
优点:
- LVQ具有直观易理解的特点,它的解释性强,能直接生成可视化的分类边界。
- 算法训练速度快,适用于实时或增量式学习场景。
- 结构简单,不需要复杂的反向传播过程。
缺点:
- 对初始码本向量的选择敏感,不同的初始化可能会导致不同的收敛结果。
- 当类间边界复杂时,LVQ可能无法很好地捕捉特征空间的拓扑结构,特别是在高维数据集中表现一般。
- 对噪声和异常值较为敏感,可能导致过拟合或欠拟合。
高斯混合聚类:利用概率模型表达原型聚类
是一种基于概率的聚类算法,它假设数据是由多个高斯分布混合而成的。GMC使用期望最大化(Expectation-Maximization, EM)算法来估计数据的生成模型参数,包括各个高斯分布的均值、协方差和混合系数。这种算法特别适用于数据集中存在多个子群体且这些群体具有不同统计特性的情况。
算法原理
GMC的核心思想是将数据集表示为多个高斯分布的混合。每个高斯分布(也称为组件)都有其自己的均值、协方差和混合权重。算法的目标是找到一组参数,使得这些高斯分布的混合能够最好地拟合观测数据。GMC通过迭代的方式进行参数估计:
- E步(期望步骤):计算每个数据点属于每个高斯分布的后验概率。
- M步(最大化步骤):根据这些后验概率,更新每个高斯分布的参数,以最大化观测数据的似然。
优缺点
优点:
- 能够处理多维数据,并且可以很好地拟合数据的分布。
- 可以处理混合分布数据,提供灵活的聚类形状。
- 软聚类特性为数据点提供了属于每个聚类的概率,表达不确定性。
缺点:
- 计算复杂度高,尤其是在大数据集上。
- 对初始化敏感,不同的初始化可能导致不同的聚类结果。
- 需要预先指定高斯分布的数量,这可能需要领域知识或通过交叉验证等方法确定。
- 对异常值敏感,且可能遇到协方差矩阵奇异的问题。
变体和优化
为了解决GMC的一些局限性,研究者们提出了多种变体和优化方法,例如:
- 带有协方差约束的GMM:对协方差矩阵施加约束,如球形、对角或带对角线约束,以简化模型或避免过度拟合。
- 变分贝叶斯GMM:通过引入先验分布和变分推断来自动确定聚类的数量,减少对初始化的依赖。
高斯混合聚类是一种强大的聚类工具,尤其适用于数据中存在多个潜在子群体的情况。通过为每个数据点提供属于每个聚类的概率信息,它提供了对数据的更丰富的解释。
密度聚类
假设聚类的结构能通过样本分布的紧密程度确定,从样本密度的角度考察样本之间的可连接性,基于可连接样本不断扩展聚类簇获得结果。是基于数据空间中密度分布的聚类方法,它特别适用于发现任意形状的聚类,并且能够处理噪声数据。密度聚类方法的主要优点是它们不依赖于距离度量,能够发现任意形状的聚类,并且对噪声数据具有较好的鲁棒性。然而,这些算法通常需要仔细选择参数,以确保聚类结果的有效性。此外,密度聚类算法在处理大规模数据集时可能会遇到性能瓶颈,因此常常需要采用索引结构或基于网格的方法来加速密度估计
DBSCAN是一种著名的密度聚类方法,基于一组邻域参数刻画样本分布近密程度。
- DBSCAN算法的核心思想是利用密度的概念来识别聚类。它将具有足够密度的区域划分为聚类,并能够在具有噪声的空间数据库中发现任意形状的聚类。
- 算法通过两个主要参数来工作:
Eps(邻域的最大半径)和MinPts(在Eps邻域中的最少点数)。 - DBSCAN将数据点分为三类:核心点、边界点和噪声点。核心点的邻域内点的数量满足最小密度要求,边界点位于核心点的邻域内但本身不是核心点,而噪声点则是不满足核心点或边界点条件的点。
- DBSCAN的优点包括能够发现任意形状的聚类、对噪声不敏感,且不需要预先指定聚类数目。缺点是对参数
Eps和MinPts敏感,且在高维数据中表现可能不佳
OPTICS (Ordering Points To Identify the Clustering Structure)
- OPTICS算法是DBSCAN的一种扩展,它通过排序点来识别聚类结构,允许发现不同密度的聚类。
- 该算法引入了核心距离和可达距离的概念,使得聚类过程对输入参数不那么敏感
DENCLUE (Density-based Clustering with Noise and Cluster Estimation)
- DENCLUE算法基于密度分布函数进行聚类,其主要思想是通过估计数据点的密度分布来识别聚类结构。
- 该算法通过选择一个合适的密度阈值来确定聚类的核心点,并将其他点根据其与核心点的密度关系归入相应的聚类
层次聚类
试图从不同层次对数据进行划分,形成树形聚类结构,采用策略:自底向上、自顶向下。
自底向上的聚合(Agglomerative Clustering):AGNES算法
- 初始化:每个数据点被视为一个单独的聚类。
- 合并:在每一步中,算法会找到最近的两个聚类并将它们合并成一个更大的聚类。
- 重复:重复合并步骤,直到所有的数据点都合并成一个聚类,或者达到某个停止条件。
- 树状图:这个过程可以用树状图(Dendrogram)来表示,树状图展示了聚类合并的顺序和距离。
自顶向下的分裂(Divisive Clustering)
- 初始化:所有数据点开始时都在一个聚类中。
- 分裂:在每一步中,算法会选择一个聚类并将其分裂成两个或更多的子聚类。
- 重复:重复分裂步骤,直到每个聚类只包含一个数据点,或者达到某个停止条件。
- 树状图:这个过程同样可以用树状图来表示,但与聚合方法相反,树状图从顶部开始,向下展示分裂的过程。
距离度量
在层次聚类中,选择适当的距离度量非常重要,常用的距离度量包括:
- 欧氏距离(Euclidean Distance):最常见的距离度量,适用于大多数情况。
- 曼哈顿距离(Manhattan Distance):在城市街区模型中使用,计算两点在标准坐标系上的绝对轴距总和。
- 余弦相似度(Cosine Similarity):常用于文本数据,衡量两个向量之间的夹角。
链接方法
在层次聚类中,合并聚类时使用的链接方法也很重要,常见的链接方法包括:
- 最近邻链接(Single Linkage):基于两个聚类中最近的两个点的距离。
- 完全链接(Complete Linkage):基于两个聚类中最远的两个点的距离。
- 平均链接(Average Linkage):基于两个聚类中所有点对的平均距离。
- Ward方法:最小化聚类内差异的平方和。
层次聚类的结果可以通过剪切树状图来确定聚类的数量,这通常需要一些主观判断。层次聚类是一种非常灵活的聚类方法,适用于各种不同的数据类型和规模。
相关文章:
聚类--机器学习西瓜书阅读笔记(六)
无监督学习:通过对无标记训练样本的学习,揭示数据内在规律和性质。 聚类试图将数据集中的样本划分为若干不相交的子集,聚类过程自动形成簇结构,簇对应的语义需要子集命名把握。 聚类过程可以作为单独的过程,寻找数据…...
OpenHarmony(1)开发环境搭建
一:开源项目 OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,目标是面向全场景、全连接、全智能时代,基于开源的方式,搭建一个智能终端设备操作系统的框架和平台࿰…...
Triton服务在ASR语音识别系统中的实现
Triton服务在ASR语音识别系统中的实现 一、引言二、环境准备1. 硬件环境2. 软件环境 三、模型选择与训练1. 数据准备2. 模型架构3. 模型训练 四、模型转换与优化1. 模型转换2. 模型优化 五、配置Triton服务1. 安装Triton服务2. 创建模型仓库 一、引言 自动语音识别(…...
Typora一款极简Markdown文档编辑、阅读器,实时预览,所见即所得,多主题,免费生成序列号!
文章目录 Typora下载安装Typora序列号生成 Typora是一款Markdown编辑器和阅读器,风格极简,实时预览,所见即所得,支持MacOS、Windows、Linux操作系统,有图片和文字、代码块、数学公式、图表、目录大纲、文件管理、导入导…...
python机器人编程——用python调用API控制wifi小车的实例程序
目录 一、前言二、一个客户端的简单实现2.1 首先定义一个类及属性2.2 其次定义连接方法2.3 定义一些回调函数2.4 定义发送小车指令方法2.5 定义一个正常关闭方法 三、python编程控制小车的demo实现四、小结PS.扩展阅读ps1.六自由度机器人相关文章资源ps2.四轴机器相关文章资源p…...
面试学习整理-线程池
线程池 简介JUC包线程池介绍线程池最常问也最常用-参数线程执行分析-线程是怎么运行的进程和线程的区别Executors工厂类提供四种线程池Executors和ThreaPoolExecutor创建线程池的区别两种提交任务的方法spring集成的线程池 简介 线程池作为实际使用和面试较多的技能区, 学习是…...
Debian会取代CentOS成为更主流的操作系统吗?
我们知道,其实之前的话,国内用户对centos几乎是情有独钟的偏爱,很多人都喜欢选择centos系统,可能是受到一些原因的影响导致的吧,比如他相当于免费的红帽子系统,或者一些教程和网上的资料都推荐这个系统&…...
网络安全领域推荐证书介绍及备考指南
在网络安全领域,拥有专业认证不仅可以证明个人的专业能力,还能帮助在实际工作中应用先进的技术和知识。以下是几种热门的网络安全证书介绍及备考指南。 1. OSCP (Offensive Security Certified Professional) 证书简介 OSCP是针对渗透测试领域的入门级…...
SpringBoot项目ES6.8升级ES7.4.0
SpringBoot项目ES6.8.15 升级到 ES7.4.0 前言 由于公司内部资产统一整理,并且公司内部部署有多个版本的es集群,所以有必要将目前负责项目的ES集群升级到公司同一版本7.4.0。es6到es7的升级变化还是挺大的,因此在这里做一下简单记录…...
深度学习 之 模型部署 使用Flask和PyTorch构建图像分类Web服务
引言 随着深度学习的发展,图像分类已成为一项基础的技术,被广泛应用于各种场景之中。本文将介绍如何使用Flask框架和PyTorch库来构建一个简单的图像分类Web服务。通过这个服务,用户可以通过HTTP POST请求上传花朵图片,然后由后端…...
MFC工控项目实例二十六创建数据库
承接专栏《MFC工控项目实例二十五多媒体定时计时器》 用选取的型号为文件名建立文件夹,再在下面用测试的当天的时间创建文件夹,在这个文件中用测试的时/分/秒为数据库名创建Adcess数据库。 1、在StdAfx.h文件最下面添加代码 #import "C:/Program F…...
springmvc源码流程解析(一)
Springmvc 是基于servlet 规范来完成的一个请求响应模块,也是spring 中比较大的一个 模块,现在基本上都是零xml 配置了,采用的是约定大于配置的方式,所以我们的springmvc 也是采用这种零xml 配置的方式。 要完成这种过程ÿ…...
【论文阅读】SRGAN
学习资料 论文题目:基于生成对抗网络的照片级单幅图像超分辨率(Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network)论文地址:https://arxiv.org/abs/1609.04802代码:GitHub - xiph/daala: Modern video compression for the interne…...
kubelet PLEG实现
概述 kubelet的主要作用是确保pod状态和podspec保持一致,这里的pod状态包括pod中的container状态,个数等。 为了达到这个目的,kubelet需要从多个来源watch pod spec的变化,并周期从container runtime获取最新的container状态。比如…...
leetcode49:字母异位词分组
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan", "ate", "nat", &…...
一个将.Geojson文件转成shapefile和kml文件的在线页面工具(续)
接上一专栏:这个网址有个bug,每个月只能免费转3次,这等于没用! 一个将.Geojson文件转成shapefile和kml文件的在线页面工具_geojson转shp在线-CSDN博客 下面这个网址实测可以免费多次转换! Quickmaptools : Geojson to…...
论文阅读(二十四):SA-Net: Shuffle Attention for Deep Convolutional Neural Networks
文章目录 Abstract1.Introduction2.Shuffle Attention3.Code 论文:SA-Net:Shuffle Attention for Deep Convolutional Neural Networks(SA-Net:置换注意力机制) 论文链接:SA-Net:Shuffle Attention for Deep Convo…...
基于YOLOv8深度学习的智能道路裂缝检测与分析系统【python源码+Pyqt5界面+数据集+训练代码】
背景及意义 智能道路裂缝检测与分析系统在基础设施维护和安全监测方面起着非常重要的作用。道路裂缝是道路衰老和破坏的早期迹象,若不及时发现和修复,可能会导致道路结构的进一步恶化,甚至引发安全事故。本文基于YOLOv8深度学习框架ÿ…...
YOLOv11入门到入土使用教程(含结构图)
一、简介 YOLOv11是Ultralytics公司在之前的YOLO版本上推出的最新一代实时目标检测器,支持目标检测、追踪、实力分割、图像分类和姿态估计等任务。官方代码:ultralytics/ultralytics:ultralytics YOLO11 🚀 (github.com)https://g…...
python 爬虫抓取百度热搜
实现思路: 第1步、在百度热搜页获取热搜元素 元素类名为category-wrap_iQLoo 即我们只需要获取类名category-wrap_为前缀的元素 第2步、编写python脚本实现爬虫 import requests from bs4 import BeautifulSoupurl https://top.baidu.com/board?tabrealtime he…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
