吴恩达机器学习课程笔记 | 第13章

本系列文章如果没有特殊说明,正文内容均解释的是文字上方的图片
机器学习 | Coursera
吴恩达机器学习系列课程_bilibili

@TOC

13 聚类算法

13-1 无监督学习

在这里插入图片描述
无监督学习的数据集是一堆不带标签的数据,他们没有$y$的值,只有$x$的值

13-2 K均值(K-means)算法

在这里插入图片描述
K均值算法的第一步(簇分配):确定两个聚类中心(图中蓝色叉和红色叉),遍历每一个样本(图中绿点),判断离哪个聚类中心更近,将样本分为两个簇,分完之后如下图
在这里插入图片描述
K均值算法的第二步(移动聚类中心):计算每一簇中所有点的均值,并将聚类中心移动到该均值处,移动后如下图
在这里插入图片描述
然后再重复第一步判断每一个样本离哪个聚类中心近,并改变他的颜色(分类),改变后再重复第二步。
这样不断重复,得到最终结果
在这里插入图片描述
这样就可以说K均值已经聚合了
在这里插入图片描述
输入一个$K$表示想要将数据分为几类,输入不带标签的训练集
设训练集是一个n维向量(按照惯例不考虑$x_0=1$这一项)
在这里插入图片描述
如上图
用$K$表示想要将数据分为$K$类
用$\mu_k$表示第$k$个聚类中心的位置(他是一个向量/矩阵),随机初始化获得
用$c^{(i)}$表示样本中第$i$个点距离最近的那个聚类中心的下标,即第$i$个样本距离第$c^{(i)}$个聚类中心最近,即第$i$个样本属于第$c^{(i)}$个聚类中心,求法如上图中蓝色笔迹
求完上述值后,计算每一个聚类中心包含的点的均值,赋值给对应的$\mu_k$,此时已经得到新的聚类中心的位置
如果有一个没有点的聚类中心,一般直接移除,这样最后会得到K-1类;但如果确实是需要分为K类,那么就将那个没有点的聚类中心重新随机初始化
在这里插入图片描述
如上图,有时K均值算法也运用于不能很明显的分类的数据集,如收集了很多人的身高、体重作为数据集,可以看出这些数据基本是连续的,要将其分为S、M、L三类,用聚类算法,也能分为三类。聚类算法也可用于市场的分割

13-3 优化目标

$\mu_{c^{(i)}}$表示第$i$个样本所属聚类中心的位置
在这里插入图片描述
K均值聚类算法的代价函数(优化目标函数)为
$$J(c^{(1)},…,c^{(m)},\mu_1,…,\mu_K)=\frac{1}{m}\sum_{i=1}^m\Vert x^{(i)}-\mu_{c^{(i)}}\Vert^2$$
表示的是每一个样本的位置与它所属的聚类中心位置作差,取范数,再平方,所有共m个样本加起来再求平均数
这个代价函数有时也称为失真代价函数(the distortion cost function)或K均值算法的失真

13-4 随机初始化(K均值聚类算法)

在这里插入图片描述

  • 从训练集中随机挑选$K$个样本,让第一到第K的聚类中心等于刚刚随机出来的$K$个样本
    在这里插入图片描述
    如上图,由于是随机挑选的聚类中心,所以结果可能是全局最优(如上图上面的坐标系),也可能落在局部最优上(如上图下面两个坐标系)
    所以,采用多次随机初始化的方法寻找全局最优
    在这里插入图片描述
    如上图,多次随机初始化的方法为:
    运行50-1000次K均值聚类算法,可以得到许多不同的代价函数的值,取最小的那个就是最优的聚类
    如果K=2到10,那么多次随机初始化可以明显改进聚类算法效果,如果大于10,多次运行可能不会有特别明显的改善

13-5 如何选择聚类数量K

一般是手动选择
在这里插入图片描述

  • 如上图,运用肘部法则,坐标系x轴为聚类数量K,坐标系y轴为代价函数的值,绘制曲线后,如左侧的坐标系,能看到曲线在K=3处由很高的斜率转为了很低的斜率,这一点认为是“肘部”,选择K=3是合适的,但也有可能曲线是如右边坐标系的图像,不能明确地找出合适的聚类数量

或者另外一种方法,根据下游目的来手动选择聚类数量