第9章-聚类学习理解记录

Posted wyy_persist

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第9章-聚类学习理解记录相关的知识,希望对你有一定的参考价值。

9.1 聚类任务

是一种无监督学习的方法。
聚类将样本集划分为若干个不相交的子集,其中每一个子集称为簇。

聚类的过程是只生成一些簇,具体对于簇的命名是未知的,是需要后期经验者根据以往的经验和实际的应用场景进行划分的。

设计聚类算法的两个基本的问题:

  1. 性能度量
  2. 距离计算

9.2 性能度量

也称为聚类的有效性指标。如果明确了将要使用的性能度量,那么可以直接将其作为聚类过程中的优化目标。

使用的性能度量方法大致有两个方面:

  1. 将聚类结果和某个模型进行对比,称为外部指标。
  2. 直接考察聚类结果,不利用任何参考模型,称为内部指标。

然后对数据集D,假定通过聚类给出的簇划分为C,参考模型给出的簇划分为C*,那么相应地令lamda 和 lamda*分别表示C和C*对应的簇标记向量。

然后将样本对两两配对进行考虑:

分别使得两个样本之间的某种关系定义为:a b c d。

然后,基于上述的abcd四个方向的关系类型得到了下述的聚类性能外部度量指标:

Jaccard系数、FM指数(简称:FMI)、Rand指数。

然后有:

Dist(x,x)表示两个样本之间的距离;u代表簇C的中心点u = 1/|C| * 求和(xi);显然,avg(C)表示簇之间的平均距离;diam(C)表示簇C内样本间的最远距离;dmin(Ci,Cj)表示的是对应于簇Ci和Cj最近样本间的距离;dcen()表示对应于簇Ci和簇Cj中心点间的距离。

基于上述的各种距离指标得到了下述的簇聚类性能度量的内部指标:

  1. DB指数;DBI。

DB指数:1/K * max(求和(avg(Ci)+avg(Cj))/dcen());

  1. Dunn指数。DI.

DI指数:

Min{min(dmin() / max diam(Cl))}

显然,DBI越小越好,DI指数越大越好。

9.3 距离计算

对函数dist(),若它是一个距离度量,那么需要满足一些基本性质。

非负性,同一性,对称性,直递性。

给定样本xi和xj最常用的就是文科夫斯基距离:

Dist(xi,xj) = (求和 |xiu - xju| ^ p)^ (1/p);

对p 》1的情况,上述式满足距离度量的基本性质。

对p = 1的情况,上述的式子变成了曼哈顿距离。

通常将属性划分为连续书信和离散属性。

有序属性更容易计算两个样本集合之间的距离。

上述的文科夫斯基距离可用于有序属性。

对无序属性来说可以使用VDM。令mu,a 表示在属性u上取值为a的样本数.mu,a,i 表示在第i个样本簇中在属性u上取值为a的样本数.k为样本簇数目.那么,属性u上两个离散值a和b之间的VDM距离为:

VDMp(a,b) = 求和|mu,a,I / mu,a – mu,b,i / mu,b| ^ p;

于是将文科夫斯基和VDM结合即可处理混合属性。

不满足直递性的距离称为非度量距离。

可以将两个不同类别之间距离近似于一个其他类,当两者都接近于第三个类别的时候,这两个类别就更加近似。这样的距离称为非度量距离。但是此时的距离不满足直递性。

在具体的应用场景中需要使用距离度量学习来进行选择使用何种距离度量学习的方法。

9.4 原型聚类

也称为基于原型的聚类。此类算法是假设聚类结构能通过一组原型刻画。

步骤:

算法先对原型进行初始化,然后对原型进行迭代更新求解。

几种著名的原型聚类算法:

  1. k均值聚类。给定样本集合D,k均值算法针对聚类所得簇划分C = {C1,C2,…,Ck}最小化平方误差,

E = 求和 求和 ||x - ui||^2 2。

其中的ui是簇Ci的均值向量。

一定程度上来说,上式描述了簇内样本围绕在簇Ci的均值向量的紧密程度。

E越小表示簇内样本相似度越高。

K均值法采用了贪心算法,通过迭代优化来近似求解NP难问题。

具体步骤:

  1. 假设初始化聚类数目是m,那么算法开始的时候随机选取m个样本作为均值向量。
  2. 然后考察剩余的样本与m个均值向量之间的距离。然后将对应的剩余的样本进行划分。
  3. 然后使用最新的簇划分进行均值向量的获得。
  4. 不断重复上述的过程,如果遇到相邻两次迭代优化的结果相同,那么算法停止,从而得到最后的簇划分。

9.4.2 学习向量量化

LVQ,也是使用一组原型向量来刻画聚类结构。但是和一般的聚类方法不同的是,LVQ假设数据样本带有数据标记。学习过程利用类似于监督信息来辅助聚类。

LVQ的目标是:从样本集D中学到一组n维原型向量{p1,p2,…,pn}。每个原型向量代表一个聚类簇。簇标记为:ti 属于 y。

LVQ算法描述:

  1. 对原型向量进行初始化。如:对第q个簇可以从类别标记tq的样本中随机选取一个作为原型向量。
  2. 然后算法对选择的原型向量进行迭代优化。在每一轮的迭代中,算法随机选择一个有标记训练样本。找出与其距离最近的原型向量。
  3. 如果算法达到了最大迭代优化次数,或原型向量更新很小甚至不再更新。那么应当将当前的原型向量作为最终的结果返回。

重点说明:

更新原型向量的时候,当pi和xj类别相同且最近,那么将pi向xj方向靠拢。此时得到了新的原型向量,然后pi和xj之间的距离为:

||p’ – xj||2 = ||pi* + y * (xj – pi*) - xj||2 =

(1 - y) * ||pi* - xj||2;

此时令学习率y属于(0,1);

原型向量pi*在更新为p’之后将更加接近xj。

如果pi*和xj的类别标记不同,那么更新后的原型向量与xj之间的距离会更加远。

在得到一组原型向量之后,即可实现对样本空间X的簇划分。

对任意的样本x将被划入与其距离最近的原型向量所代表的簇中。

也就是说每一个向量pi相当于定义了一个域Ri,该区域中的样本与pi的距离不大于它与其他向量之间的距离。

由此形成了簇划分。该划分称为:Voronoi划分。

9.4.3 高斯混合聚类

高斯混合聚类采用概率模型来表达聚类原型。

高斯分布由均值向量u和协方差矩阵sigma这两个参数确定。

高斯混合分布使用的是ai混合系数对k个高斯分布模型的加权求和。

步骤:

  1. 假设样本的生成过程由高斯混合分布给出,那么,根据ai定义的先验分布选择高斯混合成分,其中ai为选择第i个混合成分的概率。然后,根据被选择的混合成分的概率密度函数进行采样,从而生成相应的样本。
  2. 若训练集D由上述过程生成,令随机变量zj属于(1,2,3,…,k)表示生成样本xj的高斯混合成分。其取值未知。显然,zj的先验概率对应于ai。根据贝叶斯定理,可以得到zj的后验分布概率。也就是说上述的后验概率分布函数给出了样本xj由第i个高斯混合成分生成的后验概率。
  3. 当高斯混合分布已知时,高斯混合聚类将把样本集D划分为k个簇。每个样本xj的簇标记为:lamdaj。

也就是说高斯混合概率分布是采用概率模型(高斯分布)对原型进行刻画。簇划分则由原型对应后验概率确定。

对高斯混合模型的参数求解方法:

给定样本集可以使用极大似然估计。即最大化对数似然估计。

常采用EM算法进行迭代求解。

每个高斯成分的混合系数由样本属于该成分的平均后验概率确定。

步骤:

E步:在每一步中,先根据当前参数来计算每个样本属于每个高斯混合成分的后验概率rji,然后再根据式子(上述EM算法中的式子)更新模型参数(M步)。

具体实现步骤:

  1. 对高斯混合分布的模型参数进行初始化。
  2. 然后,基于EM算法对参数进行更新。如EM算法的停止条件满足,那么根据高斯混合分布确定簇划分。最后返回结果。

9.5 密度聚类

也称为基于密度的聚类。

该算法是通过样本分布的紧密程度进行确定的。

一般情况下,该算法从样本密度的角度出发考察样本之间的可连续性,并基于可连接样本不断扩展聚类簇以获得最终的聚类结果。

DBSCAN是其中的一种算法。基于一组邻域参数,来刻画样本分布的紧密程度。给定数据集D,定义了下面的概念。

e-邻域:对xj 属于 D,其e-邻域包含样本集D中与xj的距离不大于e的样本。即Ne(xj) = {xj 属于 D | dist(xi,xj) < = e};

这种情况下,有一下概念:

  1. 核心对象。如果xi的e-邻域至少包含MinPts个样本,即|Ne(xj)| >= MinPts,那么xj是一个核心对象。
  2. 密度直达。若xj位于xi的e-邻域中,且xj是核心对象,那么称xj由xi密度直达。
  3. 密度可达。对xi与xj来说,若存在样本序列p1,p2,p3,…,pn,其中p1 = xi,pn = xj,且p i+1 由pi密度直达,那么称为xj由xi密度可达。
  4. 密度相连。对xi与xj,若存在xk使得xi与xj均由xk密度可达,那么称为xi与xj密度相连。

基于上述的概念,DBSCAN将簇的概念定义为:由密度可达关系导出的最大的密度相连样本集合。也就是说,给定邻域参数(e,MinPts),簇c 内包含于 D是满足一下性质的非空样本子集。

连接性:xi属于C,xj属于C,推出 =》 xi和xj密度相连。

最大性:xi属于C,xj由xi密度可达,推出了:xj属于C。

实际上,如果xi是核心对象,那么以xi为核心对象,从xi出发的所有密度可达的所有样本集合记为X,那么X就是满足连接性与最大性的簇。

算法具体步骤:

  1. 算法先根据给定的邻域参数找到所有的核心对象。
  2. 然后,以任一核心对象为出发点,找到由其密度可达的样本生成聚类簇,直到所有核心对象被访问过为止。

上述就是DBSCAN的步骤的简单描述。

9.6 层次聚类

层次聚类试图在不同的层次对数据集进行划分。从而形成树形结构。

数据集的划分原则上采用自底向上的策略,也可以采用自顶向下的策略。

AGNES是一种采用自底向下聚合策略的层次聚类算法。该算法先将数据集中的每个样本看作一个初始的聚类簇,然后在算法运行的每一步中找到距离最近的两个聚类簇进行合并。

给出以下式子计算簇的相关距离:

  1. 最小距离:dmin()
  2. 最大距离:dmax()
  3. 平均距离:dacg() = 1 / |Ci| * |Cj| * 求和 求和 dist()

上述的最小距离由两个簇之间的最近样本决定;最大距离由两个簇之间的最远样本决定;平均距离由两个簇之间的所有样本共同决定。

算法描述:

  1. 先对仅包含一个样本的初始聚类簇和相应的距离矩阵进行初始化。
  2. 然后,AGNES算法不断合并距离最近的聚类簇,并对合并得到的聚类簇的聚类矩阵进行更新。上述的过程不断重复,直至达到预设的聚类簇数。

聚类性能的度量方法还有:

  1. F1值公式。
  2. 互信息。
  3. 平均廓宽。

K均值算法仅在凸形簇结构上的效果较好。

除了DBSCAN这一种自底向上的聚类算法之外,还有:OPTICS,DENCLUE。

DIANA采用的是自顶向下的分析策略。

但是上述的DNSCAN和DIANA算法都不能对已合并或已分拆的聚类簇进行回溯调整。而,常用的BIRCH,ROCK等算法给出了优化。

聚类集成算法使用多个聚类学习器之间的集成,能有效地降低聚类假设与真实聚类结构的不符,聚类过程中的随机性等因素带来不利的影响。

异常检测:常使用聚类或距离计算进行,如将远离所有簇中心的样本作为异常点。或将密度极低处的样本作为异常点。

又有人提出基于隔离性可快速检测出异常点。

以上是关于第9章-聚类学习理解记录的主要内容,如果未能解决你的问题,请参考以下文章

第12章 计算学习理论理解记录

第11章 特征学习与稀疏学习理解记录

第10章 降维与度量学习理解记录

第5章 神经网络理解记录

机器学习实战 - ApacheCN

第3章 机器学习的典型应用 3-2 典型应用-聚类