10.无监督学习之K-means算法

news/2024/11/18 0:49:09/

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.ppmy.cn/news/327718.html

相关文章

php算法面试题及答案

1. PHP的基础知识点 PHP中类的继承属于单继承,一个子类只能继承一个父类。可见性为public protected的属性和方法可以被继承。 继承的方法或属性可以被重写,可见性越来越大。 PHP中的变量名区分大小写,但类名、函数名不区分大小写。 2. er…

Nenu算法复习第六章

目录 补充知识点 1160: 6001 第几天? 1161: 6002 时间格式转换 1162: 6003 星期几? 1163: 6004 18岁生日、 补充知识点 闰年的判断方法: 能被四整除但是不能一百整除或者能被400整除 例题: 题目描述 经常会有人问你怎么判断闰年&…

【头歌-Python】8.3 政府工作报告数据提取(project)-第4关

第1关:读取政府工作报告文件 任务描述 附件中为2023年政府工作报告,本关要求将报告中所有包含数字字符的语句进行提取,并根据输入的关键词,将报告中与关键词相关联的语句筛选后输出(限于篇幅,本题仅列出部分关联词&a…

SpringBoot-【回顾】

第一个SpringBoot程序 自动装配原理 Springboot的自动装配实际上就是为了从Spring.factories文件中获取到对应的需要进行自动装配的类,并生成相应的Bean对象,然后将它们交给Spring容器来帮我们进行管理 启动器:以starter为标记 EnableAuto…

DHCP是什么?它有什么作用?其工作模式?工作原理?

目录 一、DHCP是什么?二、DHCP的作用?1. 在没有DHCP服务的网络中2. 在有DHCP服务的网络中 三、DHCP的工作模式简介四、DHCP的工作原理五、参考资料 一、DHCP是什么? DHCP是动态主机配置协议(Dynamic Host Configuration Protocol…

算法模板(3):搜索(3):图论提高

图论提高 最小生成树 (1)朴素版prim算法( O ( n 2 ) O(n ^ 2) O(n2)) 适用范围:稠密图易错:注意有向图还是无向图;注意有没有重边和负权边。从一个集合向外一个一个扩展,最开始只…

基本类型转换和引用类型转换

文章目录 前言基本类型转换自动数据类型转换强制数据类型转换 引用数据类型转换向上转型向下转型 前言 提示:这里可以添加本文要记录的大概内容: Java 中的类型转换可以分为基本类型转换和引用类型转换两种。 基本类型转换指的是将一种基本数据类型转换…

【Mircosft Edge】插件推荐

插件推荐 1.推荐插件1.1 油猴 tempermonkey1.2 免费音乐播放器 Listen 1 2.添加插件2.1 打开“Micrsoft Edge 外接程序”2.2 获取新的扩展2.3 搜索插件2.3.1 在Micrsoft Edge 外接程序搜索框中输入tampermonkey,然后点击获取按钮进行安装2.3.2 在Micrsoft Edge 外接…