本发明涉及计算机技术领域,具体涉及一种基于蜕变测试的无监督机器学习系统的选择方法。
背景技术:
无监督机器学习算法在计算机领域的应用十分广泛,其中聚类算法能挖掘未标注数据集中的内部关系,并建立相应模型,从而满足使用者的各类需求。但是由于算法特性,输出结果很难或者说不可能去验证其正确性,从而选择对应的聚类算法(无监督机器学习系统)。
现有技术中,大致有两种方法来选择无监督机器学习系统:
第一种,通过外部验证技术来选择:基本思想是将聚类结果与对应于预先指定的数据结构的外部基准或度量进行比较,目前存在几个基本的标准,比如集群的同质性和完整性。
第二种,通过内部验证技术来选择:这类技术通过采用数据集本身固有的特性来验证聚类结果,从簇间紧性和簇内分离两个方面提出了许多内部有效性指标。
本申请发明人在实施本发明的过程中,发现现有技术的方法,至少存在如下技术问题:
通过外部验证技术的选择方法:通常情况下很难获得良好和相关的外部基准。这是因为,在大多数情况下,由预先定义的类标签或其他用户指定的数据结构是未知的。因此,在没有先验知识的情况下,要获得一个合适的外部基准来与集群系统生成的集群结构进行比较通常是非常昂贵和困难的。
通过内部验证技术的选择方法:内部技术的健壮性较差,因为它们主要依赖于与数据集相关联的特性,即数据紧凑性和数据分离,所以内部技术的性能很容易受到各种数据特性(如噪声、密度和倾斜分布)的影响。
因此,现有的方法无法选择出合适的聚类算法或者效果较差的技术问题。
技术实现要素:
本发明提出一种基于蜕变测试的无监督机器学习系统的选择方法,用于解决或者至少部分解决现有的方法无法选择出合适的聚类算法或者效果较差的技术问题。
为了解决上述技术问题,本发明提供了一种基于蜕变测试的无监督机器学习系统的选择方法,包括:
s1:根据无监督机器学习系统的特性,预先设置蜕变关系,无监督机器学习系统包括多种聚类算法;
s2:获取源数据集,并运行聚类算法,得到源数据集的聚类结果;
s3:根据源数据集和预先设置的蜕变关系,获得变换后的数据集;
s4:对变换后的数据集运行聚类算法,得到变换后数据集的聚类结果;
s5:根据源数据集的聚类结果和变换后数据集的聚类结果之间的关系,判断源数据集和变换后数据集的执行之间是否违反蜕变关系;
s6:如果违反蜕变关系,则根据源数据集的聚类结果和变换后数据集的聚类结果,分析对应的失效聚类模式;
s7:根据蜕变关系的重要性和失效聚类模式的严重性,确定对应的聚类算法的适用性结果;
s8:根据聚类算法的适用性结果,选择出目标聚类算法。
在一种实施方式中,s2具体包括:对源数据集运行不同的聚类算法,对于每一种聚类算方法,得到对应的源数据集的聚类结果。
在一种实施方式中,预先设置的蜕变关系包括多种,s3具体包括:
根据设置的每一种蜕变关系,将源数据集进行变换,得到对应的变换后的数据集。
在一种实施方式中,s4具体包括:
对变换后的数据集运行不同的聚类算法,对于每一种聚类算方法,得到对应的变换后的数据集的聚类结果。
在一种实施方式中,s5具体包括:
s5.1:根据源数据集的聚类结果和变换后数据集的聚类结果,计算重聚类百分比rp:
s5.2:判断重聚类百分比是否等于0,如果等于0,表示源数据集和变换后数据集的执行之间未违反蜕变关系,否则,违反蜕变关系。
在一种实施方式中,s7具体包括:
s7.1:根据蜕变关系的重要性和失效聚类模式的严重性,赋予不同的权重;
s7.2:通过加权计算得到对应聚类算法的适用性结果:
其中,
在一种实施方式中,s8具体包括:
将加权分数最低的聚类算法,作为目标聚类算法。
在一种实施方式中,预先设置的蜕变关系包括两类,一类为“必须含有”,另一类为“可以含有”,其中“必须含有”的蜕变关系是系统必须满足的,“可以含有”是根据用户需求需要满足的,在s7之前,所述方法还包括:
忽略对分类为“必须含有”的蜕变关系有违反的聚类算法。
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
本发明以度量数据动态特性为目的,首先基于无监督机器学习系统的特性,设置了适应于大多数应用场景的通用蜕变关系,可以有效缓解无监督机器学习领域存在的oracle问题;其次,定义了基于蜕变关系的面向系统特性的充分性准则,根据蜕变关系的重要性和失效聚类模式的严重性,确定对应的聚类算法的适用性结果,形成了一套完整的无监督机器学习系统验证和评估的体系,从而可以选择出目标聚类算法。
由于本发明提供的方法,采用蜕变测试技术来验证无监督机器学习系统,从而解决了系统中存在的oracle问题;其次,定义了基于蜕变关系的面向系统特性的充分性准则,根据蜕变关系的重要性和失效聚类模式的严重性,确定对应的聚类算法的适用性结果,最终形成了一套完整的无监督机器学习系统验证和评估体系,可以利用这套评估体系来深入理解算法特性、选择适用于特定场景的无监督机器学习系统(聚类算法)。解决了现有技术中无法选择出合适的聚类算法或者效果较差的技术问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于蜕变测试的无监督机器学习系统的选择方法的流程图;
图2为本发明实施例中定义的mr2.1和mr2.2的展示图;
图3为本发明实施例中定义的mr3.1的展示图;
图4为本发明实施例中定义的mr5.1的展示图;
图5为本发明实施例中聚类算法适应性结果的计算的流程图;
图6为实施例中基于充分性准则形成检查表的举例说明。
具体实施方式
本发明目的在于解决无监督机器学习系统中(针对聚类算法)存在的oracle问题,以及缺乏评估标准,导致无法选择出合适的聚类算法或者效果较差的技术问题,提供了一种基于蜕变测试的无监督机器学习系统的选择方法。本发明采用蜕变测试技术缓解机器学习测试存在的oracle问题,通过无监督机器学习系统的特性分析,提出了11个通用蜕变关系,这些关系涵盖了机器学习系统应具备的用户普遍期望的特性,从而利用这些蜕变关系来验证一个无监督机器学习算法是否满足需求;其次,使用者根据自身需求定义聚类系统评估方案,即选择通用蜕变关系或定义新的蜕变关系,并根据基于蜕变关系的充分性准则实现聚类系统在不同场景下的评估和选择。为了实现上述目的,本发明的主要构思如下:
本发明根据无监督机器学习系统的特性,预先设置蜕变关系,从而可以缓解无监督机器学习领域存在的oracle问题;其次,定义了基于蜕变关系的面向系统特性的充分性准则,用户可依据重要性及失效聚类模式的严重性对蜕变关系赋予不同权重,计算最终加权分数,最终形成了一套完整的无监督机器学习系统验证和评估体系。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例提供了一种基于蜕变测试的无监督机器学习系统的选择方法,请参见图1,该方法包括:
s1:根据无监督机器学习系统的特性,预先设置蜕变关系,无监督机器学习系统包括多种聚类算法;
s2:获取源数据集,并运行聚类算法,得到源数据集的聚类结果;
s3:根据源数据集和预先设置的蜕变关系,获得变换后的数据集;
s4:对变换后的数据集运行聚类算法,得到变换后数据集的聚类结果;
s5:根据源数据集的聚类结果和变换后数据集的聚类结果之间的关系,判断源数据集和变换后数据集的执行之间是否违反蜕变关系;
s6:如果违反蜕变关系,则根据源数据集的聚类结果和变换后数据集的聚类结果,分析对应的失效聚类模式;
s7:根据蜕变关系的重要性和失效聚类模式的严重性,确定对应的聚类算法的适用性结果;
s8:根据聚类算法的适用性结果,选择出目标聚类算法。
在一种实施方式中,s2具体包括:对源数据集运行不同的聚类算法,对于每一种聚类算法,得到对应的源数据集的聚类结果。
也就是说,对于源数据集运行不同的聚类算法,得到对应的不同的聚类结果。
在一种实施方式中,预先设置的蜕变关系包括多种,s3具体包括:
根据设置的每一种蜕变关系,将源数据集进行变换,得到对应的变换后的数据集。
具体来说,本发明通过分析无监督机器学习系统的特性,定义了11个通用的蜕变关系。通过不同的蜕变关系,对源数据集进行相应的改动,得到不同的后续数据集,即变换后的数据集。
在具体的实施过程中,通过执行每个聚类方法两次(首先是源数据集,然后是变换后的数据集),针对所有选定的蜕变关系来分析所有候选聚类算法,总结算法在所有蜕变关系上的服从情况及失效聚类模式,基于充分性准则形成检查表。
在一种实施方式中,预先设置的蜕变关系包括两类,一类为“必须含有”,另一类为“可以含有”,其中“必须含有”的蜕变关系是系统必须满足的,“可以含有”是根据用户需求需要满足的,在s7之前,所述方法还包括:
忽略对分类为“必须含有”的蜕变关系有违反的聚类算法。
具体来说,在确定聚类算方法的适用性结果时,忽略那些对分类为“必须含有”的蜕变关系有违反的聚类算法,对于分类为“可以含有”的蜕变关系,根据重要性和严重性赋予权重。其中,重要性指蜕变关系在特定应用场景下用户的偏好程度;严重性指聚类算法在该蜕变关系下的失效程度,并结合权重值计算剩余的聚类算法的最终加权分数。
在一种实施方式中,s4具体包括:
对变换后的数据集运行不同的聚类算法,对于每一种聚类算法,得到对应的变换后的数据集的聚类结果。
在一种实施方式中,s5具体包括:
s5.1:根据源数据集的聚类结果和变换后数据集的聚类结果,计算重聚类百分比rp:
s5.2:判断重聚类百分比是否等于0,如果等于0,表示源数据集和变换后数据集的执行之间未违反蜕变关系,否则,违反蜕变关系。
具体来说,由于聚类算法本身的特点,其输出结果存在很大的不确定性,很难或者不可能去验证结果正确性,即存在oracle问题;本发明采用蜕变测试来解决这个问题,蜕变测试用于验证多个系统执行中输入和输出之间的“预期”关系。这些“预期”关系表示为蜕变关系(mr)。如果多次执行的输出结果违反了特定的蜕变关系,则认为该系统存在一定问题。
举例来说,如果需要测试目标程序f(x)=sin(x),对于一些特殊的测试用例如x=30°,即sin(30°)=0.5可以很容易测试,但如果x=21°,即sin(21°)就无从知道目标程序是否运行正确或者需要额外的测试成本去验证这个结果。正是在这样的背景下,蜕变测试技术被学者提出,即我们不需要知道sin(21°)的具体值,但是根据数学公式可以得知sin2(x)+cos2(x)=1是成立的,于是在源测试用例sin(21°)的基础上生成后续测试用例cos(21°),通过运行上述两个测试用例,判断他们结果的平方和是否等于1,如果不满足该关系,则可以判断该程序是存在错误的,如果满足该关系,则该组测试用例运行成功,并未发现程序中的错误,但并不意味着该程序不存在其他错误,还需要继续寻找另外一组关系按照相同方法进行测试,形如sin2(x)+cos2(x)=1的关系称为蜕变关系(mr),上例中还能定义如下蜕变关系sin(x)=sin(x+2π)、sin(x)=-sin(x+π)等等。
在具体的实施过程中,给定一个聚类算法a以及一个源数据集d,用rs=a(d)表示源数据集聚类的结果,假设一种形式的变换t作用在源数据集d上得到后续数据集dt,用rf=a(dt)表示后续数据集聚类的结果,蜕变关系(mr)定义为对d进行t转换后用户对a行为变化趋势的期望,即t转换后rs与rf之间的期望关系rt。
由于聚类算法的输出结果存在很大的不确定性,不能凭借单个蜕变关系的验证情况来判断整个聚类的输出结果,本发明通过两个方面来分析聚类的结果:
(1)源数据集d中每个样本对象返回的集群标签的变换情况。聚类算法的本质是对数据集进行分类,并为数据集中每一条数据添加上类标签,因此需要着重注意源数据集经过t变换后的输出结果与源输出结果之前的差异。
(2)dt中每个新添加样品的预期标签和实际标签之间的一致性。除了将源数据对象映射到相应的后续数据对象之外,一些t变换还可能涉及创建新对象,以便用户对这些新插入对象的行为有不同的期望。新添加的对象可能与其邻居共享同一标签,或者可能被分配一个新标签。
为了详尽的表达上述两个方面的变换情况,本发明定义了一个标准,名为重聚类百分比:给定一个聚类系统a,一个源数据集
通过对聚类行为进行可视化分析,本发明总结出了5种聚类模式:
(1)违反mr的情况发生在簇间的边界上。在源数据集中靠近一个簇的边界的数据对象被重新分配到后续数据集中的不同簇中。
(2)簇的融合与拆分。两个源集群合并为一个后续集群,另一个源集群拆分为两个较小的后续集群。
(3)簇的拆分。一个或多个源集群被分成更小的后续集群。
(4)簇中标记为噪声的点被重新分配给特定簇。
(5)在源数据集和后续数据集执行之后,结果之间的簇数量不同。
如此,但采用不同的mr时,重复上述步骤,计算相应的重聚类百分比,即可反复验证聚类算法在不同场景下其行为与用户期望的一致性。
为了更好地解决聚类算法中存在的问题,同时使蜕变测试到达更好的效果,本发明站在用户的期望角度,从聚类系统的六个不同方面性质,定义了11个通用的mr,这些mr涵盖了机器学习系统应具备的用户普遍期望的特性,但是因为不同的使用者对聚类系统(算法)可能有不同的期望,所以这些通用mr并没有涵盖所有用户所期望的集群系统的所有可能属性。下面将从聚类算法六个不同方面的性质来详细叙述定义的11个通用mr:
(1)操作数据集中数据项的顺序。对数据集中的数据项进行重新排序是聚类系统中经常执行的操作,用户通常认为此操作很简单,因此不会影响聚类结果。为了验证这个性质是否成立,定义了mr1.1,mr1.2。
mr1.1:更改数据集中数据项的顺序。如果重新排列数据集中数据项的顺序,新的聚类结果(rf)将保持与原始结果(rs)相同。
mr1.2:更改数据集中数据项的顺序,但保持相同的起始质心集。如果重新排列数据集中数据项的顺序,但保持相同的起始质心集,将得到rf=rs。
(2)在数据集中处理簇之间的差异性。用户往往期望簇间的差异性会对聚类结果产生影响,考虑将部分或全部簇向其数据集中的质心收缩对聚类结果的影响,定义了mr2.1,mr2.2。
mr2.1:将一个或者多个簇向其质心收缩。如果数据集中的一些或所有簇向它们的质心收缩,得到rf=rs,如图2的(a)部分所示。
mr2.2:数据镜像。给定一个初始数据集d(如其对应的rs)在空间的同一象限中包含k个簇。如果将rs中的k个团簇映射到空间的其他n个象限,使这些团簇彼此之间的距离大致相等,那么(n+1)*k个团簇将在rf中形成。此外,rf中新形成的团簇将包括rs中的原始k团簇。
为了说明mr2.2,如图2的(b)部分中的二维空间所示。假设在第一次执行集群系统a之后,rs包含两个集群l1和l2。然后将空间分成四个象限,其中l1和l2位于同一象限中。使用镜像操作m1,将d中的l1和l2(以及其中包含的数据项)镜像到相邻的象限,以创建新的“镜像”集群l3和l4。将创建一个新的数据集dt,其中包含原始集群(镜像之前的l1和l2)和新形成的“镜像”集群(镜像之后的l3和l4)。然后,再执行两个类似于m1的镜像操作(图2的(b)部分中的m2和m3),以创建额外的“镜像”集群。最后,执行a的另一个执行,并比较rs和rf中的集群,看看是否违反了mr2.2。
(3)操作数据集中一个或多个数据集的数据项密度。在数据集d中的一些集群中添加了额外的数据项,以增加这些集群的对象密度(如图3所示)。为了验证当集群数据项密度发生变化时集群系统的变化行为,定义了mr3.1,mr3,2。
mr3.1:在簇中心周围添加数据项。将新的样本对象添加到rs中的簇l,使其比l中的某些现有数据项更接近l的质心,然后再次执行聚类系统,则:(a)rs中出现的所有簇也将出现在rf中,并且(b)这些新添加的数据项也将出现在rf中,并且以l作为其簇。
mr3.2:在群集边界附近添加数据项。如果在簇为l的对象的凸包边缘随机添加新的数据项,然后再次执行聚类系统,则:(a)在rs中出现的所有簇也将出现在rf中,(b)这些新添加的对象也将出现在rf中,并以l作为其簇。
(4)操作属性。数据集中的属性可能偶尔更改。考虑两种可能的属性转换类型。首先,如果新属性被认为是区分数据项的代表性属性,则可以将其添加到数据集中。mr4.1定义如下:
mr4.1:添加信息属性。信息属性是指每个数据项
如果一个属性可以从另一个属性派生,则通常认为它是多余的。冗余是数据集成中的一个关键问题,通过相关分析可以检测到冗余的发生。为了确定与冗余属性相关的mr,本发明使用pearson积矩系数来测量属性之间的关联度,并通过移除冗余属性(如果有的话)来构造dt。直观地说,去除冗余属性不会影响聚类结果。mr4.2定义如下:
mr4.2:删除多余属性。如果从数据集d中删除一个或多个冗余属性,然后再次执行聚类系统,得到rf=rs。
(5)操作坐标系。有几种方法可用于操作坐标系,如旋转、缩放和平移。这些改变坐标系的方法不应影响数据项的空间分布,定义了mr5.1,mr5.2:
mr5.1:旋转坐标系。假设原始坐标是(a,b)。通过逆时针旋转坐标系一个随机度θ(其中θ∈[0°90°])来执行变换t。在执行t之后,得到新的坐标(at,bt)。同一组簇将同时出现在rs和rf中。图4表达了转换t。下面的公式可用于将d中的现有坐标转换为dt中相应的新坐标:
mr5.2:缩放坐标系。假设原始坐标为(a,b);两个轴的缩放因子分别为sa和sb;缩放后的新坐标为(at,bt)(此缩放变换的数学表示见下式)。当sa=sb时,rf=rs。
(6)操作异常值。异常值是一个数据对象,其行为与其他对象完全不同,就好像它是由不同的机制生成的一样。通常,聚类系统通过过滤异常值或为其分配新的聚类标签来处理异常值。本发明主要关注全局异常值,这些异常值不遵循与其他样本对象相同的分布,并且与数据集的其他部分存在显著的偏差。
mr6:插入异常值。将一个样本对象xo添加到数据集d中来生成dt,使得xo到任何簇的距离远大于簇之间的平均距离(以便使xo与d中任何预先定义的簇不关联)。此操作之后,必须满足以下属性:(a)每个数据项(xo除外)在d和dt中都具有相同的簇标签,并且(b)xo不会出现在rf中,或者如果xo出现在rf中,则xo有一个新的簇标签,该标签与所有其他对象都不关联。
上述11个蜕变关系描述了聚类系统的六个不同方面性质,涵盖了机器学习系统应具备的用户普遍期望的特性,通过应用这些不同的mr,即可验证聚类系统的各种不同的行为。
除了验证聚类系统结果与用户期望的一致性之外,本方面另一个潜在应用是帮助用户选择最合适的聚类系统。
在一种实施方式中,s7具体包括:
s7.1:根据蜕变关系的重要性和失效聚类模式的严重性,赋予不同的权重;
s7.2:通过加权计算得到对应聚类算法的适用性结果:
其中,
具体来说,本发明允许用户根据自身需求选择通用蜕变关系,当通用蜕变关系无法涵盖其需求时,可自定义新的蜕变关系,用户基于蜕变关系充分性准则可实现对聚类系统的评估,从而帮助用户选择适用于特定场景的系统。
在具体的实施过程中,根据用户对其应用领域的直观期望和具体要求,从通用的蜕变关系中选择蜕变关系;当通用蜕变关系无法涵盖用户需求时,自定义蜕变关系。从而考虑了不同使用者对于聚类系统的期望存在差异,比如一些使用者可能高度关注在簇的中心或边界附近添加数据样本对聚类系统生成的簇结果的影响,而另一些使用者可能更加关注聚类系统对于异常值的处理情况。所以一些被选中的蜕变关系被认为更加重要,而其他的则不那么重要。因为定义特定的蜕变关系主要基于用户对其应用程序的领域知识,所以使用者也可以根据实际情况自己定义其他的蜕变关系。
然后将选定和新生成的蜕变关系根据使用者个人期望按照蜕变关系特性分为两类。“必须含有”是系统必须满足的,即该蜕变关系是可被形式化证明的;“可以含有”是用户期望系统满足的。接着利用蜕变测试的思想,对于每个聚类系统,首先运行源输入数据集得到源聚类结果,然后根据选定的蜕变关系,在源数据集上进行相应的操作得到后续数据集,再次在聚类系统中运行后续数据集得到后续聚类结果,用选定的蜕变关系验证两次聚类结果的一致性。总结算法在所有蜕变关系上的服从情况及失效聚类模式,基于充分性准则形成检查表。检查表的具体形式如图6所示,本发明以两种聚类算法:聚类算法1和2为例,利用设置的11蜕变关系来进行分析与选择。
接下来将每个分类为“可以含有”的蜕变关系,赋予一定的权重值w1(0.0<w1<1.0),更高的w1值意味着对应的mr在某个应用场景下相对来说更可取或更重要。然后,根据与此mr相关的失效聚类模式分配权重w2(0.0<w2<1.0),w2的值越高,意味着相应聚类结果的失效程度就越严重。并忽略那些对分类为“必须含有”的蜕变关系有违反的聚类算法,因为“必须含有”的蜕变关系是聚类系统必须满足的特性,若系统违背该蜕变关系,则意味着聚类系统在此情况下不可取,将不纳入后续度量。最后对于剩余的聚类算法,进行适用性计算。
因此,s7是忽略分类为“必须含有”的蜕变关系有违反的聚类算法后,对剩余的聚类算法的计算。
在一种实施方式中,s8具体包括:
将加权分数最低的聚类算法,作为目标聚类算法。
s8通过是统计所有聚类系统的分数情况,将得分最少的聚类算方法选为适用性最好的系统或者算方法。
为了更清楚地说明本发明的实流程,下面通过图5对聚类系统评估的过程予以详细介绍:
图5示出了本发明在评估聚类算法适用性的整个流程。其中,使用者根据个人需求从11个通用蜕变关系中选择部分或者全部关系(也可以应用领域专业知识另外定义新的蜕变关系),在源输入数据集中应用这些选定的关系得到后续输入数据集,然后在候选的聚类系统中运行源/后续数据集得到源输出结果以及后续输出结果,判断两个输出结果与选择的蜕变关系是否相符,将蜕变关系服从情况和失效聚类模式用汇总表的形式记录下来,然后根据使用者期望为选定的蜕变赋予相应的权值,计算所有剩余的候选聚类系统的分数,得分最低的聚类系统即为最适合使用者期望的系统。其中,后续数据集即变换后的数据集。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。