Kmeans、DBSCAN聚类算法的时间复杂和空间复杂度分析

聚类分析分通过分析大量含有一定规律但杂乱数据,得到数据间内在的逻辑,将杂乱的数据按照所得的数据规律划分成不同的种类。K-measn、DBSCAN和层次是当前广泛使用的三种聚类方法。以下对三种方法进行分析,选择适合的聚类方法。

方法

K-means

凝层次

DBSCAN

类型

基于原型的、划分的、完全的

层次的、完全的

基于密度的、划分的、部分的

基本原理

以样本非中心点到其所属的中心点的距离的平方和最小为目标来划分相应的类,并不断更新质心的位置和划分新类直至质心稳定

以每个点作为一个类为始,依据某种距离逐步合并“最接近”的类,直至所有的类被合并,形成有层次的聚类树

通过半径和邻域内样本点数量对密度进行定义,将核心点与其邻域内的所有核心点同处一类,将边界点归到邻域内核心点的类中

优点

1、收敛速度快:

2、算法可解释性好,原理简单;

3、调参(K)简单

可发现聚类间的层次关系

1、抗噪音;

2、能处理任意形状类;自动确定类数;

缺点

1、易受初始值限制;

2、需首先确定K值

计算复杂度高;

对半径和邻域内包含点数敏感

本次主要分析三种算法的时间复杂度和空间复杂度。

算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间。

时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。但是我们需要每个算法都上机测试吗?是可以都上机测试,但是这很麻烦,所以才有了时间复杂度这个分析方式。一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。

空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度。空间复杂度不是程序占用了多少字节的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。空间复杂度计算规则基本跟时间复杂度类似,也使用大O渐进表示法。

三种聚类算法时间复杂度和空间复杂度对比:

方法

K-means

凝层次

DBSCAN

时间复杂度

上限为O(tKmn),下限O(Kmn),其中t为迭代次数,K为簇的数目,m为记录数,n为维数

Om2

正常是O(N)。最坏情况下时间复杂度是O(N2)
在低维空间数据中,降低到O(NlogN)

空间复杂度

O((m+K)n)

O(m2log m)

低维或高维数据中,其空间都是O(N)

你可能感兴趣的:(聚类,算法,机器学习)