00:01
3.5.4聚类算法的对比与评估在应用聚类算法时,其挑战之一就是很难评估一个算法的效果好坏,也很难比较不同算法的结果。在讨论完K均值凝聚聚类和DBSC背后的算法之后,下面我们将在一些现实世界的数据集上比较它们。一、用真实值评估聚类有一些指标可用于评估聚类算法相对于真实聚类的结果,其中最重要的是调整专家的指数adjusted learning AI和归一化互信息。Normalized information n mi二者都给出了定量的度量,其最佳值为一零表示不相关的聚类,虽然ari可以去赋值。下面简单的说一下调整段的指数和规划户信息,二者如何进行计算。首先看到调整转的指数,如果C是真实标签集合,KA是聚类标签集合,我们定义两个变量,ABA表示在C中属于相同处且在K中也属于相同处的样本的个数,B表示在C中属于不同处且在K中也属于不同处的样本的个数。
01:14
令N表示样本数量,则run的指数I。R等于两倍的A加B除以N乘上N减一。但是我们发现,I无法保证随机标签的分配会得到一个接近零的值,比如醋的个数和样本的数量非常接近的时候。为了抵消这种影响,我们可以减去随机标签所期望的R,也就是EI,这样我们就得到调整单的指数ari。AI等于I减E除以maxi减去EI。现在我们还不知道eri和max r如何计算。我们首先换一种方式来理解这个AI,令C等于C1C21,得CK等于K1K21直到KS。
02:00
令C作为表格的行索引,K作为表格的列索引,绘制表格。其中A1表示把第一行做一个求和。B1表示把第一列做个求和,B2B3以此类推,A21直到A2也是以此类推。其中ni表示真实标签是CI,并且距离标签是KG的样本数量。那么调整RA的指数也可以这么来写。这一块对应的是。I。可以,大家可以自己证明。这一块对应的是EI。这一块对应的是。Marks I。关于AI的计算就讲到这里。下面看到归一化户信息。假设样本数量为A,真实标签U等于U1 u21直到U2,聚类标签V等于V1V21直到VS。
03:02
它们的商是一个分区的不确定度,Hu等于负的I等于一到RPI乘上log PI,其中PI等于UI的绝对值除以A,它表示随机选择一个样本,其标签是UI的概率也同理。HV等于负的J等于一到SPE1撇J乘上log给PE撇J。其中P撇Z等于。VG的绝对值除以N表示,从V中随机选择一个样本,其标签是VG的概率。此时,互信c mi也就可以出来了,Mi UV等于I等于一的R。这等于一到S。做求和。P乘上log PI除以PI乘上P撇G。其中P等于。UI加上VG的绝对值出现,它表示随机选择一个样本,其真实标签是UI,聚类标签是VG的概率。
04:08
规划互信息,就是把互信息做个规划,N mi就等于是两倍的mi UV除以Hu加HV。下面我们使用ari来比较K均值凝聚聚类和DB scan算法。为了对比,我们还添加了将点随机分配到两个醋中的图像。
12:05
注意到代码当中有一个函数。In。说实话,它不是一个函数,它是random data实例的方法。它返回一个数组,其形状通过size来指定,如果size不等于,那返回数组的元素从。漏到氦前闭后开的区间中的所有整数均匀的随机选择,否则返回数组的元素从零到漏前闭后开区间中的所有整数均匀的随机选择。参数。No。整数或者一个类似整数数组的对象。嗨,整数或者一个类似整数数组的对象可选参数默认是now。
13:03
S整数或者整数元组可选,它是默认是呢?输出数字形状,具体解释看一下表。S等于none。输出零为数组,也就是一个数,S是整数,长度等于S的一为数组。S是个单元组,长度等于S0的一位数组,S是个N元组,N大于等于二形状等于SN维数组。娄害和输出数组必须可以广播到相同的形状。来看一个比较复杂的例子。因为漏的形状是单元组二,也就是一个一位数组,氦的形状是一个空元组,也就是零位数组,输出数组的形状是三行两列的二位数组,所以我需要进行广播。主要是楼和high进行广播输出数组。
14:02
不需要进行广播,因为它广播之前广播之后是一样的,既输出数组为A,那么AI也就等于是running no I,逗号hi I。I不一定是一个整数,有可能是一个整数元组。比type数据类型可选参数默认是int,也就是整数。我们回到书上。我们可以发现调整转的指数。给出了符合直觉的结果。随机促分配的分数为零。而DBSC完美的找到了期望中的聚类的分数是一。用这种方式评估聚类时,一个常见的错误是使用。Accuracy score or bus I just score。
15:00
Normalized MU in for score或其他聚类指标使用精度的问题在于,它要求分配的促标签与真实值完全匹配,但促标签本身毫无意义,唯一重要的是哪些点位于同一个簇中。
17:49
二在没有真实值的情况下评估聚类。我们刚刚展示了一种评估聚类算法的方法,但在实践中使用诸如ari之类的指标有一个很大的问题,在应用聚类算法时,通常没有真实值来比较结果。如果我们知道了数据的正确聚类,那么可以使用这些信息构建一个监督模型,比如分类器。
18:14
因此,使用类似AI和n mi的指标通常仅有助于开发算法,但对评估应用是否成功没有任何帮助。有一些聚类的评分指标不需要真实值,比如轮廓系数。但它们在实践中的效果并不好。轮廓分数计算一个错误的紧致度,其值越大越好,最高分数为一。虽然紧致的错误很好,但紧致度不允许复杂的形状。下面我们先来看一下轮廓系数。怎么去计算?比较简单,先定义两个边长A和BA,表示一个样本到它所属的数的其他样本之间的平均距离。
19:03
B表示一个样本倒不属于它的那些错误当中最近的那个错误中的所有点的平均距离。轮廓系数SS等于B减A除以max AB。回到书上。下面我尝试利用轮廓分数在初木子数据集上比较K均值、凝聚、聚类和DBK。
23:41
如你所见,K均值的轮廓分数是最高的,尽管我们可能更喜欢DBSC的结果。对于评估,聚类烧烤的策略是基于鲁棒性的。Robust based聚类指标。这种指标先向数据中添加一些噪声,或者使用不同的参数设定,然后运行算法并对结果进行比较。其思想是,如果许多算法参数和许多数据扰动返回相同的结果,那么它很可能是可信的。不幸的是,在写作本书的时候,S还没有实现这一策略。
24:19
即使我们得到一个鲁邦性很好的聚类或者非常高的轮廓分数,但仍然不知道聚类中。是否有任何语义、含义或者聚类?是否反映了数据中我们感兴趣的某个方面?我们回到人脸图像的例子,我们希望找到类似人脸的分组,比如男人和女人,老人和年轻人,或者有胡子的人和没有胡子的人。假设我们将数据分为两个错误,关于。哪些点应该被聚集在一起?所有算法的结果是一致的,我们仍然不知道找到的错是否以某种方式对应于我们感兴趣的概念。算法找到的可能是。
25:01
测试图和正面视图,夜间拍摄的照片和白天拍摄的照片,或者iPhone拍摄的照片和安卓手机拍摄的照片。要想知道聚类是否对应于我们感兴趣的内容,唯一的办法就是对错进行人工分析。
我来说两句