bubbleeee

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

聚类(Clustering)是按照某个特定标准(如距离)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。也即聚类后同一类的数据尽可能聚集到一起,不同类数据尽量分离。

主要的聚类算法可以划分为如下几类:划分方法、层次方法、基于密度的方法、基于网格的方法以及基于模型的方法。

K-means算法

k-means是划分方法中较经典的聚类算法之一。由于该算法的效率高,所以在对大规模数据进行聚类时被广泛应用。

k-means算法以k为参数,把n个对象分成k个簇,使簇内具有较高的相似度,而簇间的相似度较低。

k-means算法的处理过程如下:

首先,随机地选择k个对象,每个对象初始地代表了一个簇的平均值或中心;

对剩余的每个对象,根据其与各簇中心的距离,将它赋给最近的簇;

然后重新计算每个簇的平均值。

这个过程不断重复,直到准则函数收敛。通常,采用平方误差准则

其中E是数据库中所有对象的平方误差的总和,p是空间中的点,mi是簇Ci的平均值[9]。该目标函数使生成的簇尽可能紧凑独立,使用的距离度量是欧几里得距离,当然也可以用其他距离度量。

经典k-means算法有以下几个特点:

需要提前确定[公式]

对初始质心点敏感

对异常数据敏感

层次聚类

根据层次分解的顺序是自底向上的还是自上向下的,层次聚类算法分为凝聚的层次聚类算法和分裂的层次聚类算法。
凝聚型层次聚类的策略是先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到所有对象都在一个簇中,或者某个终结条件被满足。绝大多数层次聚类属于凝聚型层次聚类,它们只是在簇间相似度的定义上有所不同。

聚合聚类需要预先确定三个要素:

  1. 距离或相似度

    可以是马氏距离、相关系数、cosine等。

  2. 合并规则

    类间距离最小、类间距离可以是最短距离、最长距离、中心距离等。

  3. 停止条件

    类的个数达到阈值(极端情况下类的个数为1)、类的直径超过阈值。

如果采用欧氏距离为样本之间距离;类间距离最小为合并规则,其中最短距离为类间距离;类的个数为1,为停止条件:

输入: n个样本组成的样本集合及样本之间的距离

输出:对样本集合的一个层次化聚类

  1. 计算n个样本俩俩之间的欧氏距离{dij}{dij},记作矩阵D=[dij]n×nD=[dij]n×n。
  2. 构造n个类,每个类只包含一个样本。
  3. 合并类间距离最小的两个类,其中最短距离为类间距离,构建一个新类
  4. 计算新类与当前各类的距离。若类的个数为1,终止计算,否则回到步(3)

聚合层次聚类算法的复杂度为O(n3m)O(n3m),其中m为样本维度,n是样本个数。

DBSCAN特点:

可以对任意形状的稠密数据集进行聚类;

对数据集中的异常点不敏感;

初始值的设置几乎不会影响聚类结果

如果样本集的密度不均匀、聚类间距差相差很大时,聚类质量较差;

调参复杂,主要需要对距离阈值Eps和邻域样本数阈值MinPts联合调参,不同的参数组合对最后的聚类效果有较大影响。

 

DBSCAN聚类

DBSCAN算法是一种基于密度的聚类算法,聚类的时候不需要预先指定簇的个数,最终簇的个数不确定。

DBSCAN算法将数据点分为三类:

1、核心点:在半径Eps内含有超过MinPts数目的点。
2、边界点:在半径Eps内点的数量小于MinPts,但是落在核心点的邻域内的点。
3、噪音点:既不是核心点也不是边界点的点。

DBSCAN算法流程:

1、将所有点标记为核心点、边界点或噪声点;
2、删除噪声点;
3、为距离在Eps之内的所有核心点之间赋予一条边;
4、每组连通的核心点形成一个簇;
5、将每个边界点指派到一个与之关联的核心点的簇中(哪一个核心点的半径范围之内)。

DBSCAN算法有以下几个特点:

需要提前确定[公式][公式]

不需要提前设置聚类的个数

对初值选取敏感,对噪声不敏感

对密度不均的数据聚合效果不好

 

 

 

posted on 2022-04-10 23:11  bubbleeee  阅读(640)  评论(0编辑  收藏  举报