聚类--机器学习西瓜书阅读笔记(六)
无监督学习:通过对无标记训练样本的学习,揭示数据内在规律和性质。
聚类试图将数据集中的样本划分为若干不相交的子集,聚类过程自动形成簇结构,簇对应的语义需要子集命名把握。
聚类过程可以作为单独的过程,寻找数据内在分布结构,也可作为其他任务的前驱过程。
聚类涉及的两个基本问题——————性能度量和距离计算
性能度量(有效性指标):外部指标、内部指标,明确性能度量可以作为聚类过程的优化目标。
距离度量:常用闵可夫斯基距离。
闵可夫斯基距离可用于有序属性(可以直接在属性值上计算距离);
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…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...

k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...

实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...

在Zenodo下载文件 用到googlecolab googledrive
方法:Figshare/Zenodo上的数据/文件下载不下来?尝试利用Google Colab :https://zhuanlan.zhihu.com/p/1898503078782674027 参考: 通过Colab&谷歌云下载Figshare数据,超级实用!!࿰…...
起重机起升机构的安全装置有哪些?
起重机起升机构的安全装置是保障吊装作业安全的关键部件,主要用于防止超载、失控、断绳等危险情况。以下是常见的安全装置及其功能和原理: 一、超载保护装置(核心安全装置) 1. 起重量限制器 功能:实时监测起升载荷&a…...