原型聚类&&密度聚类&&层次聚类

1.原型聚类

原型聚类算法假设聚类结构可以通过一组原型刻画,通常算法先会对原型进行初始化,然后对原型进行迭代更新求解。不同的原型表示和不同的求解方式会产生不同的算法。

下面主要介绍三种典型的原型聚类算法:k 均值、学习向量量化 和 高斯混合聚类。

1.1K-均值

1.2学习向量量化

与 k 均值算法不同,学习向量量化(LVQ)的学习过程中会利用样本的类别信息,所以 LVQ 是一种监督式的聚类算法。其目标是学得一组原型向量,每一个原型向量代表一个聚类簇标记。

算法步骤

输入:训练集 D,聚类簇数量 p
输出:p 个原型向量
(1) 初始化原型向量;
(2) 计算距离:在训练集 D 中随机抽取一个样本 xj,分别计算该样本与各个原型向量间的距离,然后找出最近的原型向量 pi;
(3) 重置均值向量:如果样本 xj 与原型向量 pi 的类别相同,则让原型向量靠近样本xj ,否则远离:

(4) 迭代求解:迭代 (2)、(3) 直至原型向量更新很小或者迭代次数到达上限为止。返回原型向量。

1.3高斯混合聚类

高斯混合聚类的步骤:首先假设样本集具有一些规律,包括可以以α参数作为比例分为k类且每类内符合高斯分布。然后根据贝叶斯原理利用极大似然法同时求出决定分类比例的α和决定类内高斯分布的μ、Σ。最后将样本根据α、μ、Σ再次通过贝叶斯原理求出样本该分在哪个簇。

高斯混合聚类采用概率模型来表达聚类原型。换句话说,GMM聚类方法最终得到的是样本属于每个类别的概率,而不是像K均值那样将它直接归化为某一类别,因此也称为软聚类。

2.密度聚类

DBSCAN算法

3.层次聚类(Hierarchical clustering)

1)层次法(Hierarchicalmethods)先计算样本之间的距离。每次将距离最近的点合并到同一个类。然后,再计算类与类之间的距离,将距离最近的类合并为一个大类。不停的合并,直到合成了一个类。其中类与类的距离的计算方法有:最短距离法,最长距离法,中间距离法,类平均法等。比如最短距离法,将类与类的距离定义为类与类之间样本的最短距离。

层次聚类算法根据层次分解的顺序分为:自下底向上和自上向下,即凝聚的层次聚类算法和分裂的层次聚类算法(agglomerative和divisive),也可以理解为自下而上法(bottom-up)和自上而下法(top-down)。自下而上法就是一开始每个个体(object)都是一个类,然后根据linkage寻找同类,最后形成一个“类”。自上而下法就是反过来,一开始所有个体都属于一个“类”,然后根据linkage排除异己,最后每个个体都成为一个“类”。这两种路方法没有孰优孰劣之分,只是在实际应用的时候要根据数据特点以及你想要的“类”的个数,来考虑是自上而下更快还是自下而上更快。至于根据Linkage判断“类”的方法就是最短距离法、最长距离法、中间距离法、类平均法等等(其中类平均法往往被认为是最常用也最好用的方法,一方面因为其良好的单调性,另一方面因为其空间扩张/浓缩的程度适中)。为弥补分解与合并的不足,层次合并经常要与其它聚类方法相结合,如循环定位。

2)Hierarchical methods中比较新的算法有BIRCH(Balanced Iterative Reducingand Clustering Using Hierarchies利用层次方法的平衡迭代规约和聚类)主要是在数据量很大的时候使用,而且数据类型是numerical。首先利用树的结构对对象集进行划分,然后再利用其它聚类方法对这些聚类进行优化;ROCK(A Hierarchical ClusteringAlgorithm for Categorical Attributes)主要用在categorical的数据类型上;Chameleon(A Hierarchical Clustering AlgorithmUsing Dynamic Modeling)里用到的linkage是kNN(k-nearest-neighbor)算法,并以此构建一个graph,Chameleon的聚类效果被认为非常强大,比BIRCH好用,但运算复杂度很高,O(n^2)。

算法流程:

(1) 将每个对象看作一类,计算两两之间的最小距离;

(2) 将距离最小的两个类合并成一个新类;

(3) 重新计算新类与所有类之间的距离;

(4) 重复(2)、(3),直到所有类最后合并成一类。

聚类的效果如下图,黑色是噪音点:

另外我们可以看出凝聚的层次聚类并没有类似基本K均值的全局目标函数,没有局部极小问题或是很难选择初始点的问题。合并的操作往往是最终的,一旦合并两个簇之后就不会撤销。当然其计算存储的代价是昂贵的。
 

优缺点:

优点:1,距离和规则的相似度容易定义,限制少;2,不需要预先制定聚类数;3,可以发现类的层次关系;4,可以聚类成其它形状

缺点:1,计算复杂度太高;2,奇异值也能产生很大影响;3,算法很可能聚类成链状

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章