向毕业妥协系列之机器学习笔记:无监督学习-聚类

news2025/7/7 15:00:58

目录

序言

一.什么是聚类

二.K-means算法

三.优化目标

四.初始化K-means

五.选择聚类数量(k=?)


 

序言

第三课这块要学习的几块知识如下:

在学完监督学习之后,接下来我们要学习的东西分别是聚类,异常检测,推荐系统和强化学习。

可以再回头看一眼这监督学习,非监督学习,强化学习的区别和联系:

https://hanhan.blog.csdn.net/article/details/127461500

一.什么是聚类

将开始介绍聚类算法。这将是一个激动人心的时刻,因为这是我们学习的第一个非监督学习算法。我们将要让计算机学习无标签数据,而不是此前的标签数据。

那么,什么是非监督学习呢?在课程的一开始,我曾简单的介绍过非监督学习,然而,我们还是有必要将其与监督学习做一下比较。

在一个典型的监督学习中,我们有一个有标签的训练集,我们的目标是找到能够区分正样本和负样本的决策边界,在这里的监督学习中,我们有一系列标签,我们需要据此拟合一个假设函数。与此不同的是,在非监督学习中,我们的数据没有附带任何标签,我们拿到的数据就是这样的:

在这里我们有一系列点,却没有标签。因此,我们的训练集可以写成只有x1~xm。我们没有任何标签y。因此,图上画的这些点没有标签信息。也就是说,在非监督学习中,我们需要将一系列无标签的训练数据,输入到一个算法中,然后我们告诉这个算法,快去为我们找找这个数据的内在结构给定数据。我们可能需要某种算法帮助我们寻找一种结构。图上的数据看起来可以分成两个分开的点集(称为簇),一个能够找到我圈出的这些点集的算法,就被称为聚类算法。

这将是我们介绍的第一个非监督学习算法。当然,此后我们还将提到其他类型的非监督学习算法,它们可以为我们找到其他类型的结构或者其他的一些模式,而不只是簇。

我们将先介绍聚类算法。此后,我们将陆续介绍其他算法。那么聚类算法一般用来做什么呢?

在这门课程的早些时候,我曾经列举过一些应用:比如市场分割。也许你在数据库中存储了许多客户的信息,而你希望将他们分成不同的客户群,这样你可以对不同类型的客户分别销售产品或者分别提供更适合的服务。社交网络分析:事实上有许多研究人员正在研究这样一些内容,他们关注一群人,关注社交网络,例如FacebookGoogle+,或者是其他的一些信息,比如说:你经常跟哪些人联系,而这些人又经常给哪些人发邮件,由此找到关系密切的人群。因此,这可能需要另一个聚类算法,你希望用它发现社交网络中关系密切的朋友。我有一个朋友正在研究这个问题,他希望使用聚类算法来更好的组织计算机集群,或者更好的管理数据中心。因为如果你知道数据中心中,那些计算机经常协作工作。那么,你可以重新分配资源,重新布局网络。由此优化数据中心,优化数据通信。

最后,我实际上还在研究如何利用聚类算法了解星系的形成。然后用这个知识,了解一些天文学上的细节问题。好的,这就是聚类算法。这将是我们介绍的第一个非监督学习算法。在下一个视频中,我们将开始介绍一个具体的聚类算法。

二.K-means算法

K-均值是最普及的聚类算法,算法接受一个未标记的数据集,然后将数据聚类成不同的组。

K-均值是一个迭代算法,假设我们想要将数据聚类成n个组,其方法为:

  1. 首先选择K个随机的点(注意这K个初始点的维度要和我们的训练示例维度相同,位置随机且要从所有的离散点中选K个,而不是自己指定三个原来没有的点),称为聚类中心cluster centroids);
  2. 对于数据集中的每一个数据,按照距离K个中心点的距离(即从K个质心当中找举例自己最近的那个),将其与距离最近的质心关联起来,即每个初始的簇质心都代表一个类,某个离散点离哪个质心最接近,这个离散点就属于这一类。
  3. 计算每一个组(即每一类的所有离散点)的平均值,将该类的质心移动到计算出的平均值点的位置,即新的质心点。
  4. 重复第二步和第三步,直到收敛(即再重复2,3步各距离什么的都不会变了,比如各离散点属于哪个类都已经不会再变动了)。

算法分为两个步骤,第一个for循环是赋值步骤,即:对于每一个样例,计算其应该属于的类。第二个for循环是聚类中心的移动,即:对于每一个类,重新计算该类的质心。

K-均值算法也可以很便利地用于将数据分为许多不同组,即使在没有非常明显区分的组群的情况下也可以。下图所示的数据集包含身高和体重两项特征构成的,利用K-均值算法将数据分为三类,用于帮助确定将要生产的T-恤衫的三种尺寸。

如果上面的讲解没看懂的话,可以看看下面的这个视频(随便上B站找个阅读量高的视频就ok了):

k-means kmeans聚类算法 清晰解释(带算例)_哔哩哔哩_bilibili

三.优化目标

这一节我们会提到K-means算法的成本函数(即它的目标优化函数,是的,它也有成本函数,数学真的很奇妙)了解它的成本函数一方面会帮助我们对程序进行调试修改,确保正确运行;另一方面

会在后面的视频中提到我们将通过它帮助K-means算法找到一个更好的簇,并且避免局部最优解。

符号:

c^(i)代表训练示例属于哪一个类(即类的序号)

u_k代表第k个聚类中心的位置

u_c(i)是x^(i)所属的那个簇的聚类中心

注:在K-means算法中K代表簇的数量,k代表聚类中心的下标(取值范围是1到k)

例如x^(i)被分配到第五个簇中,那么相应的c^(i)=5,u_c(i)=u_5

下图中的J即是成本函数,又叫失真函数,注意并不是x^(i)要和每个簇中心都要做相减取平方的操作,而是某个簇内的所有点要和自己这个簇的中心做相减取平方的操作,然后把每个点这般操作之后的差值之和做一个均值。K-means就是把这个均值函数的值降到越低越好,最后找到对应的c^(i)和u_k

四.初始化K-means

本来是在B站上看新版的视频,但是到了聚类这一块字幕翻译的实在可能不下去了,所以我只能转战网易公开课来看老版的了,字幕看着是真舒服。

吴老师刚上来一顿讲,其实就是随机选择。。。K-means算法最后的收敛状态取决于它的初始状态,所以最后收敛状态会随着初始簇质心的不同而不同,所以K均值算法可能会落到局部最优(local optima)内。

如下图,上方那个是全局最优,下面那俩都只是局部最优

要尽量避免局部最优,一个可以采用的方法是进行多次随机初始值的选取,运行多次K-means算法,这样可以尽量去得到一个比较好的局部最优或全局最优。通常这样多次运行的次数在50到1000之间,如下图,运行100次,然后把这100次的成本函数值比较一下,选取其中最小的一个

当类的数量不多时(七八个),使用这种执行多次的方法效果很好,但是当类的数量很多时(成千上百个),多次执行的方法可能也不会有太大的改善,但是起码可以给算法一个合理的起点。

五.选择聚类数量(k=?)

方法一:肘部法则

需要一个个试k值,横轴是k值,纵轴是成本函数值J,看到左侧的图,最开始k增加的时候,成本J下降的很快,但是当越过了某个点之后,J减小的就很慢了,这条曲线像我们的手肘弯起来了,所以叫肘部法则,即选取那个“肘部的点”,在左图中是k=3的点。但是通常我们实际情况下遇到的都是右边那个图,比较平滑,没有左边那个图拐弯拐的那么明显,所以不太好判断哪个是肘部点。

所以不能期望它解决这方面的任何问题。

 方法二:实际意义

比如你现在用这个K-means算法是为了帮助你根据这些数据来分析你的T-shirt服装产品分别做出哪些尺寸,这就取决于一些实际意义。如下图,同样的数据,如果你认为服装的尺寸有S,M,L三种即可,那么初始化时让k=3,但是如果你认为顾客可能选择的尺寸是XS,S,M,L,XL的话,那么你就得另k=5了。

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

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

相关文章

Spring 源码阅读 74:事务管理的原理 - BeanFactoryTransactionAttributeSourceAdvisor 分析

本文通过对 BeanFactoryTransactionAttributeSourceAdvisor 类的分析,了解了 Spring 是如何通过 AOP 来完成事务的管理的,本文的内容需要你对 Spring 的 AOP 的实现原理有一定的了解。 基于 Spring Framework v5.2.6.RELEASE 概述 Spring 的事务管理基于…

基于 Flask-Admin 与 AdminLTE 构建通用后台管理系统

Flask-Admin 是什么? Flask-Admin 官网文档中给出了其功能定位: Why Flask-Admin? In a world of micro-services and APIs, Flask-Admin solves the boring problem of building an admin interface on top of an existing data model. With little e…

SAP 公司代码全局参数设置及其意义

在SAP中配置公司时,会配置公司的全局参数,但这些参数具体的意思是什么估计很多同学都搞不懂,我也找了下资料,贴出来供大家参考。 设置参数路径:IMG→财务会计→财务会计全局设置→公司代码的全球参数→输入全局参数 账…

教你几个手机识别图片中的文字小技巧

平时我们在工作,有时候会拿到需要录入的纸质文件,如果我们使用双手逐一对照录入的话,就太浪费时间了。其实还有一个更简单的方法,就是将需要录入的文件拍摄下来,借助工具将图片内容转写为文字出来,再将其复…

Python Flask框架-开发简单博客-认证蓝图

作者:Eason_LYC 悲观者预言失败,十言九中。 乐观者创造奇迹,一次即可。 一个人的价值,在于他所拥有的。可以不学无术,但不能一无所有! 技术领域:WEB安全、网络攻防 关注WEB安全、网络攻防。我的…

最新定制的安卓项目及设计报告——仿番茄小说APP

已录演示视频,想看演示视频的可以私我 《移动应用开发实践》实践报告 APP名称: 番茄免费小说 要求: 格式:宋体,小四号字;首行缩进;行距:1.5倍。 每人独立完成Android App的设计…

三步学会如何构建平衡二叉树(简单好理解)

何为平衡二叉树? 首先回顾一下,什么是平衡二叉树(亦被称为AVL树,Adelson-Velskii and Landis)。平衡二叉树主要具有以下三个特点: 1. 平衡二叉树首先要符合搜索二叉树的特点:即左子树的值比根节点小&…

排序算法之归并排序

目录 归并排序递归实现 思想 图解 代码 归并排序的非递归版本 基本思想: 代码 归并排序递归实现 思想 最主要的相当于二叉树遍历中的后序遍历。 ①将数组分割成多个小区间(当只有一个元素或者并不存在的时候就不用再分割了) ②对每一…

某工控图片上传服务 CPU 爆高分析

一:背景 1.讲故事 今天给大家带来一个入门级的 CPU 爆高案例,前段时间有位朋友找到我,说他的程序间歇性的 CPU 爆高,不知道是啥情况,让我帮忙看下,既然找到我,那就用 WinDbg 看一下。 二&…

Linux进程概念和控制(必备知识)

文章目录1、冯诺依曼体系结构2、操作系统3、进程<1>进程的创建<2>进程查看<3>进程状态<4>进程优先级<5> 进程地址空间4、环境变量5、进程控制<1>进程终止<2>进程等待<3>进程替换1、冯诺依曼体系结构 我们常见的计算机&#x…

软考 - 软件工程

软件过程基本概述 基本要素 方法工具过程 软件过程模型 能力成熟度模型CMM 能力成熟度模型CMMI 统一过程UP模型 针对大型项目 三大特别 用例和风险驱动以架构为中心迭代并且增量 四个阶段 起始&#xff1a;确认需求和风险评估精化&#xff1a;核心架构设计构建&#xff1a;构…

Linux内核开发 | Linux内核目录结构分析(5.4.32)

文章目录1. arch2. block3. certs4. crypto5. Documentation6. drivers7. fs8. include9. init10. ipc11. kernel12. lib13. mm14. net15. samples16. scripts17. security18. sound19. tools20. usr21. virt本文以Linux主线5.4.32内核版本进行分析。1. arch 该目录下包含了li…

【ROS】机械人开发--ROS工作空间与功能包

机械人开发--ROS工作空间与功能包一、ROS工作空间1.1 概念1.2 创建工作空间1.3 编译工作空间1.4 设置环境变量1.5 添加环境变量二、功能包2.1 概念2.2 功能包的内容2.3 创建功能包三、CMakeLists.txt文件四、package.xml文件一、ROS工作空间 1.1 概念 工作空间&#xff08;wo…

以“新IT”助“数智融合”,联想推开“智能化转型”下半场的大门

作者 | 曾响铃 文 | 响铃说 近年来&#xff0c;我国对数字化的重视达到前所未有的高度&#xff0c;从“十四五”规划纲要首次将数字经济单独列为一篇&#xff1b;到二十大报告中指出&#xff1a;“坚持把发展经济的着力点放在实体经济上”、“促进数字经济和实体经济深度融合…

SpringMVC学习篇(五)

SpringMVC之json数据传递 1.1 准备工作 1.1.1 导入lombok依赖(方便写实体类) <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version></dependency>1.1.2 导入mvc js…

mysql经典案例带解析(你没见过的全新版本)55题

首先给出初始表格 表格创建命令 create table emp(id int primary key auto_increment,name varchar(20),job varchar(20),manager int,hiredate date,sal double(8,2),comm double(6,2),dept_id int)charsetutf8;create table dept(id int primary key auto_increment,nam…

AcrelEMS-BP生物制药工厂能效管理系统

安科瑞 华楠 聚焦全厂能源采集、监控、分析、调度,降本提效,实现企业双碳目标;致力于全域化设备监视、巡检、故障报警、工单管理,运维优化,提升设备使用效率。 综合自动化系统 110kV及以下变电站综合自动化系统实现遥测、遥信、遥控、事故追忆、故障录波、安全防护、上传调度 …

搭建接口平台YApi详解(含搭建node环境)

公司之前使用的doclever 感觉不太好用&#xff0c;打算私有化部署YApi 步骤 准备使用yapi的可视化部署&#xff0c;需要有node环境 安装node环境 测试一下有没有node环境 如下就是有 [root192 sbin]# node -v v14.17.0 [root192 sbin]# npm -v 6.14.13没有就创建 cd /us…

webpack5 打包环境抽离分环境基本配置

两种开发模式 开发模式&#xff1a;代码能编译自动化运行生产模式&#xff1a;代码编译优化输出Webpack 基本功能 开发模式&#xff1a;可以编译 ES Module 语法生产模式&#xff1a;可以编译 ES Module 语法&#xff0c;压缩 js 代码Webpack 配置文件5 个核心概念 entryoutput…

FL Studio21最新演示测试版本下载FL水果V21

FL Studio是市场上最受欢迎的音乐制作软件之一。它被世界各地的许多专业制作人和艺术家使用。FL Studio音乐软件的每日下载量超过40&#xff0c;000次&#xff0c;其增长是不断的&#xff0c;而且没有迹象表明很快就会放缓。随着新的 FL 产品版本在 Windows 和 Mac 上不断发布&…