十三、聚类
13.1 无监督学习
13.2 K-Means算法
聚类算法——K-Means算法;
本节问题:
- K-Means算法的原理;
- K-Means算法的使用;
随机初始化N个聚类中心;
while(true)
{
簇分配:计算所有点到这N个聚类中心的距离,从而把数据分为N个簇(隔得最近的一个簇);
计算均值:对于每一个簇,计算各点到该簇聚类中心的距离,取平均值
移动聚类中心:移动该聚类中心到平均值处;
}
距离是欧几里得距离;
衣服尺寸的划分有点像是无监督算法的市场化;
Q:如果有一个聚类中心,它没有被分配到任何一个点,怎么办?
A:一般情况移除这个聚类中心,但是聚类中心就会从K变为K-1;如果想保持K个聚类,则在初始化这个点一次;
13.3 优化目标
本节目标:
- K-Means算法的优化目标是什么,为何这么定义?
失真函数
两步最小化,给聚类中心分配点时以及移动聚类中心时;‘
13.4 随机初始化
本节问题:
- 如何随机初始化?
随机化初始聚类中心,其实就是在样本中随机选k个点作为聚类中心;
K-Means算法可能落在局部最优;
解决局部最优问题就是多次随机初始化,找到最好的解(畸变函数最小,即代价最小);
如果聚类数很少,比如3,4,5个,那么多次随机初始化会有明显的较好的结果,如果聚类数很多,那么下一次随机初始化不一定比上次有多大的进步;
13.5 选择聚类数
本节问题:
- 如何选择合适的聚类数;
常用方法还是观察可视化图,手动选择;因为数据的无标签特性,也是无监督算法的特性,所以自动选择聚类数量是很困难的;
肘部法则:前期随着K增加 J明显下降,后期缓和下降,那么拐点处一般作为K;但如果这个图像不怎么明显,而是缓和下降,那么这个法则就难以适用;
另一个方法就是看哪个K能更好的适用后续目的(分类后的目的)