Press "Enter" to skip to content

深度学习之–聚类算法

聚类和分类区别

 

聚类和分类的本质区别就是:聚类是无监督的,分类是有监督的;

 

聚类主要是”物以类聚”,通过相似性把相似元素聚集在一起,它没有标签;而分类通

 

过标签来训练得到一个模型,对新数据集进行预测的过程,其数据存在标签。

 

分类学习主要过程:

 

(1)训练数据集存在一个类标记号,判断它是正向数据集(起积极作用,不垃圾邮件),

 

还是负向数据集(起抑制作用,垃圾邮件);

 

(2)然后需要对数据集进行学习训练,并构建一个训练的模型;

 

(3)通过该模型对预测数据集进预测,并计算其结果的性能。

 

从广义上说,聚类就是将数据集中在某些方面相似的数据成员放在一起。

 

一个聚类就是一些数据实例的集合,其中处于相同聚类中的数据元素彼此相似,但是处于不

 

同聚类中的元素彼此不同。

 

由于在聚类中那些表示数据类别的分类或分组信息是没有的,即这些数据是没有标签的,所

 

以聚类通常被归为无监督学习(Unsupervised Learning)。

 

聚类的常见算法

 

聚类算法分为三大类:

 

 

    1. 原型聚类:

 

    1. • K均值聚类算法

 

    1. 层次聚类

 

    1. 密度聚类

 

 

K均值聚类算法(k-Means)

 

K-Means聚类是最常用的聚类算法,其目标是将数据点划分为K个类簇。

 

该算法的最大优点是简单、便于理解,运算速度较快,缺点是要在聚类前指定聚集的类簇数。

 

k-means算法是一种原型聚类算法。

 

实现步骤:

 

第一步,首先确定K值(即将数据集聚集成K个类)。

 

第二步,从数据集中随机选择K个数据点作为质心(Centroid)或数据中心。

 

第三步,分别计算每个点到每个质心之间的距离,并将每个点划分到离最近质心的小组。

 

第四步,当每个质心都聚集了一些点后,重新定义算法选出新的质心。(对于每个簇,计

 

算其均值,即得到新的k个质心点)

 

第五步,迭代执行第三步到第四步,直到迭代终止条件满足为止(聚类结果不再变化)

 

迭代终止的条件:当前分组的结果和上次没有任何变化了,说明已经收敛,聚类结束。

 

在图像处理中,通过K-Means聚类算法可以实现 图像分割 、图像识别等操作。

 

我们通过K-Means可以将这些像素点聚类成K个簇,然后使用每个簇内的质心点来替换簇内所有

 

的像素点,这样就能实现在不改变分辨率的情况下量化压缩图像颜色,实现图像颜色层级分割。

 

优缺点:

 

优点:

 

1.是解决聚类问题的一种经典算法,简单、快速

 

2.对处理大数据集,该算法保持高效率

 

3.当结果簇是密集的,它的效果较好

 

缺点:

 

1.必须事先给出k(要生成的簇的数目)。

 

2.对躁声和孤立点数据敏感

 

层次聚类

 

层次聚类是一种很直观的算法。顾名思义就是要一层一层地进行聚类。

 

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

 

层次聚类算法根据层次分解的顺序分为:自下向上和自上向下,即 凝聚的层次聚类算法 和 分裂的层次聚类算法 (agglomerative和divisive),也可以理解为自下而上法(bottom-up)和自上而下法(top-down)。

 

实现步骤:

 

以下采用最小距离的凝聚的层次聚类算法为例进行说明:

 

凝聚型层次聚类的策略是先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到所有对象都在一个簇中,或者某个终结条件被满足。

 

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

 

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

 

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

 

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

 

• 凝聚的层次聚类并没有类似K均值的全局目标函数,没有局部极小问题或是很难选择初始点的问题。

 

• 合并的操作往往是最终的,一旦合并两个簇之后就不会撤销。

 

• 其计算存储的代价是昂贵的。

 

最终如下图所示分为了一类。那如果我想分两类三类怎幺办呢?看第二幅图

 

想分两类时,就从上往下数有两根竖线时进行切割,那幺所对应的竖线下面所连接的为一类,从下图可以看出横线下面的就是我们所幺分的两类;

 

想分三类时,就从上往下数有三根竖线时进行切割,那幺所对应的竖线下面所连接的为一类;

 

层次聚类的优缺点

 

优点:

 

1,距离和规则的相似度容易定义,限制少;

 

2,不需要预先制定聚类数;

 

3,可以发现类的层次关系;

 

4,可以聚类成其它形状

 

缺点:

 

1,计算复杂度太高;

 

2,奇异值也能产生很大影响;

 

3,算法很可能聚类成链状

 

密度聚类DBSCAN

 

需要两个参数:ε (eps) 和形成高密度区域所需要的最少点数 (minPts)

它由一个任意未被访问的点开始,然后探索这个点的 ε-邻域,如果 ε-邻域里有足够的点,则建立一
个新的聚类,否则这个点被标签为杂音。
注意,这个杂音点之后可能被发现在其它点的 ε-邻域里,而该 ε-邻域可能有足够的点,届时这个点
会被加入该聚类中。

DBSCAN算法例题

 

DBSCAN聚类过程:

 

第 1 步,在数据库中选择一点 1 ,由于在以它为圆心的,以 1 为半径的圆内包含 2 个点 ,因此它不是核心点,选择下一个点。

 

第 2 步,在数据库中选择一点 2 ,由于在以它为圆心的,以 1 为半径的圆内包含 2 个点,因此它不是核心点,选择下一个点。

 

第 3 步,在数据库中选择一点 3 ,由于在以它为圆心的,以 1 为半径的圆内包含 3 个点,因此它不是核心点,选择下一个点。

 

第 4 步,在数据库中选择一点 4 ,由于在以它为圆心的,以 1 为半径的圆内包含 5 个点,因此它是核心点,寻找从它出发可达的点 ,聚出的新类C1{1 , 3 , 4 , 5 , 9 , 10 , 12} ,选择下一个点。

 

第 5 步,在数据库中选择一点 5 ,已经在簇 1 中,选择下一个点。

 

第6 步,在数据库中选择一点 6 ,由于在以它为圆心的,以 1 为半径的圆内包含 3 个点,因此它不是核心点,选择下一个点。

 

第7步,在数据库中选择一点7,由于在以它为圆心的,以1为半径的圆内包含5个点,因此它是 核心点,寻找从它出发可达的点,聚出的新类C2{2,6,7,8,11},选择下一个点。

 

第 8 步,在数据库中选择一点 8 ,已经在簇 2 中,选择下一个点。

 

第 9 步,在数据库中选择一点 9 ,已经在簇 1 中,选择下一个点。

 

第 10 步,在数据库中选择一点 10 ,已经在簇 1 中,选择下一个点。

 

第 11 步,在数据库中选择一点 11 ,已经在簇 2 中,选择下一个点。

 

第 12 步,选择 12 点,已经在簇 1 中,由于这已经是最后一点所有点都以处理,程序终止。

 

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注