文章目录

  • 图像聚类算法
  • 一、分类与聚类
  • 1.1 分类
  • 1.2 聚类
  • 二、聚类常见的算法
  • 2.1 原型聚类
  • 2.1.1 K-means聚类算法的分析流程:
  • 2.1.2 K-Means聚类与图像处理
  • 2.2 层次聚类
  • 2.1 凝聚层次聚类的流程
  • 2.3 密度聚类(DBSCAN)


图像聚类算法

一、分类与聚类

1.1 分类

  分类其实是从特定的数据中挖掘模式,作出判断的过程。

分类学习的主要过程:
(1)训练数据集存在一个类标记号,判断它是正向数据集(起积极作用,如非垃圾邮件),还是负向数据集(起抑制作用,如垃圾邮件);
(2)然后需要对数据集进行学习训练,并构建一个训练的模型。
(3)通过该模型对预测数据集进行预测,并计算其结果的性能。

1.2 聚类

  从广义上说,聚类就是将数据集中某些方面相似的数据成员放在一起。一个聚类就是一些数据实例的集合,其中处于相同聚类中的数据元素彼此相似,但是处于不同聚类中的元素彼此不同。由于在聚类中那些表示数据类别的分类或分组信息是没有的,即这些数据是没有标签的,所以聚类通常被归为无监督学习(Unsupervised Learning)。

  聚类的目的是把数据分类,但是事先不知道如何分的,完全是算法自己来判断各条数据之间的相似性,相似的就分到一起。在聚类结论出来之前,完全不知道每一类有什么特点,一定要根据聚类的结果通过人的经验来分析,看看聚成的这一类大概有什么特点。

  总之,聚类主要是“物以类聚”,通过相似性把相似元素聚集在一起,它是没有标签的,这是与分类最大的区别,分类是通过标签来训练得到一个模型,对新数据预测的过程,其数据存在标签。

二、聚类常见的算法

聚类算法分为三大类:

  1. 原型聚类
  2. 层次聚类
  3. 密度聚类

2.1 原型聚类

  K-Means聚类是最常用的聚类算法,是一种原型聚类算法,最初起源于信号处理,其目标是将数据点划分为K个类簇。该算法的最大优点是简单、便于理解,运算速度较快,缺点是在聚类前需要指定聚集的类簇数。

2.1.1 K-means聚类算法的分析流程:

第一步,确定K值,即将数据聚集成K个类簇或小组;
第二步,从数据集中随机选择K个数据点作为质心(Centroid)或数据中心;
第三步,分别计算每个质心之间的距离,并将每个点划分到离最近质心的小组;
第四步,当每个质心都聚集一些点后,重新定义算法选出质心。(对于每个簇,计算其均值,即得到新的K个质心点);
第五步,迭代执行第三步到第四步,直到迭代终止条件满足为止(分类结果不再变化)。

在图像处理中,通过K-Means聚类算法可以实现图像分割、图像聚类,图像识别等操作。通过K-Means可以将这些像素点聚类成K个簇,然后使用每个簇内的质心点来替换簇内所有的像素点,这样就能实现在不改变分辨率的情况下量化压缩图像颜色层级分割。

2.1.2 K-Means聚类与图像处理
  • 优点:
  1. 解决聚类问题的一种经典算法,简单、快速;
  2. 对处理大数据集,该算法保持高效率;
  3. 当结果簇是密集的,它的效果较好。
  • 缺点:
  1. 必须事先给出K(要生成的簇的数目);
  2. 对噪声和孤立点数据敏感。

2.2 层次聚类

  层次聚类是一种很直观的算法,顾名思义就是样一层一层地进行聚类。层次法(Hierarchicalmethods) 先计算样本之间的距离,每次将距离最近的点合并到同一个类,然后,再计算类与类之间的距离,将距离最近的类合并成一个大类。不停地合并,直到合成一个类。其中类与类的计算方法有:最短距离法,最长距离法,中间距离法,类平均法等。比如最短距离法,将类与类的距离定义为类与类之间样本的最短距离。

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

2.1 凝聚层次聚类的流程

  凝聚型层次聚类的策略是先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到所有对象都在一个簇中,或者某个终结条件被满足。对大多数层次聚类属于凝聚型层次聚类,它们只是在簇间相似度的定义有所不同。这里给出采用最小距离的凝聚层次聚类算法流程:

(1)将每个对象看作一类,计算两两之间的最小距离;
(2)将距离最小的两个类合并成一个新类;
(3)重新计算新类与所有类之间的距离;
(4)重复(2)(3),直到所有类最后合并成一类。

特点:

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

优点:

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

缺点:

  • 计算复杂度太高;
  • 奇异值也能产生很大影响;
  • 算法很可能聚类成链状。

  每一类方法都有其特定的数据结构,对于服从高斯分布的数据用K-Means来进行聚类效果会比较好。而对于类别之间存在层结构的数据,用层次聚类会比较好。

2.3 密度聚类(DBSCAN)

算法:
需要两个参数:深度学习图像聚类算法 图像聚类是什么_层次聚类

  • 它由一个任意未被访问的点开始,然后探索这个点的 深度学习图像聚类算法 图像聚类是什么_聚类算法_02- 邻域,如果 深度学习图像聚类算法 图像聚类是什么_聚类算法_02- 邻域有足够的点,则建立一个新的聚类,否则这个点被标签为杂音。
  • 注意,这个点之后可能被发现在其它点的 深度学习图像聚类算法 图像聚类是什么_聚类算法_02- 邻域里,而该 深度学习图像聚类算法 图像聚类是什么_聚类算法_02- 邻域可能有足够的点,届时这个点会被加入该聚类中。

优点:

  1. 对噪声不敏感;
  2. 能发现任意形状的聚类。

缺点:

  1. 聚类结果与参数有很大的关系;
  2. 用固定参数识别聚类,但当聚类的稀疏程度不同时,相同判定标准可能会破坏聚类的自然结构,即较稀疏的聚类会被划分为多个类或密度较大且离得较近的类会被合并成一个聚类。