聚类
聚类是一种无监督机器学习方法,它基于数据的内部结构寻找观察样本的自然族群(即集群),常用于新闻分类、推荐系统等。聚类的特点是训练数据没有标注,通常使用数据可视化评价结果。
聚类的常用方法包括
- K均值聚类:把n个点(可以是样本的一次观察或一个实例)划分到k个聚类中,使得每个点都属于离它最近的均值(即聚类中心)对应的聚类,以之作为聚类的标准。
- Affinity Propagation聚类:基于样本之间的图形距离确定集群
- 层次聚类
- DBSCAN
常用的聚类数据集包括
- scikit-learn blob: 简单聚类
- scikit-learn circle: 非线性可分数据集
- scikit-learn moon: 更复杂的数据集
性能度量
我们希望聚类结果的“簇内相似度”高且“簇间相似度”低。其性能度量大致有两类:一类是将聚类结果与某个“参考模型”进行比较,称为“外部指标”;另一类是直接考查聚类结果而不利于任何参考模型。称为“内部指标”。
常用的外部指标包括以下几种,值越大越好
- Jaccard系数
- FM指数
- Rand指数
常用的内部指标包括以下几种
- DB指数,越小越好
- Dunn指数,越大越好
距离计算
“距离度量”需满足一些基本性质,如非负性、同一性、对称性和直递性。最常用的是闵可夫斯基距离、欧氏距离和曼哈顿距离(后两者其实都是闵可夫斯基距离的特例)。
闵可夫斯基距离只可用于有序属性,对无序属性可采用VDM(Value Difference Metric)。
原型聚类
原型聚类亦称“基于原型的聚类”,假设聚类结构能通过一组原型(原型是指样本空间中具有代表性的点)刻画。
常用的方法包括
- k均值算法
- 学习向量化
- 高斯混合聚类(基于概率模型)
密度聚类
密度聚类亦称“基于密度的聚类”,假设聚类结构能通过样本分布的紧密程度确定。典型的代表算法为DBSCAN算法,它基于一组“领域”(neighborhood)参数来刻画样本分布的紧密程度。
DBSCAN将“簇”定义为:由密度可达关系导出的最大的密度相连样本集合。
层次聚类
层次聚类(hierarchical clustering)试图在不同层次对数据集进行划分,从而形成树形的聚类结构。数据集的划分可采用“自底向上”的聚合策略,也可采用“自顶向下”的分拆策略。 典型的AGNES是一种采用自底向上聚合策略的层次聚类算法。它先将数据集中的每个样本看作一个初始聚类簇,然后在算法运行的每一步中找出距离最近的两个聚类簇进行合并,该过程不断重复,直至达到预设的聚类簇个数。