Fork me on GitHub

机器学习系列文章-聚类算法总结

背景

根据事物的特征差异,对事物进行分类是一个基本问题。这个问题在数据科学中进行抽象:(1)“特征”指的是事物对应的特征向量,(2)“差异”对应的为特征向量之间的距离(度量)。

对于这个基本问题,根据已知数据是否具有标签,数据科学中使用两种不同的学习方法来处理:

  • 分类问题。样本抽样数据具有标签信息。监督学习。
  • 聚类问题。样本抽样数据不具有标签信息。无监督学习。

形式上,抽样训练数据集$D={x_1,x_2,…,x_N}$ ,包含了$N$ 个样本点,每个样本点具有$m$维的特征向量$x_i=(x_{i,1},x_{i,2},…,x_{i,m})$ 。聚类算法目标将训练集$D$ 划分为若干个子集${C_i}_{i=1}^K$ 。

那么很自然有下面两个问题:

  • (1)怎样分类能区别样本点的差异?使得相似样本点属于同一个分类子集。
  • (2)怎样的分类方法是最优的?即量化评价分类方法。

对于第一个问题,首先我们要量化“相似”这个概念。这样我们需要对数据集(点集)嵌入到带有度量的空间中,用特征向量的空间度量来刻画相似,比如常用的度量有欧几里得距离。

那么又引出另外一个问题:空间度量有很多,什么度量是最优的?

对于数据集的划分

聚类算法

SKLearn数据包

数据工程实现中,常用python包有:sklearn,对于聚类算法有很好的封装。接下来介绍的聚类算法,工程实现上主要使用sklearn。

算法集

原型聚类

K-means算法

K-mearn算法应该是聚类算法中名气最大的,几乎是聚类算法的同义词。

二分K均值算法

学习向量量化LVQ

高斯混合聚类

密度聚类

层次聚类

###

参考文献

1、数据科学家需要了解的5种聚类算法。https://towardsdatascience.com/the-5-clustering-algorithms-data-scientists-need-to-know-a36d136ef68

2、sklearn 聚类算法。http://sklearn.apachecn.org/cn/0.19.0/modules/clustering.html

0%