目前在做聚类方面的科研工作, 看了很多相关的论文, 也做了一些工作, 于是想出个聚类系列记录一下, 主要包括聚类的概念和相关定义、现有常用聚类算法、聚类相似性度量指标、聚类评价指标、 聚类的应用场景以及共享一些聚类的开源代码
下面正式进入该系列的第一个部分,什么是聚类?
文章目录
- 前言
- 什么是聚类
- 示例问题1:
- 示例问题2:
- 聚类的研究内容和问题
前言
目前, 机器学习/深度学习研究的热火朝天,归根到底可以将其分为两大类: 有监督学习和无监督学习(当然也有半监督学习,弱监督学习等等)。
有监督学习和无监督学习的区别就是是否样本可以去训练和学习。当有足够的训练样本,有大量强大模型可以用于服务于不同的任务,比如用于手写数字识别的CNN及其变体、用于空气质量预测的LSTM及其变体。
但如果没有样本标签呢?对于分类任务来说, 如何对样本进行分类? 如何将样本划分为不同相似的子集?这就是聚类问题!
什么是聚类
聚类就是研究如何根据样本相似性和优化准则,将样本划分为不同的子集/类/簇等,使得簇内的样本的相似性最大,簇间的样本相似性最小。
这里的样本可以是不同领域的不同类型的数据,可以是真实物理世界中的点、线、面数据,也可以是进行抽象、虚拟的点、线面数据。举例来说: 包含经纬度的PM2.5站点,居民移动的轨迹点,车辆轨迹线数据,建筑物面数据,以及用户、西瓜等抽象点数据
。
聚类在多个领域都有着广泛应用,比如数据挖掘(聚类是数据挖掘的经典研究之一)、人类行为模式探测、图像处理与分析、生物科学等。
同样以经典数据集为例:鸢尾花(iris)分类问题
示例问题1:
iris数据集包含了不同类型的花的样本数据,但是不知道具体每个样本花所属的类型,每个样本数据有花萼长度、花萼宽度、花瓣长度和花瓣宽度等四个特征。现在需要根据样本特征将iris数据划分为不同的相似样本簇。
思路: 在利用聚类问题解决此问题的方法为: 根据花的特征计算不同花之间的相似性,然后利用聚类算法根据相似性计算结果将不同的样本点划分为不同的组(亦可成为簇, 子集等), 位于相同簇内的样本即被认为是具有相似属性的花。
示例问题2:
空间上存在不同的空间点数据, 如图1所示, 在位置点数据其他属性, 只知道其空间坐标的前提夏, 如果将图上的点划分为不同的组?
思路: 该问题是典型的空间聚类问题, 根据点数据的空间坐标计算不同点之间的距离作为度量点数据之间相似性的标准,然后根据相似性度量结果对不同的空间点数据划分为不同的簇, 其中簇内的样本点之间的距离最小(相似性最小), 簇间的样本距离最大(相似性最大)
聚类的研究内容和问题
通过上述介绍可知, 在聚类研究中, 不管研究的样本数据的类型是空间数据还是非空间(属性)数据, 聚类的核心内容是相同的, 包括两个部分:
- 度量样本数据之间的相似性(距离)。
- 基于相似性度量结果, 采用某种准则将样本划分为不同的簇。
而根据聚类的核心研究内容, 又具体需要研究以下内容:
- 如何度量样本之间的相似性? 如何度量不同类型的样本之间的相似性?
- 如何确定样本簇的个数?
- 如何区别簇内数据和噪声数据?
- 如何识别不同密度的簇?
- 如何识别不同任意形状的簇?
- 如何确定识别的簇结果的质量? 即如何度量聚类结果的有效性?
- 如何识别具有弱连接的簇(颈问题和链问题)?
- 如何减少参数设置对聚类结果的影响?
- 如何减少人为的干预?
- …
后续会针对上述问题, 以及目前典型的聚类算法进行详细介绍, 并给出部分实现代码