《机器学习技术》课件 第五章 聚类_第1页
《机器学习技术》课件 第五章 聚类_第2页
《机器学习技术》课件 第五章 聚类_第3页
《机器学习技术》课件 第五章 聚类_第4页
《机器学习技术》课件 第五章 聚类_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单元5聚类机器学习电气与信息工程系CONTENTS

目录010203任务5.1鸢尾花数据集导入与数据预处理任务5.2训练k-Means模型任务5.3模型评估引例描述

假设花海公园进了一批鸢尾花并需要移植,不同种类的鸢尾花混在一起,由于活动需求,需要将不同种类的鸢尾花分开进行种植,工人往往凭经验和学识判断鸢尾花是什么品种。如果使用计算机来完成鸢尾花的品种分类,该如何实现呢?可以先对花瓣的长度、花瓣的宽度、花萼的长度和花萼的宽度进行测量,然后根据机器学习的算法对采集到的测量数据进行聚类分析,即可对这些花进行归类。在本单元中,通过一种常用的聚类算法——k-Means来给大家介绍大量鸢尾花的分类过程。任务5.1鸢尾花数据集导入与数据预处理任务情景k-Means算法是一种无监督的聚类算法,由于其实用、简单和高效的特性而广受青睐。它被广泛应用于植物分类、图像分割、客户分类等场景。鸢尾花数据集包含鸢尾花的3个亚属,分别是山鸢尾(IrisSetosa)、变色鸢尾(IrisVersicolour)和维吉尼亚鸢尾(IrisVirginica),存放了这3个品种鸢尾花的花萼长度、花萼宽度、花瓣长度、花瓣宽度及类别数据。该数据集总共150条记录,每条记录由4个特征和1个标签构成,其中,标签按照3个品种分为3类。鸢尾花的3个亚属如图5-1所示。图5-1鸢尾花的3个亚属

任务情景由于聚类是一种无监督的学习方法,因此模型构建所需的训练集无须带有类标签。但是模型的构建需要依赖于训练数据两两之间的距离,即数据之间的距离。在构建距离之前需要了解训练数据的分布情况。任务布置

在Python中,实现数据集导入和数据预处理,提取特征值和标签值,并对数据进行可视化。导入的鸢尾花数据集的部分数值如图5-2所示。图5-2导入的鸢尾花数据集的部分数值任务布置导入的鸢尾花数据集的部分数据信息如图5-3所示。(a)导入的鸢尾花数据集的部分特征值(b)导入的鸢尾花数据集的部分标签值图5-3导入的鸢尾花数据集的部分数据信息任务布置鸢尾花数据集二维散点图如图5-4所示。(a)(b)(c)(d)(e)(f)图5-4鸢尾花数据集二维散点图知识准备—1.数据读取在Python中,读取数据的方式有很多种。在单元4中通过pandas库中的read_csv()函数对下载好的.csv格式的数据进行读取。通过sklearn库提供的函数实现数据的自动生成和自带数据集的导入,本单元的案例主要通过sklearn库提供的函数实现自带数据集的导入。sklearn库中的datasets模块提供了用于加载和读取流行的参考数据集的方法,还提供了人工数据生成器,该生成器用于得到计算机生成的数据集。datasets模块提供了几种数据集读取方式,如表5-1所示。表5-1datasets模块提供的数据集读取方式知识准备—1.数据读取

本单元的案例将直接通过sklearn.datasets.load_<name>()函数来读取Sklearn库自带的部分数据集,如表5-2所示。表5-2sklearn库自带的部分数据集的读取方式知识准备—1.数据读取通过sklearn.datasets.load_<name>()函数读取的数据集是一个字典的数据结构,下面以load_iris()函数的返回结果为例,它的属性及其描述如表5-3所示。表5-3load_iris()函数返回结果的属性及其描述知识准备—1.数据读取课堂随练5-1使用sklearn库的make_classification()函数实现分类数据的自动生成,即可生成特征数据和类标签。使用sklearn库中的load_digits()函数直接导入手写数字数据集。知识准备—2.数据可视化matplotlib.pyplot是一个命令风格函数的集合,使matplotlib库的机制更像MATLAB。它提供了plot()、xlabel()、ylabel()、scatter()及show()等函数,可以实现数据的图表展示。课堂随练5-3为随机生成的5个数据生成折线图。知识准备—2.数据可视化课堂随练5-4随机生成100个二维数据和100个类别,并通过图表展示。任务实施Step1:引入相关模块,sklearn库中的datasets模块提供了用于加载和读取流行的参考数据集的方法,matplotlib库提供了构建图表的函数,itertools库提供了读取排列组合数据的函数。Step2:使用datasets.load_iris()函数导入数据集。Step3:将鸢尾花数据集显示在二维散点图上。任务5.2训练k-Means模型任务布置要求训练出对鸢尾花聚类最佳的k-Means模型,k值在2~11范围内变化,找出聚类评估最佳的k-Means模型。需要分析k值的变化图,找到最佳的k值,图5-6所示为不同k值下的SSE值展示。图5-6不同k值下的SSE值展示在本任务中,当k值为3时,得到最优化聚类模型,学生可以选择其他案例进行测试。知识准备—1.聚类分析聚类分析既可以作为一个独立的工具来获得数据的分布情况,从而观察每个类的特点,也可以作为其他算法的数据预处理的方法,从而完成数据的预处理。

聚类分析是机器学习中的一种方法,属于无监督学习,其在很多领域都有相当成功的应用。在当前大数据时代,面对海量的数据,聚类分析的数据挖掘和数据分析、处理功能更会发挥重要的作用。

聚类依据某种特定的规则,将一个数据集划分成若干不同的子数据集,使得每个子数据集内数据点的相似度尽可能大一些,同时,不同子数据集的数据点的差异度也尽可能大一些。知识准备—1.聚类分析1)聚类的定义

聚类问题可以抽象成数学中的集合划分问题,给定一个样本集

,将其分成m个子集C1,C2,…,Cm,这些子集又称为簇。聚类的严格数学定义需满足下面3个条件:(1),。(2)(3)。

由以上3个条件可知,样本集的对象必定属于某一个类,且每个样本最多属于一个类。知识准备—1.聚类分析对一个数据集聚类的整个过程可以由以下4个阶段构成:(1)数据初始准备:对数据进行特征的标准化和降维。(2)数据的特征选择和提取:在初始特征中挑选最有效的特征,并将这些特征转换成新的突出特征。(3)数据聚类:选择合适特征类型的相似性度量准则,对数据对象间的相似度进行度量,执行聚类或分组。(4)聚类结果评估:对聚类结果进行有效性评估,涉及的准则包括内部准则、外部准则、相关准则。知识准备—1.聚类分析2)聚类算法的分类聚类算法大体上可以分为几种:基于划分的方法、基于层次的方法、基于密度的方法、基于网格的方法和基于模型的方法。要获得优质的聚类效果,则需要根据数据类型、聚类目的和应用场景,在众多的聚类算法中选择合适的聚类算法进行分析。图5-7所示为聚类算法的分类。图5-7聚类算法的分类知识准备—1.聚类分析(1)基于划分的方法。首先,给定一个包含n个数据对象的数据集X及需要划分的分区数k,基于划分的方法将数据集X划分成k个分区,其中,每个分区表示一个簇。基于划分的方法采用目标最小化的规则,将数据对象组织为k(k≤n)个集合,这样组织形成的每个集合都代表一个类。这些类必须满足以下要求:①

每个数据对象必须属于且只能属于某一个类。②每个类不能为空(至少包含一个对象)。然后,采用一种迭代的重定位技术,尝试通过对象在集合间的移动来改进划分结果。基于划分的方法有k-Means(k均值集合),k-Medoids(k中心点),CLARA(大型数据集聚类),CLARANS(随机搜索聚类)等算法。知识准备—1.聚类分析(2)基于层次的方法。层次聚类算法又叫作树聚类算法。该算法是将数据集按照树的层次架构来分裂或者聚合。根据层次分解的方式是自底向上还是自顶向下,可以将层次聚类算法分成凝聚法和分裂法。层次聚类的凝聚法和分裂法在1个包含5个对象的数据集{a,b,c,d,e}中的处理过程如图5-8所示。图5-8凝聚和分裂层次聚类知识准备—1.聚类分析凝聚法(AGNES)也称自底向上的方法,它首先将每个对象都设定为一个单独的类,再合并相近(相似度最高)的对象或类,然后合并这些类为更大的类,逐层地向上聚合,最后当所有的对象都在同一个类中或者满足某个终止条件时,算法结束。分裂法(DIANA)也称自顶向下的方法,它将所有对象所在的集合当作一个类,每次迭代,将大的类分裂为更小的类,逐层地向下分裂,直到每个对象在一个簇中或者满足某个终止条件时,算法结束。知识准备—1.聚类分析在层次聚类算法中,绝大多数的方法都是凝聚法。对凝聚法的具体描述如下:首先,将每个对象当作一个类;其次,合并所有类中距离最近(相似度最高)的两个类;再次,重新计算新产生的类与其他类之间的距离,重复合并距离最近的两个类;直到所有对象都在同一个类中或者满足终止条件时,算法结束。根据类与类之间的距离度量方式的不同,可以将层次聚类算法分为三种典型的算法:单链接(SingleLink)、全链接(CompleteLink)和平均链接(AverageLink)。具有代表性的层次聚类算法还有CURE、ROCK、BIRCH、Chameleon等。知识准备—1.聚类分析单链接:两个簇之间的距离为两个簇中所有对象之间的最短距离。图5-9描述了单链接的簇A与簇B之间的距离度量方式,距离公式为,式中,;n为A的对象数目;m为B的对象数目;dist(a,b)表示样本a与样本b之间的相似度。图5-9单链接算法知识准备—1.聚类分析全链接:两个簇之间的距离为两个簇中所有对象之间的最长距离。图5-10描述了全链接的簇A与簇B之间的距离度量方式,距离公式为,,式中,,n为A的对象数目;m为B的对象数目;dist(a,b)表示样本a与样本b之间的相似度。图5-10全链接算法知识准备—1.聚类分析平均链接:两个簇之间的距离为两个簇中所有对象之间距离的均值。图5-11描述了平均链接的簇A与簇B之间的距离度量方式,距离公式为式中,;n为A的对象数目;m为B的对象数目;dist(a,b)表示样本a与样本b之间的相似度。知识准备—1.聚类分析(3)基于密度的方法。绝大部分的聚类算法都是基于对象之间的距离来聚类的。这样的算法只能发现球状的类,对于其他形状的类就无能为力。基于这一缺陷,提出了基于密度的方法。它的基本思想如下:只要距离相近的区域的密度(数据对象的个数)超过某个阈值,就继续聚类。此方法假设聚类结构能通过样本分布的紧密程度来确定。通常情形下,基于密度的法从样本密度的角度来考察样本之间的可连接性,并基于可连接样本不断扩展聚类簇,以获得最终的聚类结果。基于密度的方法的主要优点是可以过滤噪声孤立点数据,发现任意形状的簇;缺点是结果受用户定义的参数的影响较大。基于密度的方法的典型代表有DBSCAN、OPTICS和DENCLUE。知识准备—1.聚类分析(4)基于网格的方法。基于网格的方法首先将数据空间划分成有限个单元的网格结构,然后用抽象的网格单元代表某个区域的数据点,在聚类处理过程中,都以网格单元为处理对象(即所有的聚类都是在这个网格结构上进行的)。该方法的主要优点是处理速度很快,并且处理时间与数据对象的数目无关,而与每维空间划分的单元数目有关;缺点是牺牲了聚类结果的精确率。基于网格的方法的典型代表有STING、WaveCluster、CLIQUE等算法。知识准备—1.聚类分析(5)基于模型的方法。基于模型的方法假设数据符合潜在的概率分布,为每个类假定一个模型,寻找能够满足该模型的数据集来聚类。基于模型的方法主要分成两类:统计学方法和神经网络方法。在基于统计学的聚类方法中,最著名的是COBWEB算法;在基于神经网络的聚类方法中,最著名的是自组织特征映射神经网络算法。知识准备—1.聚类分析3)簇内距离和簇间距离聚类是根据样本间的相似度进行划分的,这里的相似度一般是以样本点间的距离来衡量的。把整个数据集的样本数据看成是分布在特征空间中的点,样本数据之间的距离是对空间中点之间的距离。度量样本数据之间的距离有闵可夫斯基距离(包含欧氏距离、曼哈顿距离和切比雪夫距离)、马氏距离(协方差距离)、汉明距离等。评估聚类算法的聚类结果的好与差,往往通过计算簇内距离和簇间距离,簇内距离越小越好,簇间距离越大越好。知识准备—1.聚类分析(1)簇内距离。给定一个样本数为n的簇,簇X的簇内距离公式为式中,,dist(a,b)表示样本a与样本b之间的距离度量。(2)簇间距离。簇间距离的定义方式有多种,采用不同的类间距离定义方式可以

得到不同的聚类效果。簇间距离的定义方式有最短距离法、最长距离法、组间平均距离等。知识准备—2.k-Means算法概述1967年,由MacQueen提出的k-Means(k均值聚类)算法是最经典的基于划分的方法,已发展成为一种经典的聚类算法。该算法的思想如下:在数据集中,首先根据一定的策略选择k个点作为每个类的初始中心点,然后根据样本数据与类中心点的距离,将样本数据划分到距离最近的类中,在将所有样本数据都划分到k个类中后,即完成了一轮划分。但是,形成新的类并不是最好的划分方法。因此,对于一轮划分后生成的新类,需要重新计算每个类的中心点,然后重新对数据进行划分。以此类推,直到每次划分的结果保持不变,结束划分得到最终的划分结果。但是,在实际的数据处理过程中,往往经过多轮迭代都得不到不变的划分结果,这就需要对迭代轮次设定一个阈值,在迭代轮次达到阈值时,终止计算,获得最终的划分结果,k-Means算法流程图如图5-12所示。图5-12k-Means算法流程图知识准备—2.k-Means算法概述通过图5-13中的6张子图对k-Means算法的数据划分过程进行描述。图5-13(a)所示为初始二维数据集的分布情况。假设k=2,那么k-Means算法会先在数据的数值空间内随机选择2个类对应的中心,如图5-8(b)中的2个三角形所示,然后分别计算所有样本到这2个中心的距离,并将每个样本的类别划分为和该样本距离最小的中心的类别,此时已经完成了第1轮次的迭代,如图5-8(c)所示。对于图5-8(c)的划分结果,计算出当前2个类别中的中心点,如图5-8(d)中的2个三角形所示,此时2个类别的中心的位置发生了变化。按照新的中心,对数据重新进行划分,得到图5-13(e)的划分结果。多次按照图5-8(c)~图5-8(d)进行操作,最终得到图5-8(f)的结果。图5-13k-Means算法对二维数据集的聚类过程知识准备—3.k-Means模型根据前面对k-Means算法的了解,可知k-Means模型的建立具有三个核心要素:①k值的选择。②距离度量的选择。③初始中心点的选择。聚类是无监督学习方法,由于它不借助外部信息(如类标),因此选择不同的k值,得到的结果也必然不同。k-Means算法的初始中心点是随机选择的,可能会造成聚类结果不稳定、迭代次数过多、资源消耗大、陷入局部最佳解等问题。k-Means算法默认使用欧氏距离,欧氏距离的计算基于样本的每个特征的尺度一致。但是,若样本的某些特征的尺度远高于其他特征时,则会导致计算的距离结果向尺度较高的特征倾斜。在用k-Means算法进行数据聚类时,选择合适的k值、初始中心点及距离度量能够有效保障聚类效果。知识准备—3.k-Means模型1)k值的选择k-Means模型的建立需要考虑k值的选择,由于k-Means模型的建立不借助类标签,不同的k值会对模型建立结果产生较大的影响。k值的选择有几种常用的方法:经验法、肘部法则(ElbowMethod)、间隔统计量(GapStatistic)法、轮廓系数(SilhouetteCoefficient)法和Canopy算法。k-Means算法以最小化样本与质点平方误差作为目标

,将每个聚类的质点与类内样本点的平方距离误差和称为畸变程度,这也是肘部法则的核心指标——误差平方和(SumoftheSquaredErrors,SSE),其计算公式为式中,Si为第i个类的子数据集;x为Si中的样本数据,Ci为Si中所有样本数据的均值;SSE为所有样本的聚类误差。知识准备—3.k-Means模型肘部法则的核心思想如下:对于一个聚类,它的SSE值越低,代表类内结构越紧密;SSE值越高,代表类内结构越松散。SSE值会随着类别的增加而降低,但对于有一定区分度的数据,在SSE值达到某个临界点时,畸变程度会得到极大改善,之后缓慢下降,这个临界点可以考虑为聚类性能较好的点。在图5-14中,当k小于3时,由于k的增大会大幅提高每个簇的聚合程度,故SSE值的下降幅度会很大;而当k等于3时,再增大k所得到的每个簇的聚合程度会迅速降低,所以SSE值的下降幅度会骤减。随着k值的继续增大,SSE值的曲线趋于平缓,此时最佳k值为3。图5-14SSE值随着k值的变化趋势图知识准备—3.k-Means模型课堂随练5-5我们使用matplotlib库中的pyplot函数完成数据图表的展示训练知识准备—3.k-Means模型2)距离度量的选择k-Means模型的建立需要考虑距离度量的选择,在计算样本与质心的相似度时,需要计算二者之间的距离,距离越小表示两者的相似度越高,距离越大表示两者的差异度越高。k-Means算法采用的距离度量方法与单元4中介绍的距离度量方法一致。在特征空间中,可以采取多种距离度量方法,一般采用的是p=2时的闵可夫斯基距离(也就是欧氏距离),实例特征向量和的欧氏距离的定义式为式中,,表示是n维向量。知识准备—3.k-Means模型样本之间的距离需要根据样本的数据特点进行选择,一般情况下,在欧几里得空间中,选择欧氏距离;在处理文档时,选择余弦相似度函数距离或者曼哈顿距离;在处理时间序列样本数据时,选择DTW距离或者欧氏距离。采用不同的距离度量方式计算样本之间的相似度,会得到不同的效果。在本单元中,我们采用默认的欧氏距离度量方法。知识准备—3.k-Means模型课堂随练5-6sklearn库中的k-Means函数默认采用欧氏距离度量方式,下面使用欧氏距离完成k-Means模型的训练。其中,n_clusters表示聚类个数,默认值为0;init表示初始中心点的选择方法,默认为'k-means++';max_iter表示k-Means算法的最大迭代次数,默认值为300。知识准备—3.k-Means模型3)初始中心点的选择k-Means算法在最开始随机选取数据集中的k个点作为聚类中心,由于数据具有随机性,容易造成初始中心点聚集,导致最终的聚类结果容易陷入局部最佳解及出现迭代次数过多的现象。2017年,D.Arthur等人提出了k-Means++算法,该算法的基本思想是选择的k个初始中心点之间的距离尽可能远。这也符合聚类算法的目的,让类内样本之间的差异度越小,让类之间的差异度越大。k-Means++算法在原有k-Means算法的基础上对初始中心点的选择进行改进,首先随机选择第一个中心点,然后在剩余的样本中选择距离第一个中心点最远的样本点作为第二个中心点,以此类推,每次选择的中心点都是与已选择的所有中心点最远的样本点,直到选出k个中心点为止。对于第一个中心点的选择,可以随机挑选样本,还可以选择距离样本数据均值最远的样本点,但是后者容易受到噪声点的影响。知识准备—3.k-Means模型k-Means++算法的聚类中心选择流程图如图5-15所示。图5-15k-Means++算法的聚类中心选择流程图知识准备—3.k-Means模型假设一组数据如图5-16(a)所示,用k-Means++算法对其聚类,聚类个数为3,那么k-Means++算法首先在该数据集中随机选择第一个中心点,如图5-16(b)中编号为8的圆形。然后,选择距离第一个中心点最远的样本点,如图5-16(c)中编号为5的圆形。接下来,在选择第三个中心点时,计算剩下的样本点与编号为5、编号为8的样本点之间的距离均值,取距离均值最大的样本点为第三个中心点,如图5-16(d)所示。(a)(b)(c)(d)图5-16k-Means++算法初始中心点的选择过程图知识准备—4.k-Means算法的优缺点分析1)k-Means算法的优点(1)原理简单,易于理解,收敛速度快,聚类效果较好。(2)当类中数据近似为正态分布时,聚类效果较好。(3)在处理大数据集时,k-Means算法可以保证较好的伸缩性和高效率。2)k-Means算法的缺点(1)k值要事先确定,不合适的k值会导致聚类效果较差。(2)对初始中心点的选择敏感。(3)不适合发现非凸形状的类或者大小差别较大的类。(4)噪声和异常点对模型的建立影响较大。任务实施Step1:引入相关模块。Step2:使用sklearn库自带的KMeans()函数创建k-Means模型,参数选择模型默认参数(也可传入空参数),默认的距离度量为欧氏距离,同时k-Means模型算法的初始中心点的选择使用k-Means++方法Step3:完成SSE值的图表展示。任务实施任务5.3模型评估任务情景

由于聚类不借助外部信息(如类标)来完成数据的归类,聚类模型中参数的设定不同会得到不同的聚类结果。在没有先验知识的情况下,需要使用聚类指标对聚类结果的有效性进行评估,常用的一些聚类有效性评估指标有兰德指数(RandIndex)指标、调整兰德指数(AdjustedRandIndex)指标、误差平方和(SSE)指标、轮廓系数(SilhouetteCoefficient)指标和卡林斯基-哈拉巴斯指数(Calinski-HarabaszIndex,简称CH系数)指标等。在本任务中,对于生成的分类数据集,我们先使用k-Means算法对特征数据进行分类,然后使用数据标签和调整兰德指数指标对模型的聚类效果进行评估,最后使用Python中的matplotlib工具对评估结果可视化,以便更好地观察模型表现。任务情景由于生成的数据具有随机性,最终聚类评估指标值如图5-18所示。图5-18聚类评估指标值聚类结果的三维展示如5-19所示。图5-19聚类后结果的三维展示知识准备-1.聚类有效性指标1.聚类有效性指标聚类分析是一种无监督学习行为,由于它不借助外部信息,因此即使采用相同的聚类算法、设置的参数不同,也会得到不同的聚类效果。为了评估聚类算法的有效性及参数设置的合理性,需要通过聚类有效性指标对聚类结果进行评估。聚类有效性指标大致可以分为两类:内部聚类有效性指标和外部聚类有效性指标。内部聚类有效性指标和外部聚类有效性指标的主要区别在于数据所属的类别是否已知。内部聚类有效性指标适用于缺乏外部信息时对聚类划分结果的评估。常见的内部聚类有效性指标有轮廓系数指标、戴维斯-博尔丁指数(DBI)指标、同质性与差异性指标等。外部有效性指标是真实标签与划分结果之间的相似性(或非相似性)度量,适用于数据类别已知的情况。常见的外部聚类有效性指标有福尔克斯和马洛斯指数(FMI)指标、兰德指数指标、雅卡尔系数(JC)指标等。知识准备知识准备-1.聚类有效性指标1)内部聚类有效性指标内部聚类有效性指标用来描述数据集的内部结构与数据之间的紧密关系,通过具体的目标函数对聚类结果进行计算以评估算法的有效性。下面介绍几种常见的聚类有效性指标。知识准备知识准备-1.聚类有效性指标(1)轮廓系数指标。轮廓系数指标利用样本点的类分离度与样本点的类紧密度构造轮廓系数,通过整体取平均获取最终指标值。设一个包含n个对象的数据集被聚类算法分成k个子集Ci(i=1,2,…,k),数据集中某一个样本t的轮廓系数的计算公式为式中,a(t)、b(t)的计算公式分别为式(5-8)与式(5-9)中的d(x,y)代表样本x与样本y的平均不相似度或距离,j=1,2,…,k。通常,以数据集中所有样本的平均轮廓系数值作为聚类有效性指标值,轮廓系数值越大表示聚类结果的质量越好。(5-8)(5-9)知识准备知识准备-1.聚类有效性指标(2)戴维斯-博尔丁指数(Davies-BouldinIndex,DBI)指标。式中,k为类簇个数;为第i个簇内的样本数据点之间的平均距离;为聚类结果中的第i个类簇;为第i个类簇的聚类中心。知识准备知识准备-1.聚类有效性指标(3)同质性与差异性指标。同质性与差异性指标分为同质性指标与差异性指标。同质性指标体现类内的样本聚合程度,也就是类内样本之间的平均相似度。而差异性指标体现类与类的分离程度,也就是不同类的样本之间的平均相似度。这二者的定义式分别为(5-11)(5-12)式中,k为数据集划分的聚类数目;ni为第i个聚类Ci的样本数目;d(s,t)为样本s与样本t的相似度。知识准备知识准备-1.聚类有效性指标2)外部聚类有效性指标外部聚类有效性指标用来对比聚类结果与通过数据集数据对象真实分布信息构建的参考模型,从而评估聚类结果的质量与聚类算法的性能。给定一个数据集,n表示数据集的样本数。数据集的真实类别中有m个簇,它们是,通过聚类算法获得的聚类结果为k个簇,那么经过聚类的每个样本数据均存在于以下4种情况中:①

数据对象在C和中均同属一个类簇,本情形下的数据量为a。②

数据对象在C中同属一个类簇,而在中不同属一个类簇,本情形下的数据量为b。③

数据对象在C中不同属一个类簇,而在中同属一个类簇,本情形下的数据量为c。④

数据对象在C和中均不同属一个类簇,本情形下的数据量为d。知识准备知识准备-1.聚类有效性指标(1)福尔克斯和马洛斯指数(FowlkesandMallowsIndex,FMI)指标。FMI的定义为精确率和召回率之间的几何平均值,其取值范围为[0,1]。FMI的计算公式为(5-13)(2)兰德指数(RandIndex,RI)指标。(5-14)知识准备知识准备-1.聚类有效性指标(3)调整兰德指数指标。调整兰德指数(adjustedRandIndex,ARI)指标是一种常见的外部聚类有效性指标,它可以用来判断聚类结果和真实标签之间的相似度。兰德指数的问题在于对于两个随机的数据划分结果,其兰德指数不是一个接近于0的常数。Hubert和Arabie在1985年提出了调整兰德指数,其计算公式为(5-15)(4)雅卡尔系数(JaccardCoefficient,JC)指标。(5-16)知识准备知识准备-2.生成数据集前面已经用过sklearn库中的datasets模块自带的数据集,但在多数情况下,我们需要自定义生成一些特殊形状的用于算法的测试和验证数据集。sklearn库提供了多种随机样本数据生成器,可以用于建立复杂的人工数据集。下面介绍几种简单的人工数据集生成函数。1)make_blobs()函数make_blobs()函数用于产生多类单标签数据集,它为每个类分配服从一个或多个正态分布的点集,有助于更好地控制聚类中心

和各簇的标准偏差,可用于实现聚类

知识准备知识准备-2.生成数据集课堂随练5-7通过make_blobs()函数生成一个样本总数为1500、簇个数为3的二维数据集,并通过二维图表进行显示。make_blobs()函数中的n_samples为生成的样本总数;n_features为所有样本的维度;centers为产生的中心点的数量(即产生的簇的数量);cluster_std为聚簇的标准差;random_state为随机种子,用于决定数据集创建过程中随机数的生成。用make_blobs()函数生成的数据集如图5-20所示。知识准备知识准备-2.生成数据集2)make_classification()函数make_classification()函数用于产生多类单标签数据集,它为每个类分配服从一个或多个(每个维度)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论