【机器学习5】无监督学习聚类

相比于监督学习, 非监督学习的输入数据没有标签信息, 需要通过算法模型来挖掘数据内在的结构和模式。 非监督学习主要包含两大类学习方法: 数据聚类和特征变量关联。

1 K均值聚类及优化及改进模型

1.1 K-means

聚类是在事先并不知道任何样本类别标签的情况下, 通过数据之间的内在关系把样本划分为若干类别, 使得同类别样本之间的相似度高, 不同类别之间的样本相似度低 。
K均值聚类(KMeans Clustering) 的基本思想是, 通过迭代方式寻找K个簇(Cluster) 的一种划分方案, 使得聚类结果对应的代价函数最小。 特别地, 代价函数可以定义为各个样本距离所属簇中心点的误差平方和 :

在这里插入图片描述xi代表第i个样本, ci是xi所属于的簇, μci代表簇对应的中心点, M是样本总数。
在这里插入图片描述K均值算法在迭代时, 假设当前 J 没有达到最小值, 那么首先固定簇中心{μk},调整每个样例xi所属的类别ci来让J函数减少; 然后固定{ci}, 调整簇中心{μk}使J减小。 这两个过程交替循环, J单调递减: 当J递减到最小值时, {μk}和{ci}也同时收敛。

1.2 调优

K均值算法的调优一般可以从以下几个角度出发:

(1) 数据归一化和离群点处理。
(2) 合理选择K值。手肘法、Gap Statistic方法。
(3) 采用核函数。核聚类方法的主要思想是通过一个非线性映射, 将输入空间中的数据点映射到高位的特征空间中, 并在新的特征空间中进行聚类。 非线性映射增加了数据点线性可分的概率, 从而在经典的聚类算法失效的情况下, 通过引入核函数可以达到更为准确的聚类结果。

1.3 改进模型

K均值算法的主要缺点如下。
(1) 需要人工预先确定初始K值, 且该值和真实的数据分布未必吻合。
(2) K均值只能收敛到局部最优, 效果受到初始值很大。
(3) 易受到噪点的影响

1.3.1 K-means++

原始K均值算法最开始随机选取数据集中K个点作为聚类中心, 而K-means++按照如下的思想选取K个聚类中心。 假设已经选取了n个初始聚类中心( 0<n<K) , 则在选取第n+1个聚类中心时, 距离当前n个聚类中心越远的点会有更高的概率被选为第n+1个聚类中心。 在选取第一个聚类中心( n=1) 时同样通过随机的方法。 K-means++后续的执行和经典K均值算法相同。

2 ISODATA算法

当K值的大小不确定时, 可以使用ISODATA算法。 ISODATA的全称是迭代自组织数据分析法。当属于某个类别的样本数过少时, 把该类别去除; 当属于某个类别的样本数过多、 分散程度较大时, 把该类别分为两个子类别。 ISODATA算法在K均值算法的基础之上增加了两个操作, 一是分裂操作, 对应着增加聚类中心数; 二是合并操作, 对应着减少聚类中心数。 ISODATA算法是一个比较常见的算法, 其缺点是需要指定的参数比较多, 不仅仅需要一个参考的聚类数量K
, 还需要制定3个阈值。
下面介绍ISODATA算法的各个输入参数。
( 1) 预期的聚类中心数目K
在ISODATA运行过程中聚类中心数可以变化, K是一个用户指定的参考值, 该算法的聚类中心数目变动范围也由其决定。具体地, 最终输出的聚类中心数目常见范围是从Ko的一半, 到两倍Ko。
( 2) 每个类所要求的最少样本数目Nmin。
如果分裂后会导致某个子类别所包含样本数目小于该阈值, 就不会对该类别进行分裂操作。
( 3) 最大方差Sigma。
用于控制某个类别中样本的分散程度。 当样本的分散程度超过这个阈值时, 且分裂后满足( 1) , 进行分裂操作。
( 4) 两个聚类中心之间所允许最小距离Dmin。
如果两个类靠得非常近( 即这两个类别对应聚类中心之间的距离非常小) , 小于该阈值时, 则对这两个类进行合并操作。

3 高斯混合模型(GMM)

高斯混合模型假设每个簇的数据都是符合高斯分布(又叫正态分布) 的, 当前数据呈现的分布就是各个簇的高斯分布叠加在一起的结果。
高斯混合模型的核心思想是, 假设数据可以看作从多个高斯分布中生成出来的。 在该假设下, 每个单独的分模型都是标准高斯模型, 其均值μi和方差Σi是待估计的参数。 此外, 每个分模型都还有一个参数πi, 可以理解为权重或生成数据的概率。 高斯混合模型的公式为:
在这里插入图片描述高斯混合模型是一个生成式模型。 可以这样理解数据的生成过程, 假设一个
最简单的情况, 即只有两个一维标准高斯分布的分模型N(0,1)和N(5,1), 其权重分别为0.7和0.3。 那么, 在生成第一个数据点时, 先按照权重的比例, 随机选择一个分布, 比如选择第一个高斯分布, 接着从N(0,1)中生成一个点, 如−0.5, 便是第一个数据点。 在生成第二个数据点时, 随机选择到第二个高斯分布N(5,1), 生成了第二个点4.7。 如此循环执行, 便生成出了所有的数据点。
高斯混合模型的计算, 便成了最佳的均值μ, 方差Σ、 权重π的寻找,EM算法框架来求解该优化问题。EM算法是在最大化目标函数时, 先固定一个变量使整体函数变为凸优化函数, 求导得到最值, 然后利用最优参数更新被固定的变量, 进入下一个循环。 具体到高斯混合模型的求解, EM算法的迭代过程如下:
首先, 初始随机选择各参数的值。 然后, 重复下述两步, 直到收敛。
(1) E步骤。 根据当前的参数, 计算每个点由某个分模型生成的概率。
(2) M步骤。 使用E步骤估计出的概率, 来改进每个分模型的均值, 方差和权重。

算法相同不同
K均值可用于聚类;需要指定K值;使用EM算法;收敛于局部最优
高斯混合模型可用于聚类;需要指定K值;使用EM算法;收敛于局部最优可以给出一个样本属于某类的概率是多少; 可以用于概率密度的估计;可以用于生成新的样本点

3 自组织映射神经网络(SOM)

无监督学习方法的一种,可以用作聚类、 高维可视化、 数据压缩、 特征提取等多种用途。
自组织映射神经网络本质上是一个两层的神经网络, 包含输入层和输出层(竞争层)。输入层模拟感知外界输入信息的视网膜, 输出层模拟做出响应的大脑皮层。 输出层中神经元的个数通常是聚类的个数, 代表每一个需要聚成的类。训练时采用“竞争学习”的方式, 每个输入的样例在输出层中找到一个和它最匹配
的节点, 称为激活节点, 也叫winning neuron; 紧接着用随机梯度下降法更新激活节点的参数; 同时, 和激活节点临近的点也根据它们距离激活节点的远近而适当地更新参数。
在这里插入图片描述

4 聚类算法的评估

4.1数据簇

为了评估不同聚类算法的性能优劣, 我们需要了解常见的数据簇的特点。

数据簇数据分布数据特点
以中心定义集合中数据倾向于球形分布集合中的数据到中心的距离相比到其他簇中心的距离更近
以密度定义集合中数据呈现和周围数据簇明显不同的密度, 或稠密或稀疏当数据簇不规则或互相盘绕, 并且有噪声和离群点时, 常常使用基于密度的簇定义
以连通定义集合中的数据点和数据点之间有连接关系,整个数据簇表现为图结构对不规则形状或者缠绕的数据簇有效
以概念定义集合中的所有数据点具有某种共同性质

4.2 评估任务

4.2.1 估计聚类趋势

检测数据分布中是否存在非随机的簇结构。 如果数据是基本随机的, 那么聚类的结果也是毫无意义的。
应用霍普金斯统计量(Hopkins Statistic) 来判断数据在空间上的随机性[7]。 首先, 从所有样本中随机找n个点, 记为p1,p2,…,pn, 对其中的每一个点pi, 都在样本空间中找到一个离它最近的点并计算它们之间的距离xi, 从而得到距离向量x1,x2,…,xn; 然后, 从样本的可能取值范围内随机生成n个点, 记为q1,q2,…,qn, 对每个随机生成的点, 找到一个离它最近的样本点并计算它们之间的距离, 得到y1,y2,…,yn。 霍普金斯统计量H可以表示为:

在这里插入图片描述
如果样本接近随机分布, 那么分母的两个取值应该比较接近, 即H的值接近于0.5; 如果聚类趋势明显, 则随机生成的样本点距离应该远大于实际样本点的距离, 即 H值接近于1。

4.2.2 判定数据簇数

数据簇数的判定方法有很多, 例如手肘法和Gap Statistic方法。 需要说明的是, 用于评估的最佳数据簇数可能与程序输出的簇数是不同的。例如, 有些聚类算法可以自动地确定数据的簇数, 但可能与我们通过其他方法确定的最优数据簇数有所差别

4.2.3测定聚类质量

给定预设的簇数, 不同的聚类算法将输出不同的结果, 如何判定哪个聚类结果的质量更高呢? 在无监督的情况下, 我们可以通过考察簇的分离情况和簇的紧凑情况来评估聚类的效果。

度量指标定义特点
轮廓系数在这里插入图片描述a§是点p与同一簇中的其他点p’之间的平均距离; b§是点p与另一个不同簇中的点之间的最小平均距离(如果有n个其他簇, 则只计算和点p最接近的一簇中的点与该点的平均距离)a§反映的是p所属簇中数据的紧凑程度, b§反映的是该簇与其他临近簇的分离程度。 显然, b§越大, a§越小, 对应的聚类质量越好
均方根标准偏差 RMSSTD集合中数据呈现和周围数据簇明显不同的密度, 或稠密或稀疏其中Ci代表第i个簇, ci是该簇的中心, x∈ Ci代表属于第i个簇的一个样本点, ni为第i个簇的样本数量, P为样本点对应的向量维数。RMSSTD可以看作是经过归一化的标准差
R方(R-Square)集合中的数据点和数据点之间有连接关系,整个数据簇表现为图结构D代表整个数据集, c代表数据集D的中心点RS代表了聚类之后的结果与聚类之前相比, 对应的平方误差和指标的改进幅度
改进的HubertΓ统计集合中的所有数据点具有某种共同性质Γ值越大说明聚类的结果与样本的原始距离越吻合, 也就是聚类质量越高

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

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

相关文章

Vue项目的学习一

1、Vue项目里面的.js文件里面对象添加属性 例如&#xff1a;在对象&#xff1a;row&#xff0c;需要在对象row里面添加一个属性状态&#xff1a;type&#xff0c;使用里面的Vue.set函数 Vue.set(参数1,参数2,参数3) Vue.set(row,type,false)解析&#xff1a; 参数1&#xff1…

不应该被忽视的10个好用的PDF文档修改器

您在寻找最好的免费开源 PDF 编辑器吗&#xff1f;您是否正在寻找免费编辑 PDF 文档的解决方案&#xff1f;如果您正在寻找此类问题的答案。那么&#xff0c;亲爱的朋友&#xff0c;您来对地方了&#xff0c;因为今天&#xff0c;在本文中&#xff0c;我将讨论一些适用于 Windo…

能够导出源代码的低代码平台有哪些?

目录 一、源码的优势 &#xff08;1&#xff09;定制性需求&#xff1a; &#xff08;2&#xff09;适应未来需求变化&#xff1a; &#xff08;3&#xff09;安全和可靠性&#xff1a; &#xff08;4&#xff09;高级功能和集成&#xff1a; 二、支持源代码的厂商 目前国内大多…

数据结构—队列的实现

前言&#xff1a;上次我们已经学习了数据结构中一个重要的线性表—栈&#xff0c;那么我们这一次就来学习另外一个重要的线性表—队列。 目录&#xff1a; 一、 队列的概念 二、 队列的实现&#xff1a; 1.队列的创建 三、 队列的操作 1.初始化队列 2.队尾入队列 3.队头出队列…

Linux中at命令添加一次性任务

1、工作原理 功能&#xff1a;在某个时间点&#xff0c;执行一次命令。 特点&#xff1a;任务是用户隔离的。 条件&#xff1a;必须要保证atd进程存在。 ps -ef |grep atd 原理&#xff1a;atd进程循环遍历队列里的任务&#xff0c;有则按顺序执行任务&#xff0c;没有&#x…

攻略 | 参与Moonbeam Ignite Ecosystem Tour

Moonbeam联合Moonwell和Beamswap一起举办社区链上活动&#xff0c;旨在让社区用户通过任务来探索Moonbeam、Moonwell、Beamswap平台。在了解如何使用的同时&#xff0c;参与任务挑战还有机会分得 1700 USDC 奖池 &#x1f381; 的奖励&#xff01;我已经完成全部任务&#xff0…

React Hooks实战:Web开发与设计

目录 前言 一、React Hooks 简介 二、React Hooks 的基本用法 1. 使用 useState 创建状态 2. 使用 useEffect 添加副作用 3. 使用 useContext 获取上下文 三、React Hooks 的常见问题 1. 循环引用问题 2. 副作用问题 四、React Hooks 实战案例 1. 使用 useState钩子…

数据分析的流程:CRISP-DM方法和SEMMA方法

CRISP-DM方法 SEMMA方法 角色与职责&#xff1a;EDIT数字化模型

【Android】画面卡顿优化列表流畅度五之下拉刷新上拉加载更多组件RefreshLayout修改

之前也写过类似组件的介绍&#xff1a; 地址&#xff1a;下拉刷新&上拉加载更多组件SmartRefreshLayout 本来打算用这个替换的&#xff0c;但在进行仔细研究发现不太合适。功能都很好&#xff0c;但嵌入不了当前的工程体系里。原因就是那啥体制懂的都懂。这样的组件需要改…

11-13 /11-14代理模式 AOP

调用者 代理对象 目标对象 代理对象除了可以完成核心任务&#xff0c;还可以增强其他任务,无感的增强 代理模式目的: 不改变目标对象的目标方法的前提,去增强目标方法 分为:静态代理,动态代理 静态代理 有对象->前提需要有一个类&#xff0c;那么我们可以事先写好一个类&a…

游戏缺失XINPUT1_3.dll的解决方法,一招搞定dll报错问题

当您尝试玩游戏或运行某个软件时&#xff0c;可能会遇到系统报错提示“XINPUT1_3.dll丢失”。这个错误通常是由于缺少或损坏了XINPUT1_3.dll文件导致的。“XINPUT1_3.dll”是一个动态链接库&#xff08;Dynamic Link Libraries&#xff0c;简称DLL&#xff09;文件。它是微软公…

Blazor 附件上传和下载功能

效果图 page "/uploadFile" inject Microsoft.AspNetCore.Hosting.IWebHostEnvironment WebHostEnvironment inject ToastService ToastService inject DownloadService DownloadService<h3>UploadFile</h3><Button OnClick"ButtonClick" C…

Linux虚拟机的安装

文章目录 1. 准备虚拟机2. 安装所需软件3. 上传项目文件4. 配置项目环境5. 安装项目依赖6. 数据库设置7. 启动项目8. 测试项目9. 设置域名和DNS&#xff08;可选&#xff09;10. 定期维护11. 使用反向代理&#xff08;可选&#xff09;12. 安全性加固13. 使用容器化技术&#x…

间歇性工作的时钟波形对行sdc约束怎么写

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 如下图&#xff0c;紫色部分波形间歇式工作&#xff0c;如果要写约束应该怎么写&#xff1f; 答&#xff1a;按照最小周期写即可&#xff0c;只看active的部分&#xff0c;至于…

springboot+maven多环境动态配置,以及编译失败的解决方案

一、前言 在我们的项目开发过程中一般会有多套的环境&#xff0c;比如比较常见的会有三套&#xff1a; dev &#xff08;研发环境&#xff09;&#xff0c;test(测试环境)&#xff0c;prod&#xff08;生产环境&#xff09;。 application.yml 是主配置文件&#xff0c;当在不…

【带头学C++】----- 六、结构体 ---- 6.6 结构体的指针成员

6.5结构体指针变量 结构体的指针变量:本质是变量只是该变量保存的是结构体变量的地址 6.5.1结构体指针变量的定义 通过指针&#xff0c;可以访问到我们结构体变量的值 可以通过 -> 符号 访问到结构体变量 6.5.2 结构体数组元素的指针变量 指针变量保存结构体数组元素…

Vue3弹性布局(Flex)

效果如下图&#xff1a;在线预览 APIs 参数说明类型默认值必传width区域总宽度string | number‘auto’falseverticalflex 主轴的方向是否垂直&#xff0c;vertical 使用 flex-direction: columnbooleanfalsefalsewrap设置元素单行显示还是多行显示&#xff1b;参考 flex-wrap…

《线性代数》科教版教材必会习题

出一期比较尴尬的博客——有关线代教材的课后题总结~ 之所以说尴尬&#xff0c;主要有两个主要原因&#xff1a;这本科教版第三版的教材&#xff0c;整体看起来并不是那么舒服&#xff0c;甚至被我们的老师吐槽过&#xff0c;更好地选择时同济版的那本紫书——我们学校的新生这…

AWTK实现汽车仪表Cluster/DashBoard嵌入式GUI开发(六):FREERTOS移植

前言: 一般的GUI工程都需要一个操作系统,可能是linux,重量级的,也可能是FreeRTOS,轻量级的。 一句话理解那就是工程就是FreeRTOS task任务的集合。 一个main函数可以看到大框架: 很显然,除了第一个是硬件配置的初始化,中间最重要的部分就是要创建任务。而一个任务主…

扫码下载视频怎么做?适用多种格式视频文件

现在将视频制作二维码来展示的应用场景越来越多&#xff0c;企业、学校、个人、产品等等很多内容都会使用视频二维码。可能有些小伙伴用来生成二维码的视频只能查看不能下载&#xff0c;导致在使用时受到限制&#xff0c;那么想要制作可以下载视频二维码的小伙伴&#xff0c;下…