01
聚类任务
对于训练样本的标记信息是未知的情况下,我们的目标就会变成通过对无标记训练样本的学习来揭示数据的内在性质及规律,我们把这样的学习方法称之为“无监督学习”,而在此类学习任务中,研究最多应用最广的就是“聚类”。
在聚类算法中,我们试图将数据集中的样本划分为若干个不相交的子集,每个子集称为一个“簇”。而对于样本来说,我们并不知道其内部存在的类别,所以我们分出的这些“簇”就可能对应着一些潜在的概念(类别),与分类算法的区别就在于,这些潜在的概念在之前我们是完全未知的。
一般的聚类结果展示如下图所示:
基于不同的学习策略,人们设计出多种类型的聚类算法,在学习算法之前,我们先来了解一下性能度量和距离运算。
02
性能度量
我们在之前的文章中了解过了分类算法的评估方式,对于聚类来说,我们有一些特殊的性能度量方式,让我们来了解一下。
对于聚类来说,我们把每个类别分成了相应的“簇”,直观上看我们希望“物以类聚”,而想要把很多“簇”聚的好,我们就希望“簇内的相似度”高且”簇间的相似度“低。
03
距离度量
对于函数 ,如果他表示一个距离的度量,我们就要满足一些基本性质:
04
K-Means聚类
聚类算法中,最典型最常用的算法就是K-Means(K均值)算法,让我们来了解一下K-Means的原理及流程。
K-Means算法最大的特点是简单,好理解,运算速度快,但是只能应用于连续型的数据,并且一定要在聚类前需要手工指定要分成几类。K-Means算法的流程如下:
05
K-Means
06
elkan K-Means
07
Mini Batch K-means
08
K-Means小结
K-Means的主要优点有:
- 原理比较简单,实现也是很容易,收敛速度快;
- 聚类效果较优;
- 算法的可解释度比较强;
- 主要需要调参的参数仅仅是簇数k。
K-Means的主要缺点有:
- K值的选取不好把握;
- 对于不是凸的数据集比较难收敛;
- 如果各隐含类别的数据不平衡,比如各隐含类别的数据量严重失衡,或者各隐含类别的方差不同,则聚类效果不佳;
- 采用迭代方法,得到的结果只是局部最优;
- 对噪音和异常点比较的敏感。