聚类算法

Posted 数学人生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了聚类算法相关的知识,希望对你有一定的参考价值。

聚类是一种无监督学习(无监督学习是指事先并不知道要寻找的内容,没有固定的目标变量)的算法,它将相似的一批对象划归到一个簇,簇里面的对象越相似,聚类的效果越好。聚类的目标是在保持簇数目不变的情况下提高簇的质量。给定一个 m 个对象的集合。把这 m 个对象划分到 K 个区域,每个对象只属于一个区域。所遵守的一般准则是:同一个簇的对象尽可能的相互接近或者相关,而不同簇的对象尽可能的区分开。之前在文章中已经介绍过 KMeans 算法与 bisecting KMeans 算法,本文将会介绍一个流式的聚类算法。

流式聚类算法(One Pass Cluster Algorithm)

既然是流式的聚类算法,那么每个数据只能够进行一次聚类的操作。有一个简单的思路就是对于每一个未知的新样本,如果它与某个类足够相似,那么就把这个未知的新样本加入这个类;否则就自成为一个新的类。如下图所示:

基于以上思路,我们可以设计一个流式的聚类算法。假设 dataMat 是一个 m 行 n 列的一个矩阵,每一行代表一个向量,n 代表向量的维度。i.e. 在 n 维欧几里德空间里面有 m 个点需要进行聚类。

流式聚类的算法细节:

参数的设定:

聚类算法(二) 表示在聚类的过程中允许形成的簇的最大个数;

聚类算法(二) 表示距离的阀值,在这里两个点之间的距离可以使用 聚类算法(二) 范数;

聚簇的质心定义为该类中所有点的平均值。i.e. 如果该类中的点是 聚类算法(二),那么质心就是 聚类算法(二)

第 j 个聚簇中元素个数用 聚类算法(二) 表示。

方法:

Step 1:对于 聚类算法(二) 而言,自成一类。i.e. 质心就是它本身 聚类算法(二),该聚簇的元素个数就是 聚类算法(二),当前所有簇的个数是 聚类算法(二)

Step 2:  对于每一个 聚类算法(二),进行如下的循环操作:

假设当前有 聚类算法(二) 个簇,第 j 个簇的质心是 聚类算法(二),第 j 个簇的元素个数是 聚类算法(二),其中 聚类算法(二)

计算 聚类算法(二),其中的 Distance 可以是欧几里德空间的 聚类算法(二) 范数,对应的下标是 聚类算法(二)。i.e. 聚类算法(二)

(i)如果当前 聚类算法(二) 或者 聚类算法(二),则把 聚类算法(二) 加入到第 聚类算法(二) 个聚簇。也就是说:

质心更新为 聚类算法(二) + 聚类算法(二) + 聚类算法(二)

元素的个数更新为 聚类算法(二) + 聚类算法(二)

(ii)否则,聚类算法(二) 需要自成一类。i.e. 聚类算法(二) + 聚类算法(二)聚类算法(二)聚类算法(二)

注:

(1)数据的先后顺序对聚类的效果有一定的影响。

(2)该算法的时间复杂度与簇的个数是相关的,通常来说,如果形成的簇越多,对于一个新的样本与质心的比较次数就会越多。

(3)如果设置簇的最大个数是一个比较小的数字的时候,那么对于一个新的样本,它需要比较的次数就会大量减少。如果最小距离小于 D 或者目前已经达到最大簇的个数的话,那么把新的样本放入某个类。此时,可能会出现某个类由于这个新的样本导致质心偏移的情况。如果设置 聚类算法(二) 很大,那么计算的时间复杂度就会增加。因此,在保证计算实时性的时候,需要考虑到 聚类算法(二) 的设置问题。

效果展示:

使用一批二维数据集合,进行流式聚类算法可以得到下图:’+’ 表示的是质心的位置,其余就是数据点的位置。通过选择不同的距离阈值 聚类算法(二),就可以得到不同的聚类情况。其中 ‘+’ 表示该簇质心的位置,蓝色的点表示数据点。如下图所示:

聚类算法(二)聚类算法(二)

聚类算法(二)



相关文章推荐:

1.


欢迎大家关注公众账号数学人生


以上是关于聚类算法的主要内容,如果未能解决你的问题,请参考以下文章

k均值聚类算法、c均值聚类算法、模糊的c均值聚类算法的区别

「聚类分析」16聚类分析之KMeans算法与K中心点算法

聚类算法--DBSCAN

聚类算法--KMeans

聚类算法(上)06

谱聚类算法总结