聚类和分类区别
聚类和分类的本质区别就是:聚类是无监督的,分类是有监督的;
聚类主要是"物以类聚",通过相似性把相似元素聚集在一起,它没有标签;而分类通
过标签来训练得到一个模型,对新数据集进行预测的过程,其数据存在标签。
分类
分类学习主要过程:
(1)训练数据集存在一个类标记号,判断它是正向数据集(起积极作用,不垃圾邮件),
还是负向数据集(起抑制作用,垃圾邮件);
(2)然后需要对数据集进行学习训练,并构建一个训练的模型;
(3)通过该模型对预测数据集进预测,并计算其结果的性能。
聚类
从广义上说,聚类就是将数据集中在某些方面相似的数据成员放在一起。
一个聚类就是一些数据实例的集合,其中处于相同聚类中的数据元素彼此相似,但是处于不
同聚类中的元素彼此不同。
由于在聚类中那些表示数据类别的分类或分组信息是没有的,即这些数据是没有标签的,所
以聚类通常被归为无监督学习(Unsupervised Learning)。
聚类的常见算法
聚类算法分为三大类:
- 原型聚类:
• K均值聚类算法 - 层次聚类
- 密度聚类
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 中,由于这已经是最后一点所有点都以处理,程序终止。