聚类算法
- 聚类的概念:
- 无监督问题:我们手里没有标签了
- 聚类:相似的东西分到一组,跟分类问题相似。
-
刚开始的数据集上没有颜色的标记,也没有告诉我们绿色的是哪些,红色的是哪些,蓝色的是哪些,根据一种相似度度量的方式,把相似的东西归到一类。从图中可以看出,数据集明显被分为3类。
- 难点:如何评估,如何调参
1. K-MEANS算法
- 基本概念:
- 要得到簇的个数,需要指定K值,例如k=3,把数据集聚为3堆。如上图所示。
- 质心:均值,即向量各维取平均值即可。
- 距离的度量:常用欧几里得距离和余弦相似度(先标准化),计算两个点有多相似。
- 步骤:
- 随机选择K个特征空间内的点作为初始的聚类中心
- 对于其他每个点计算到K个中心的距离,未知的点选择最近的一个中心作为标记类别
- 分别计算这K个簇群的平均值,把新的平均值与旧的中心点进行比较,结果相同:结束聚类。如果不相同:把新的平均值当做新的中心点,重复第二步。
- 评估标准:
-
轮廓系数:
- 注:对于每个点i为已聚类数据中的样本,bi为i到其他簇群的所有样本的距离最小值,ai为i到本身簇群的距离平均值(i到其他样本点的距离取平均值)。最终计算出所有样本点的轮廓系数平均值。
- 如果sc𝑖小于0,说ai 的平均距离大于最近的其他簇。聚类效果不好
- 如果sci越大,说明ai的平均距离小于最近的其他簇。聚类效果好。
- 轮廓系数的值是介于[-1,1],越趋近于1,代表内聚度和分离度都相对较好。
-
举个例子:
- 对于上图:
- 计算蓝1到自身类别的点距离的平均值ai.
- 计算蓝1分别到红色类别,绿色类别所有的点的距离,求出平均b1,b2,取其中最小的值当做bi。
- 对于上图:
-
轮廓系数:
- 总结:
- 优势:简单,快速,适合常规数据集。
- 劣势:
- K值难确定
- 复杂度与样本呈线性关系
- 很难发现任意形状的簇
2. DBSCAN(含噪声的基于密度的空间聚类方法)
Density-Based Spatial Clustering of Applications with Noise
- 基本概念:
- 核心对象:若某个点的密度达到算法设定的阈值则其为核心点。(即r领域内点的数量不小于minPts)。指定一个点,以改点为中心,r为半径画圆,圆里面的点的个数超过设置的阈值,则称改点为核心对象。
- 领域的距离阈值:设定的半径r
- 直接密度可达:若某点p在点q的r领域内,且q是核心点则p-q直接密度可达。
- 密度可达:若有一个点的序列q0,q1,q2,...,qk,对任意q_i - q_i-1是直接密度可达的,则称从q0到qk密度可达,这实际上是直接密度可达的“传播”。
- 密度相连:若从某核心点p出发,点q和点k都是密度可达的,则称q和k是密度相连的。
- 边界点:属于某一个类的非核心点,不能发展下线了
- 核心对象发展它的下线,下线再发展下线,知道下线圈出的点小于阈值,则该下线点为边界点。
- 噪声点:不属于任何一个类簇的点,从任何一个核心点出发都是密度不可达的。
- 举个例子:
- 如下如所示,首先A为核心对象,A发展它的下线,即与A相邻的3个点,这3个点又发展它的下线。
-
从图中可以看出:A为核心对象;B,C为边界点;N为离群点。
-
从图中可以看出:A为核心对象;B,C为边界点;N为离群点。
- 工作流程:
- 需要输入的参数
- D:数据集
- 指定半径
- MinPts:密度阈值
-
迭代过程:
- 需要输入的参数