聚类和分类区别

  聚类和分类的本质区别就是:聚类是无监督的,分类是有监督的;
  聚类主要是"物以类聚",通过相似性把相似元素聚集在一起,它没有标签;而分类通
过标签来训练得到一个模型,对新数据集进行预测的过程,其数据存在标签。

分类

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

聚类

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

聚类的常见算法

聚类算法分为三大类:

  1. 原型聚类:
    • K均值聚类算法
  2. 层次聚类
  3. 密度聚类

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均值的全局目标函数,没有局部极小问题或是很难选择初始点的问题。
• 合并的操作往往是最终的,一旦合并两个簇之后就不会撤销。
• 其计算存储的代价是昂贵的。

示例:

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

深度学习表示能做层次聚类吗 深度聚类算法_算法


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

深度学习表示能做层次聚类吗 深度聚类算法_聚类_02


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

深度学习表示能做层次聚类吗 深度聚类算法_聚类_03

层次聚类的优缺点

优点:
1,距离和规则的相似度容易定义,限制少;
2,不需要预先制定聚类数;
3,可以发现类的层次关系;
4,可以聚类成其它形状
缺点:
1,计算复杂度太高;
2,奇异值也能产生很大影响;
3,算法很可能聚类成链状

密度聚类DBSCAN

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

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

深度学习表示能做层次聚类吗 深度聚类算法_深度学习表示能做层次聚类吗_04


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

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

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

深度学习表示能做层次聚类吗 深度聚类算法_算法_05


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

深度学习表示能做层次聚类吗 深度聚类算法_深度学习_06

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

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

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

深度学习表示能做层次聚类吗 深度聚类算法_聚类_07


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

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

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

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

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

深度学习表示能做层次聚类吗 深度聚类算法_算法_08