10.无监督学习

news/2024/5/20 6:03:16 标签: 机器学习, 聚类

10.1 无监督学习的定义

 

监督学习:我们有一些列标签,然后用假设函数去拟合它

无监督学习:给出的数据不带任何标签。对于无监督学习来说,需要做的就是将数据输入到算法中,让算法找到一些隐含在数据中的结构,通过图中的这些数据,能通过算法找到一个结果就是这个数据集中的点可以分成两组分开的点集(簇)。这种能分出来的簇的算法被称为聚类算法

 10.2 K-means算法(K均值)

聚类问题中,会给定一组未加标签的数据集,会希望有一个算法能够自动地将这些数据分成有紧密关系的子集或是簇。K-means算法是比较热门的最为广泛运用的聚类算法。

对于没有标签的数据来说,第一步随机生成两点(下图的红蓝两个×),也叫做聚类中心。随机两点是因为想把下图的数据聚类成两类(首先根据划分聚类的个数,随机设置聚类中心的位置)。然后遍历所有的数据,把每个数据分配到离它最近的坐标,对于同一个簇的数据计算它们坐标的中心位置,并设置为新的聚类中心,以此不断的迭代。

 K-means算法接受两个输入,一个是参数K,表示想从数据中聚类出的簇的个数;另一个就是一系列无标签的只用x来表示的数据集,并且约定x^{(i)}是一个n维实数向量。

K-means算法步骤:

  1. 随机初始化K个聚类中心,记作\mu _{1},\mu_{2},...,\mu_{K}\in \mathbb{R}^{n}
  2. K-means的内循环,簇分配步骤:对每个训练样本,使用变量c^{(i)}来表示第1到第K个最接近x^{(i)}聚类中心;移动聚类中心:对于每个聚类中心,也就是对于k=[1,K],\mu_{k}就表示这个簇中所有点的均值。

假设有x^{(1)},x^{(3)},x^{(5)},x^{(6)},对应得c^{(1)}=c^{(3)}=c^{(5)}=c^{(6)}=2,表示都被分配给了聚类中心2,这个时候要算\mu_{2},就是把x^{(1)},x^{(3)},x^{(5)},x^{(6)}相加除以4。得到的结果就是聚类中心2移动的结果。

 如果存在一个没有点的聚类中心,最常见的做法就是直接移除那个聚类中心,但如果这样做得到的簇的总数为K-1而不是K。有时你的确需要K个簇时,这时可以重新随机初始化这个聚类中心得到K个簇并且每个点都有聚类中心。

K-means的常见应用:它可以用来解决分离不佳的簇的问题,具体情况如下:

10.2.1 K-means的初始化

初始化K-means聚类算法可以引导我们讨论如何使算法避开局部最优。

随机初始化聚类中心:当聚类数量很少时,如果初始化的位置不够好,会得到一个局部最优解,解决方案是多次随机初始化,从而得到一个全局最优解

通常用来初始化K-means聚类的方法是:随机挑选K个训练样本,设定\mu_{1},...,\mu_K,让它们等于这个K个样本。

10.2.2 聚类数量的选择

如何选择聚类数量或者说如何选择参数K的值?

当谈论到选择聚类数量的方法时,会谈到一个方法叫做“肘部法则”

肘部法则:所要做的改变K也就是聚类总数。先用一个类来聚类这意味着所有的数据都会分到一个类里,然后计算代价函数即畸形函数J。然后再用两个类来跑K-means聚类,可能多次随机初始化也可能随机初始化一次。

 得到聚类数量和代价的图像,根据肘部原则选取(一般不用);或者根据k均值聚类的目的来做判断,比如做衣服尺寸的聚类分析,根据市场需求,3个聚类or5个聚类更适合市场营销等等


http://www.niftyadmin.cn/n/410428.html

相关文章

rials中,打印日志

在 Rails 中,你可以使用 logger 对象来打印日志。logger 对象是一个全局的 Ruby 对象,你可以在任何地方使用它来打印日志。 以下是一些常用的 logger 方法: - logger.debug: 打印调试信息。- logger.info: 打印一般信息。- logger.warn: 打…

2023年京东618预售数据:传统滋补成预售黑马,预售额超27亿

这一期主要分享一下此次京东618预售期间的一个黑马行业——传统滋补。不管是从预售量和预售额来看,传统滋补品类的成绩都是此次大促中的佼佼者。 究其原因,近几年养生滋补也掀起了一股“国潮风”。在小红书、抖音等社交平台上,关于“健康养生…

AIO、BIO、NIO 的区别

tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。 推荐:体系化学习Java(Java面试专题) 文章目录 一、AIO、BI…

Oracle-第一章-多表查询和其他

4多表关联查询 4.1表的别名 ①在多表关联查询时,如果多个表之间存在同名的列,则必须用表名限定列的引用如dept.deptno,emp.deptno ②为使语句简洁,使用表别名,表别名在from子句中定义如 emp e ③表别名一经定义,在整…

linux-docker备份数据库

利用计划任务和批处理从docker容器中备份数据库文件到宿主机指定目录 如何创建定时任务 创建计划任务(定时任务): crontab -e打开后是VI编辑器,将自己计划任务的内容写到里边然后wq(保存并退出)就行了 查…

ZooKeeper 面试专题

ZooKeeper ? ZooKeeper 是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 分布式应用程序可以…

国内外人工智能AI工具网站大全

国内外人工智能AI工具网站大全 AI工具网站大全详细一、AI写作工具2.2、AI图片插画生成 AI工具网站大全 一、AI写作工具 二、AI图像工具 2.1、常用AI图像工具 2.2、AI图片插画生成 2.3、AI图片背景移除 2.4、AI图片无损调整 2.5、AI图片优化修复 2.6、AI图片物体抹除 三、AI音频…

【Python】Python系列教程-- Python3 标准库概览(三十)

文章目录 前言操作系统接口文件通配符命令行参数字符串正则匹配数学访问互联网日期和时间数据压缩性能度量测试模块 前言 往期回顾: Python系列教程–Python3介绍(一)Python系列教程–Python3 环境搭建(二)Python系列…