机器学习(十一)聚类算法(Kmeans与DBSCAN与分层聚类)

机器学习(十一)

聚类算法(Kmeans、DBSCAN、分层聚类)

概述:

对于"监督学习"(supervised learning),其训练样本是带有标记信息的,并且监督学习的目的是:对带有标记的数据集进行模型学习,从而便于对新的样本进行分类。而在“无监督学习”(unsupervised learning)中,训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的数据分析提供基础。对于无监督学习,应用最广的便是"聚类"(clustering)。

“聚类算法”试图将数据集中的样本划分为若干个通常是不相交的子集,每个子集称为一个“簇”(cluster),通过这样的划分,每个簇可能对应于一些潜在的概念或类别。

我们可以通过下面这个图来理解:
机器学习(十一)聚类算法(Kmeans与DBSCAN与分层聚类)_第1张图片
上图是未做标记的样本集,通过他们的分布,我们很容易对上图中的样本做出以下几种划分。
当需要将其划分为两个簇时,即 =2 时:
机器学习(十一)聚类算法(Kmeans与DBSCAN与分层聚类)_第2张图片当需要将其划分为四个簇时,即 =4 时:
机器学习(十一)聚类算法(Kmeans与DBSCAN与分层聚类)_第3张图片

Kmeans

简介:

kmeans算法又名k均值算法。其算法思想大致为:先从样本集中随机选取 个样本作为簇中心,并计算所有样本与这 个“簇中心”的距离,对于每一个样本,将其划分到与其距离最近的“簇中心”所在的簇中,对于新的簇计算各个簇的新的“簇中心”。
  
根据以上描述,我们大致可以猜测到实现kmeans算法的主要三点:

  • 簇个数 的选择
  • 各个样本点到“簇中心”的距离
  • 根据新划分的簇,更新“簇中心”

分析:

kmeans算法由于初始“簇中心”点是随机选取的,因此最终求得的簇的划分与随机选取的“簇中心”有关,也就是说,可能会造成多种 个簇的划分情况。这是因为kmeans算法收敛到了局部最小值,而非全局最小值。

DBSCAN

简介:

DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种基于密度的空间聚类算法。 该算法将具有足够密度的区域划分为簇,并在具有噪声的空间数据库中发现任意形状的簇,它将簇定义为密度相连的点的最大集合。

图解:

下面这些点是分布在样本空间的众多样本,现在我们的目标是把这些在样本空间中距离相近的聚成一类。我们发现A点附近的点密度较大,红色的圆圈根据一定的规则在这里滚啊滚,最终收纳了A附近的5个点,标记为红色也就是定为同一个簇。其它没有被收纳的根据一样的规则成簇。(形象来说,我们可以认为这是系统在众多样本点中随机选中一个,围绕这个被选中的样本点画一个圆,规定这个圆的半径以及圆内最少包含的样本点,如果在指定半径内有足够多的样本点在内,那么这个圆圈的圆心就转移到这个内部样本点,继续去圈附近其它的样本点,类似传销一样,继续去发展下线。等到这个滚来滚去的圈发现所圈住的样本点数量少于预先指定的值,就停止了。那么我们称最开始那个点为核心点,如A,停下来的那个点为边界点,如B、C,没得滚的那个点为离群点,如N)。
机器学习(十一)聚类算法(Kmeans与DBSCAN与分层聚类)_第4张图片
基于密度这点有什么好处呢,我们知道kmeans聚类算法只能处理球形的簇,也就是一个聚成实心的团(这是因为算法本身计算平均距离的局限)。但往往现实中还会有各种形状,比如下面两张图,环形和不规则形,这个时候,那些传统的聚类算法显然就悲剧了。于是就思考,样本密度大的成一类。这就是DBSCAN聚类算法。
机器学习(十一)聚类算法(Kmeans与DBSCAN与分层聚类)_第5张图片

重要参数:

1.eps:
DBSCAN算法参数,即我们的ϵ-邻域的距离阈值,和样本距离超过ϵ的样本点不在ϵ-邻域内。默认值是0.5.一般需要通过在多组值里面选择一个合适的阈值。eps过大,则更多的点会落在核心对象的ϵ-邻域,此时我们的类别数可能会减少, 本来不应该是一类的样本也会被划为一类。反之则类别数可能会增大,本来是一类的样本却被划分开。

2.min_samples:
DBSCAN算法参数,即样本点要成为核心对象所需要的ϵ-邻域的样本数阈值。默认值是5. 一般需要通过在多组值里面选择一个合适的阈值。通常和eps一起调参。在eps一定的情况下,min_samples过大,则核心对象会过少,此时簇内部分本来是一类的样本可能会被标为噪音点,类别数也会变多。反之min_samples过小的话,则会产生大量的核心对象,可能会导致类别数过少。

3.metric:
机器学习(十一)聚类算法(Kmeans与DBSCAN与分层聚类)_第6张图片

分层聚类

简介:

分层聚类(或分层聚类)输出层次结构,这种结构比平面聚类返回的非结构化聚类集更具信息性。

分层聚类法(hierarchical cluster method)一译“系统聚类法”。聚类分析的一种方法。其做法是开始时把每个样品作为一类,然后把最靠近的样品(即距离最小的群品)首先聚为小类,再将已聚合的小类按其类间距离再合并,不断继续下去,最后把一切子类都聚合到一个大类。
机器学习(十一)聚类算法(Kmeans与DBSCAN与分层聚类)_第7张图片
一般来说,当考虑聚类效率时,我们选择平面聚类,当平面聚类的潜在问题(不够结构化,预定数量的聚类,非确定性)成为关注点时,我们选择层次聚类。 此外,许多研究人员认为,层次聚类比平面聚类产生更好的聚类。
机器学习(十一)聚类算法(Kmeans与DBSCAN与分层聚类)_第8张图片
层次聚类(Hierarchical Clustering)是聚类算法的一种,通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树。在聚类树中,不同类别的原始数据点是树的最低层,树的顶层是一个聚类的根节点。创建聚类树有自下而上合并和自上而下分裂两种方法。

作为一家公司的人力资源部经理,你可以把所有的雇员组织成较大的簇,如主管、经理和职员;然后你可以进一步划分为较小的簇,例如,职员簇可以进一步划分为子簇:高级职员,一般职员和实习人员。所有的这些簇形成了层次结构,可以很容易地对各层次上的数据进行汇总或者特征化。
机器学习(十一)聚类算法(Kmeans与DBSCAN与分层聚类)_第9张图片
机器学习(十一)聚类算法(Kmeans与DBSCAN与分层聚类)_第10张图片
由上图可知,给定不同的距离,可以得到不同的分类,比如,23,则分为两类,中国和其他国家和地区;17,则可分成三类,中国单独一类,菲律宾和日本一类,其余国家和地区为一类。

自上而下的合并算法

机器学习(十一)聚类算法(Kmeans与DBSCAN与分层聚类)_第11张图片
两个组合数据点见的距离:

1.Single Linkage:
方法是将两个组合数据点中距离最近的两个数据点间的距离作为这两个组合数据点的距离。这种方法容易受到极端值的影响。两个很相似的组合数据点可能由于其中的某个极端的数据点距离较近而组合在一起。

2.Complete Linkage:
complete Linkage的计算方法与Single Linkage相反,将两个组合数据点中距离最远的两个数据点间的距离作为这两个组合数据点的距离。Complete Linkage的问题也与Single Linkage相反,两个不相似的组合数据点可能由于其中的极端值距离较远而无法组合在一起。

3.Average Linkage:
Average Linkage的计算方法是计算两个组合数据点中的每个数据点与其他所有数据点的距离。将所有距离的均值作为两个组合数据点间的距离。这种方法计算量比较大,但结果比前两种方法更合理。
我们使用Average Linkage计算组合数据点间的距离。下面是计算组合数据点(A,F)到(B,C)的距离,这里分别计算了(A,F)和(B,C)两两间距离的均值。
在这里插入图片描述

你可能感兴趣的:(python,sklearn)