21/7/16 读书笔记
数据挖掘导论 簇评估概述
我们需要意识到聚类分析本身是一项试探性的数据分析工作,即我们并不知道什么是最优的聚类结果(数据中甚至并不存在聚类模式),因此对于簇的质量的评估是一个尴尬的过程,我们自以为得出了高质量的簇,但是实际上原数据可能只是随机分布的点。尽管如此,我们依然希望能够通过已有的信息尽可能判断得到的簇的质量,毕竟高质量的簇至少有较高高概率对应了某些聚类模式。
对于簇的评估可以被分为三种主要形式:
- 非监督:根据得出的簇的信息,来评估簇结构的优良性。通常来说非监督的度量由称为内部指标,主要是凝聚性和分离性,描述了簇内部和簇之间的质量,而脱离实际的外部信息。
- 监督:需要参考外部的信息,比如在我们已知数据对应的类标号时,通过计算先验的类标号和聚类算法得出的分类之间的相似度来评判聚类质量。
- 相对的:对于两个不同的聚类和簇,我们需要对比他们的质量。其本质还是要用到监督和非监督的度量来进行对比。
数据挖掘导论 非监督簇评估
对于划分的聚类,我们定义簇的有效性。簇的有效性可以指出的凝聚性,也可以指簇的分离性,其描述了聚类算法得出的簇的质量。一个有效的簇,应该具有较高的凝聚度或者较高的分离度。我们用所有簇的(加权)有效性的和来描述一个聚类的总有效性。以下分别从基于图的聚类技术和基于原型的聚类技术两个角度,去探讨什么是凝聚度和分离度。
在基于图的聚类技术中,我们将数据视作单独的点,点与点之间的邻近度用点之间的边的长度来表示。一个簇之内所有的点之间的边的长度的加权和,表示了这个簇的凝聚度。两个簇之间的点与点之间的边的长度的加权和,表示了这两个簇之间的分离度。
在基于原型的聚类技术中,我们将簇用原型来进行代表。一个簇内所有点到其原型的邻近度之和,表示了簇的凝聚度。两个簇的原型之间的距离,表示了这两个簇之间的分离度。额外的,单个簇的分离度度量可以用该簇原型到所有数据的总原型的邻近度描述。这是因为对于一个聚类,其总分离度与所有簇之间的相对分离度有直接关系,而总分离度又可以用所有簇原型到总原型邻近度表示。
根据凝聚度和分离度,我们可以分析:
- 一个凝聚度不好的簇可以将其分裂,一对分离度不好的簇可以进行合并
- 对于一个数据点,其对所在簇的有效性贡献反映了其在簇中接近“中心”的程度
我们基于其中的第二点,引入一个新的概念:轮廓系数
轮廓系数
对于一个体点,我们:
-
计算该点到所在簇中其他对象的平均距离,记为\(a\)
-
计算该点到任何不包括该点的簇中所有对象的平均距离,记为\(b_i\)。而在所有簇中,找出最小的那个\(b_{min}\)
-
计算轮廓系数
\[s=\frac{b_{min}-a}{\max(a,b_{min})} \]
轮廓系数处于-1到1之间。我们期望轮廓系数尽可能得大(接近1),且应该是正的。如果轮廓系数为负,代表该点距离其他簇更近,这不符合我们对于优质簇的定义。可以发现,簇中越靠近中心的点轮廓系数越高,越是在边缘轮廓系数越低。
邻近度矩阵评估
在得到聚类结果后,如果我们将邻近度矩阵中的行列重新排序,使得聚类分析中处于同一个簇的对象连续排布,这样得到的邻近度矩阵应该能够呈现出明显的块对角结构。因为我们期望一个簇中的所有点之间的邻近度尽可能高,不同簇之间的点之间的邻近度低。这样我们就能通过可视化的手段观察聚类效果。当块对角结构越明显,聚类的效果越好。
这种方式对于大型数据集来说计算开销比较大,我们可以对簇进行抽样,大簇少抽样,小簇多抽样,以防止邻近度矩阵丢失某些较小的簇的表述。
层次聚类的共性分类距离与系数
回想凝聚的层次聚类分析技术,我们采用树状图描述聚类过程。其中纵轴描述了合并后簇内部的分离程度。对于每次合并,我们将一个簇中所有点到另一个簇中所有点的共性分类距离记为这次合并后树状图中点对应的纵轴值。
共性分类相关系数描述了由共性分类距离组成的矩阵与原相异度矩阵之间的相似性,相似性越高,说明层次聚类的性能越好。这是因为层次聚类中定义共性分类距离反映了点之间的相异程度,相异度越高的点之间所期望的共性分类距离越长。
确定簇的正确个数
我们对于簇的挖掘可能是随意的,事先并不知道应该有几个簇。以K均值为例,我们通过指定不同的K值,多次进行聚类分析,可以发现随着K值增大,聚类的总SSE是递减的,这非常好理解,因为簇的数量增大引起簇内部的凝聚度上升。但是并不是越多的簇越好,因为则不符合客观需求。
我们考虑平均轮廓系数关于K的变化,通常可以发现平均轮廓系数在K取一定值时达到极大值,此时的K应该是正确的簇个数。这是因为簇过多,会导致边界点增加,平均轮廓系数下降;簇过少,会导致凝聚度不高,簇内点的轮廓系数普遍降低。
当然,我们考虑的是K均值技术,这使得我们必须考虑有时会存在嵌套的簇或者非椭圆的簇,而K均值技术倾向于用更多的球状簇去拟合他们,使得最终得出的K值通常较大。
聚类趋势:数据中是否真的存在聚类模式呢?
我们可以通过实行聚类得出的簇的质量来评价,如果多种技术均不能得到较高的簇,那么说明数据中可能并不存在明显的聚类模式。
而我们也可以通过直接评估的方式来评价,而不施行聚类技术。本书介绍了Hopkins度量,其从数据空间内随机取k个点,然后从数据中随机取k个数据点,考虑这2k个点各自的最近邻距离,如果这两组的最近邻距离大致相同,说明从数据中提取的点从统计意义上接近数据空间内随机提取的点,暗示数据可能是随机分布的。反之如果最近邻距离差异较大,说明数据在数据空间内很可能是规律分布的,此时进行聚类更可能提取出有意义的簇。
数据挖掘导论 监督度量
在聚类分析中引入关于数据的外部信息,通常来说是引入已知的数据对象的类标号形式,通过对比聚类分析的簇标号和类标号的对应程度来反映聚类技术的质量。由于我们在聚类分析之外就已知了对象的分类信息,因此这种评估主要还是针对聚类技术的性能测试,以表明聚类技术能够在何种程度上替代人工标注,而不是进行实际的聚类分析任务。
对于簇有效性的监督度量,本书中从三种方面进行了介绍:
- 面向分类准确度的度量:主要评估预测的类标号与实际类标号的对应程度。这使得聚类算法的评估问题变成了一个分类器性能的评估问题,因此可以回想第四章我们所学的哪些度量:熵、纯度、精度、召回率、F度量等。
- 面向相似性的度量:聚类算法除了需要准确进行分类外,还应该尽可能使得簇内的对象的相似性尽可能高。聚类算法的本质也在于聚合相似性高的对象,而不是进行分类。这种度量基于这一个前提:同一个簇的两个对象同样应该属于一个类。
- 层次聚类的簇有效性评估:层次聚类的簇评估较为复杂,书中给出一个根据类标号集合进行评估的例子,其主要评估层次聚类是否对于每个类,至少有一个簇相对较为纯粹,且能够包含该类的大部分对象。需要对每个类,计算簇层次结构内每个簇的F度量。
数据挖掘导论 簇有效性度量的显著性
我们不得不考虑一个问题:我们对于簇的有效性进行了评估,由此得出了某个数值来反映其有效程度。但是我们怎么通过这个数值来准确反映“簇究竟有多有效”这个问题呢?
本书定义一个簇是有效的,当且仅当其有效性度量是非随机的。即这个簇越不像是随机出现的,那么这个簇越可能是显著的。这需要基于统计概率进行评估,通过随机生成多组数据,然后运用聚类算法后对生成的簇的有效性度量进行计算,得到有效性度量的概率分布。当原数据生成的簇的有效性度量显然在该概率分布中出现的概率很低,那么说明原数据集上执行的聚类算法很可能得到了有效的簇。