我们有一些没有带任何标签的数据,即系列样本x并没有对应的y,我们需要将这些x输入到一个算法中,去寻找数据的内部结构;
如上图,训练数据点可以分为两个数据点集(簇),这类点集分类算法成为聚类算法;
概念:最普遍的迭代式聚类算法,输入未标记的数据集合,通过算法将数据聚类成不同的组;
算法实现流程:
1. 选取k个随机点(聚类中心)
2. 对每一个样本数据,将其与距离最近的聚类中心关联,关联于同一个点的数据归为一组
3. 计算组平均值,将组中心点移动到平均值的位置
4. 重复2-3步骤直至均值稳定
伪代码:
(c(i)代表第i个样本距离最近的簇索引, 代表聚类中心)
示例,如下数据集经多次迭代后可分为三个组:
代价函数(畸变函数):
(c(i)代表第i个样本距离最近的簇索引, 代表聚类中心)
目标为:
算法中的两个迭代即是对c和μ的代价降低;
选择建议:
1. K<m
2. 随机选取K个样本,设定其为K个聚类中心
建议在训练时选取不同随机初始中心,多次运行算法,选取代价函数最小的结果,因为单次结果可能只会停留在局部最小值如下图,但是在K较大的情况下,也不一定有很好的效果:
方式一: 人工按照算法需求确认,如衣物号码目标为S,M,L,可选取聚类数3.
方式二:肘部法则,通过更新K数目,计算其相应的代价,可观察到在某一个数目之后,其代价降低变缓,那么我们可以选取这个节点数为较为合适的聚类数
------------------------------------------------------------------------------------------------------------------------------------
文章内容学习整理于吴教授公开课课程与黄博士笔记,感谢!