当前位置: 首页 > news >正文

二十、【机器学习】【非监督学习】- 均值漂移 (Mean Shift)

系列文章目录

第一章 【机器学习】初识机器学习

第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression)

第三章 【机器学习】【监督学习】- 支持向量机 (SVM)

第四章【机器学习】【监督学习】- K-近邻算法 (K-NN)

第五章【机器学习】【监督学习】- 决策树 (Decision Trees)

第六章【机器学习】【监督学习】- 梯度提升机 (Gradient Boosting Machine, GBM)

第七章 【机器学习】【监督学习】-神经网络 (Neural Networks)

第八章【机器学习】【监督学习】-卷积神经网络 (CNN)

第九章【机器学习】【监督学习】-循环神经网络 (RNN)

第十章【机器学习】【监督学习】-线性回归

第十一章【机器学习】【监督学习】-局部加权线性回归 (Locally Weighted Linear Regression, LWLR)

第十二章【机器学习】【监督学习】- 岭回归 (Ridge Regression)

十三、【机器学习】【监督学习】- Lasso回归 (Least Absolute Shrinkage and Selection Operator)

十四、【机器学习】【监督学习】- 弹性网回归 (Elastic Net Regression)

十五、【机器学习】【监督学习】- 神经网络回归 

十六、【机器学习】【监督学习】- 支持向量回归 (SVR)

十七、【机器学习】【非监督学习】- K-均值 (K-Means) 

十八、【机器学习】【非监督学习】- DBSCAN (Density-Based Spatial Clustering of Applications with Noise)


目录

系列文章目录

一、非监督学习

(一)、定义

(二)、训练流程

(三)、基本算法分类

 二、均值漂移 (Mean Shift)

(一)、定义

(二)、基本概念

(三)、训练过程

1. 初始化

2. 计算偏移向量

3. 更新点的位置

4. 迭代

5. 应用于所有数据点

6. 形成聚类

7. 聚类后处理

8.注意事项

(四)、特点

(五)、适用场景

(六)、扩展

三、总结


一、非监督学习

(一)、定义

        非监督学习是一种机器学习方法,它处理的是没有标签的数据集。与监督学习不同,非监督学习算法不需要知道数据的正确分类或目标值。它的目标是通过数据内部的结构和模式来推断出有意义的信息,如数据的分布、聚类、降维或异常检测等。

(二)、训练流程

        非监督学习的训练流程通常包含以下几个步骤:

  1. 数据准备:收集和预处理数据,可能包括数据清洗、缺失值处理、数据标准化或归一化等。

  2. 模型选择:根据问题的性质选择合适的非监督学习算法。

  3. 参数初始化:初始化模型的参数,这一步对于某些算法至关重要,如K-means聚类。

  4. 模型训练:使用无标签数据训练模型,寻找数据中的结构或模式。这一过程可能涉及到迭代优化,直到满足某个停止准则,如收敛或达到预定的迭代次数。

  5. 结果评估:评估模型的结果,这通常比监督学习更具有挑战性,因为没有明确的“正确答案”。评估可能基于内在指标(如聚类的紧凑度和分离度)或外在指标(如与已知分类的比较)。

  6. 应用模型:使用训练好的模型对新数据进行分析或预测,如对新数据进行聚类或降维。

(三)、基本算法分类

        非监督学习算法可以大致分为以下几类:

  1. 聚类算法:用于将数据点分组到不同的簇中,常见的算法有K-means、层次聚类、DBSCAN、Gaussian Mixture Models等。

  2. 降维算法:用于减少数据的维度,同时尽可能保留数据的结构信息,常见的算法有PCA(主成分分析)、t-SNE(t-分布随机邻域嵌入)、自编码器等。

  3. 关联规则学习:用于发现数据集中项之间的关系,如Apriori算法和Eclat算法。

  4. 异常检测算法:用于识别数据集中的异常点或离群点,如Isolation Forest、Local Outlier Factor等。

  5. 自组织映射(SOM):一种神经网络模型,用于数据可视化和聚类,可以将高维数据映射到低维空间中。

  6. 生成模型:如变分自编码器(VAE)和生成对抗网络(GAN),它们可以生成类似训练数据的新样本。

        非监督学习在很多场景中都有广泛应用,如客户细分、图像识别、自然语言处理、生物信息学和推荐系统等。由于其灵活性和在处理大量未标注数据时的优势,非监督学习是数据科学和人工智能领域的重要组成部分。


 二、均值漂移 (Mean Shift)

(一)、定义

     均值漂移算法是一种无监督学习方法,最初由 Fukunaga 和 Hostetler 在 1975 年提出。它是一种基于密度的聚类算法,用于估计数据的模式(局部最大值),并且不需要事先指定聚类的数量。均值漂移算法在图像处理、计算机视觉、目标跟踪和数据挖掘等领域有着广泛的应用。

(二)、基本概念

     均值漂移算法的核心思想是利用数据点的密度来确定聚类中心。算法假设数据点在高密度区域附近聚集,并且这些高密度区域的中心代表了潜在的聚类中心。算法通过迭代地将数据点移动到其邻域内其他点的平均位置(质心)来实现这一点,从而逐渐“漂移”至高密度区域的中心。

(三)、训练过程

     均值漂移算法是一种迭代的、基于密度的聚类方法,它能够自动检测数据的高密度区域并确定这些区域的中心,即模式。下面是均值漂移算法的详细训练步骤:

1. 初始化
  • 选择一个数据点作为起始点,可以是数据集中的任意点,也可以是随机选择的点。
  • 确定带宽参数(bandwidth)h,这是一个核函数的尺度参数,决定了考虑邻域的范围。带宽的选择对算法的性能有很大影响,较小的带宽可能会导致过拟合,较大的带宽可能会忽略数据的细节。
2. 计算偏移向量
  • 对于选定的起始点,计算其邻域内所有点的加权平均位置,权重由核函数决定。常用的核函数是高斯核函数:​ ​其中 𝑥𝑖和 𝑥𝑗分别是数据点,∥𝑥𝑖−𝑥𝑗∥ 表示两点之间的距离。
3. 更新点的位置
  • 使用计算出的偏移向量来更新起始点的位置。偏移向量实际上是邻域内所有点的加权平均位置与当前点位置之间的差值。
  • 新位置 𝑥𝑛𝑒𝑤可以通过以下公式计算得出:​其中 𝑥x是当前点,𝑁是邻域内的数据点总数。
4. 迭代
  • 重复步骤2和3,直到点的位置变化小于一个预定义的阈值或达到最大迭代次数。这意味着点已经收敛到了高密度区域的中心。
5. 应用于所有数据点
  • 对数据集中的每一个数据点执行上述过程,直到所有点都收敛到各自高密度区域的中心。
6. 形成聚类
  • 当所有点都收敛后,将最终收敛到相同位置的点归为一个聚类。这通常意味着所有到达同一高密度区域中心的点都属于同一个模式或聚类。
7. 聚类后处理
  • 可以进一步对形成的聚类进行后处理,例如去除小的聚类、合并相邻的聚类或对聚类进行分类标签的分配。
8.注意事项
  • 均值漂移算法对带宽参数 h 的选择非常敏感。太小的 h 可能会导致算法检测到过多的模式,而太大的 h 可能会忽略数据的细节。
  • 在处理大规模数据集时,算法的计算成本可能会变得非常高。为了提高效率,可以使用KD树或其他数据结构来加速邻域点的查找,或者使用近似方法来减少计算量。

(四)、特点

  • 非参数性:均值漂移算法不需要预先设定聚类的数量,聚类数目由数据的分布自动决定。
  • 适应性:可以发现任意形状的聚类,因为它依赖于数据点的局部密度。
  • 高效性:对于大数据集,可以通过使用固定宽度的核函数和有效的数据结构(如KD树)来提高效率。
  • 多模态检测:均值漂移可以找到多个模式,即多个高密度区域的中心。

(五)、适用场景

  • 图像分割:用于图像的区域划分和对象检测。
  • 目标跟踪:在视频序列中跟踪移动对象。
  • 聚类分析:在没有先验知识的情况下对数据进行分组。
  • 异常检测:识别低密度区域的数据点,可能代表异常或噪声。

(六)、扩展

  • Kernel Adaptive Mean Shift (KAMS):通过动态调整核函数的宽度来适应数据的局部特性。
  • Mean Shift Variants for Video Background Subtraction:专门针对视频背景减除任务的均值漂移变种。
  • Fast Mean Shift Algorithm:优化算法的计算效率,尤其是在大规模数据集上的性能。

三、总结

     均值漂移算法因其灵活性和有效性,在许多领域都有重要的应用,尤其是在需要对数据进行无监督聚类和模式识别的场合。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • {Spring Boot 原理篇} Spring Boot自动装配原理
  • Tracy 小笔记:微信小程序 mpx 雷达图的实现
  • godot新建项目及设置外部编辑器为vscode
  • Python --NumPy库基础方法(1)
  • MySQL C API的介绍
  • HarmonyOS鸿蒙应用开发-ZRouter让系统路由表变得更简单
  • ubuntu实践
  • 从数据时代到智能时代,星环科技信雅达联合发布金融全栈解决方案
  • latex 表格处理
  • 初阶数据结构——二叉树大汇总
  • 【Android Compose】ListView效果
  • 《操作系统》(学习笔记)(王道)
  • Pytorch使用教学6-张量的分割与合并
  • UE4Editor.exe运行与调试 “-run=XX” 命令行
  • LabVIEW放大器自动测量系统
  • 【译】理解JavaScript:new 关键字
  • android 一些 utils
  • Android开源项目规范总结
  • canvas 高仿 Apple Watch 表盘
  • EOS是什么
  • Fabric架构演变之路
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • LintCode 31. partitionArray 数组划分
  • Netty源码解析1-Buffer
  • overflow: hidden IE7无效
  • spring security oauth2 password授权模式
  • 大型网站性能监测、分析与优化常见问题QA
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 前端之React实战:创建跨平台的项目架构
  • 人脸识别最新开发经验demo
  • 协程
  • 一个SAP顾问在美国的这些年
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 【干货分享】dos命令大全
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​必胜客礼品卡回收多少钱,回收平台哪家好
  • # 计算机视觉入门
  • #ifdef 的技巧用法
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #大学#套接字
  • #前后端分离# 头条发布系统
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (笔试题)分解质因式
  • (力扣)循环队列的实现与详解(C语言)
  • (三)c52学习之旅-点亮LED灯
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (一)认识微服务
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .FileZilla的使用和主动模式被动模式介绍
  • .Net - 类的介绍
  • .NET : 在VS2008中计算代码度量值
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .Net OpenCVSharp生成灰度图和二值图