本发明属于粗糙集、机器学习、数据挖掘等领域,具体涉及一种主动学习方法。
背景技术:
在做数据分析与处理的过程中,需要通过给定的数据(训练集)训练一个模型,在具体的实践过程中:我们会发现可以很方便快捷的获取到数据,但是这些数据往往都是没有标记的。随着大数据时代的来临,数据影响着人们生活的方方面面,但是这些数据是冗余的、繁琐的、无标记的。直接获取有价值、带有标记的数据不仅仅设备条件达不到而且需要大笔的资金和时间。然而,我们可以从这些不带有标记的数据入手,如何对这些数据进行加工处理,充分发挥其潜在的价值,对人们现有的技术提出了新的要求。
主动学习方法是机器学习方法的一种,可以有效解决上述问题。通过主动学习算法选择出最有用的数据交给专家进行标记,扩大训练集,创建更有效的模型。相比较传统的被动学习,该方法可以选择信息量高,有代表性的数据进行打标,避免了数据的冗余添加和不必要添加。同时,减少了大批量标记数据的人力、物力,降低了数据分析的成本。
1974年,simon和lea就提出了主动学习的相关思想。valiant从统计学的角度出发证明了通过训练实例的选择能够有效的降低训练所需的数据。近几年来,越来越多的学者把研究方向锁定了主动学习,提出了有关主动学习的相关概念和理论。相比较于被动学习随机选取数据的方式,主动学习算法选出有用的样本给用户标记,而不是被动的接受数据。根据实验结果,在实现相同精确度的前提下,与随机选择相比较主动选择可以大量减少所需的样本数量。主动学习算法的执行过程可以分为两个过程。其一:通过样例选择算法选择出信息量最高,价值量最大的样本进行标记,将标记的样本添加到有标记的样本中去。其二:利用现有的有标记数据创建一个基分类器,选择合适的评估指标,通过有监督学习衡量分类器的分类性能。这两个过程交替执行,通过不断的迭代,使得分类器的性能达到最优,或者设置迭代的次数,直到达到预设的条件。
根据选择无标记数据的形式,可以将主动学习分为两类:基于流的主动学习、基于池的主动学习。
基于流的主动学习:该方法在词性标注、消除词义分歧等自然语言处理方向得到了广泛的应用。样本按照流的形式,用学习算法对其逐一判断,判断结果只要两种可能,要么打标要么不打标。将需要打标的样本交由专家打标。不打标的样本直接抛弃,不在使用。代表性的方法有委员会查询(querybycommittee,qbc)。
基于池的主动学习:与基于流的主动学习要求顺序采样、逐一判断不同,该方法要求对某一范围的数据进行统一判断,根据某一指标选择出topk个样本进行标注。当然基于池的样本也可以转换使用基于流学习方法,每次从池中选择出少量的样本进行单独的判断。基于池的主动学习是当下研究最热门,最受关注,应用最广的方法。
主动学习的样本选择策略:
1.基于不确定性的样本选择策略
通过不确定性的度量方法,挑选出最不能确定的其分类的样本交给人类专家进行标记。对于二分类问题,可以通过创建概率模型,选择出后验概率值最接近0.5的样本进行标记。对于多分类问题,往往选择的是低置信的样本,或者基于margin选择出最大后验概率和次最大后验概率的差值最小的样本。另外还可以通过信息熵计算来确定样本的不确定性,熵值越大,不确定性越大。
2.基于未来误差缩减的样本选择策略
将每个没有标记的样本放入待标记样本中进行标记,然后添加到训练集中,训练出新的分类器,选择出使得分类器期望误差缩减最大的样本进行标记。由于估计期望误差缩减需要很大的计算量,所以这种方法常运用到二分类问题中3.基于委员会查询的样本选择策略
基于委员会查询的方法通过创建多个模型构成委员会,利用这些模型分别对无标记样本进行决策,决策最不一致的样本视为最不能确定分类的样本,将该类样本添加到待标记样本中进行打标可以最小化版本空间。
三支决策是由yaoyy在概率粗糙集和决策粗糙集的基础上研究得出。概率粗糙集模型引入两个参数α和β,将整个空间划分为了三个域:正域、负域还有边界域。yaoyy首次提出了三支决策的相关概念:正域意味着对事物的肯定,负域意味对事物的否定,边界域意味着对某一事物没有十足的把握,无法立即做出决策。三支决策为概率粗糙集赋予了新的语义,它的出现为决策问题提供了新的思考方法。
技术实现要素:
本发明旨在解决以上现有技术的问题。提出了一种更好的提升分类器各项性能、可有效用于处理目前大量分类属性缺失的情况的基于三支决策理论的主动学习方法。本发明的技术方案如下:
一种基于三支决策理论的主动学习方法,其包括以下步骤:
1)、获取数据集并调用随机函数将数据集随机化,按照比例将数据集划分为有标记数据集、无标记数据集、测试集;
2)、利用有标记数据集训练朴素贝叶斯分类器,通过朴素贝叶斯分类器对无标记数据进行后验概率估计,计算每个无标记数据的不确定性;
3)、根据不确定性的大小将无标记数据划分为三个域,即正域、负域及边界域。其中涉及到两种划分方法:根据阈值进行划分和根据不确定性大小进行排序划分;
4)、对步骤3)中不同域上的样本分开处理,选择出信息量大、价值高的样本进行标记,并将标记好的样本添加到训练集中,以训练新的分类器对测试集进行结果测试,为了测试分类器的性能,使用不同评估标准进行验证。
进一步的,所述步骤2)对无标记数据采用margin策略进行后验概率估计,计算后验概率的差值,确定每一个无标记数据的不确定性;
d_value(x)=p(yfirst|x,l)-p(ysecond|x,l)(1),
其中d_value(x)表示不确定性的大小,p(yfirst|x,l)后验概率最大的值,p(ysecond|x,l)后验概率次最大的值。
进一步的,所述步骤3)中根据阈值将无标记数据划分为三个域具体包括:根据阈值threshold_α,threshold_β进行划分,定义如下:
ifd_value(x)≤threshold_αx∈pos(x)
ifthreshold_α<d_value(x)<threshod_βx∈bnd(x)(2)
ifd_value(x)≥threshold_βx∈neg(x)
其中,0≤threshold_α<threshold_β≤1
threshold_α,threshold_β可根据经验值或设定的可信度来确定。
进一步的,所述步骤3)中按照不确定性进行排序划分具体包括:按照不确定性由小到大进行排序,通过控制数量,对样本空间进行划分,前topk属于正域,后topk属于负域,中间的一部分属于边界域,k的取值受挑选数量selectnum的影响。
进一步的,所述步骤4)中对步骤3)中不同域上的样本分开处理具体包括步骤:
对于正域:即x∈pos(x)的样本集合,直接添加到待标记序列,并将其从无标记数据中删除;负域:即x∈neg(x)的样本集合,不对该类样本做任何处理;边界域:x∈bnd(x)需要进一步确定是否打标,包括步骤:通过样本两两间的距离确定边界域样本的领域半径;计算领域密度,选择最具有代表性的样本,代表性的样本由大到小进行排序,选择topk个样本添加到待标记序列select中。
进一步的,所述计算边界域样本两两间的距离包括:若属性为连续型属性,使用欧拉距离,定义如下:假设样本x={x1,x2,...xj...,xm},y={y1,y2,...yj...,ym}:
xj表示样本x的第j个属性,yj表示样本y的第j个属性;
若属性为离散型属性,选择使用vdm,定义如下:假设样本x1,x2在离散型属性的两个值v1,v2,
c1是所有样本中该属性值为v1的个数,c1i则为其中类别为i个数,c2是所有样本中该属性值为v2的个数,c2i则为其中类别为i个数,k为常数,通常取1。
进一步的,所述确定样本的领域半径的公式为:
δ=min(dis(xi,s))+w×range(dis(xi,s)),0≤w≤1(5)
其中,min(dis(xi,s))表示距离其最近的样本,range(dis(xi,s))表示在指定数据集中其距离的取值范围,w控制着半径的大小,
进一步的,所述具有代表性的点有如下定义:
d_value(x)表示不确定性的大小,该值越小不确定性越大,xk为邻域半径内的无标记样本,n为使公式dis(x,xk)≤δ成立xk的个数,假设样本x和样本xk的属性空间分别为x={x1,x2,...xj...,xm},xk={xk1,xk2,...xkj...,xkm},使用余弦公式计算两者的相似度,余弦公式如下:
本发明的优点及有益效果如下:
本发明将三支决策理论运用到了主动学习中,通过不确定的大小将样本空间划分为3个域:正域,边界域,负域。本发明提出两种划分方法,方法一:根据阈值进行划分,方法二:根据不确定性大小进行排序划分。对于不同域中的样本分别选择了不同的处理方法,对于正域的样本直接添加到待标记序列select中;对于负域的样本不做处理;对于边界域的样本,基于邻域计算邻域密度,确定其代表性,选择topk个样本添加到待标记序列select中,最后让专家为select中的样本进行打标,这种从个体差异出发,有的放矢进行样本选择的方法可更好选择出具有标记意义的样本进行标记,从而更好的提升分类器各项性能,比如分类正确率、roc、f-value。该方法对主动学习进行了扩展,可有效用于处理目前大量分类属性缺失的情况。
附图说明
图1是本发明提供优选实施例主动学习流程图;
图2:划分正域、负域的原理图;
图3:选择边界域上具有代表性样本的原理图;
图4:基于不确定性划分区域的原理图;
图5:基于三支决策的主动学习流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、详细地描述。所描述的实施例仅仅是本发明的一部分实施例。
本发明解决上述技术问题的技术方案是:
本发明的技术方案包括以下几个步骤:
本发明的方法包括如下步骤:
step1:对实验数据进行划分。将数据划分为有标记数据(训练集)、无标记数据和待测试数据(测试集)。
step2:利用现有的有标记数据即训练集训练一个基分类器——朴素贝叶斯分类器,使用创建好的分类器在无标记数据上估计每一样本的后验概率值。如果该分类器是一个二分类,用最大分类的后验概率减去另一分类的后验概率。如果是多分类,则选择后验概率值最大和次最大的值并求差值d_value。
step3:基于不确定性,按照某一阈值将整个无标记数据空间划分到三个不同的域中。对于d_value的取值较小的数据,视为不确定性较高的数据,直接划分到正域中,将其添加到待标记序列select中,等待人类专家进行标记,并从无标记数据集中删除该部分数据;对于d_value的取值较大的数据,视为可以确定分类,将其划分到负域中,不用该部分数据做处理;剩下的数据划分到边界域。对于边界域的数据若对它们打标并不是完全的没有意义的,为了选择更有标记价值的数据。需要重新确定是否打标。
step4:对边界域上的点进行处理。对于边界域上的数据,为了使得标注更有价值,引入邻域的概念,在邻域内计算无标记数据的密度。将样本的分布信息考虑在内,选择出具有代表性的数据。
step5:对具有代表性的信息量重新进行排序,选择topk添加到待标记的数据集select中。
step6:将select中的数据交给领域专家,对它们进行打标,根据select的结果更新训练集和无标记数据集。利用更新后的训练集创建新的分类器,对测试集进行结果测试。
重复step2-step6的步骤,直到满足迭代的预设条件或达到性能度量的要求。
进一步的,所述step1中:为了更好的对学习器泛化性能进行评估,单使用一次数据划分得到试验结果往往不够稳定可靠,也难具有说服力。若选择采用若干次随机划分,重复试验,最终求平均值的方法,显然得到的评估结果更合理、更有说服力。在做实验的时候,指定重复实验的次数,观察每次循环实验中不同数据划分的测试结果。所以在划分数据的时候,需要调用随机函数,实现对数据的随机划分。
进一步的,所述step2中:创建朴素贝叶斯分类器,朴素贝叶斯分类器以条件属性独立为前提,假设每个属性对分类结果产生的影响是相互独立的。从而解决了求解类条件概率p(x|c)这个所有属性的联合概率分布的问题,如果基于有限样本直接计算联合概率,在计算问题上将会面临着组合爆炸的问题,在数据上将会面临着样本稀疏的问题,如果数据集还属于属性特别多的情况,那么面临的问题会更严重。
通过朴素贝叶斯分类器确定某一样本分类的原理如下:
属性特征的集合:x={a1,a2,a3...am}
类别属性的集合:c={y1,y2,y3...yn}
p(x)是用于归一化的“证据”因子,对于给定的样本x,证据因子p(x)与分类属性没有任何关系,对于任何的分类属性该值的大小不发生变化。所以只要将分子最大化即可。朴素贝叶斯分类器的表达式常常定义如下:
即将使得式子
p(yfirst,x)和次最大的概率值p(ysecond,x)做差值,会出现不同的概率值,但差值却相同的情况。以二分类为例,情景一:p(yfirst,x)和p(ysecond,x)取值分别为0.4,0.2,
d_value=p(yfirst,x)-p(ysecond,x)=0.2;情景二:p(yfirst,x)和p(ysecond,x)取值分别为
0.5,0.3,d_value=p(yfirst,x)-p(ysecond,x)=0.2;实际上,情景一加入证据因子后
另外关于条件概率p(xj|yi)的计算,对于离散型属性而言,采用公式
进一步的,所述step2和step3中:构造朴素贝叶斯分类器,选择最不确定的样本进行标记,这里选择使用不确定性的代表方法margin策略,margin公式如下
x*=argmin(p(yfirst|x,l)-p(ysecond|x,l))(4)
yfirst:后验概率最大的值,ysecond:后验概率次最大的值,当两个的值相差最小的时候,不确定性越大。
以二分类(y,n)为例,如果d_value的取值很小说明数据属于分类y或分类n的概率比较邻近。这时分类器无法较准确的对该数据进行决策。如果将该类数据打标则可以很大程度上提高分类的性能,这就是基于不确定性选择出最值得标记的样本。如果d_value的取值较大,比如分类y的后验概率远远大于分类n的后验概率,在误差允许的范围内,这时分类器已经有十足的把握确定该数据的分类结果。对于这种情况,我们不需要对该类数据在做处理。
进一步的,所述step3中:基于不确定性,依据阈值对数据进行划分,这里涉及到两种划分方法。方法一:根据经验值或设定的可信度确定threshold_α,threshold_β进行划分;方法二:按照不确定性由小到大进行排序,通过控制数量进行划分。为了更好的说明不同区域的划分,绘制如图2进一步说明问题。
对于样本a,通过分类器得到后验概率值,最大概率值远远大于次最大概率值,这时认为可以确定它的分类了。即使a的密度很大,也不再对a进行标记了,此时,将a划分为负域。
对于样本b,通过分类器得到后验概率值,最大概率值与次最大概率值很靠近,分类器对它决策错误的概率很大,虽然样本b没有样本a的密度大。显然,对b进行标记意义更大,此时,将b划分为正域。
进一步的,所述step4中:基于不确定性来对数据进行三支的划分,有大多数的样本取得不是两端的最值,不确定性处于中间状态,如果知道此类数据周围有更多的无标记样本,则说明该数据具有代表性,对其进行打标可以降低周围样本的不确定性,提高分类器的性能。
对边界域中的数据处理如图3,构造的分类器对无标记样本的a,b的分类都有不确定性,但是显然,样本a更具有代表性,对a打标更有利于学习。在边界域上的样本需要将周围样本的分布情况也考虑在内,将最有代表性的样本打标。
以下以具体实施例进行描述,具体包括以下步骤:
(1)数据划分
调用随机函数使数据随机化,对数据进行划分,可设置有标记数据集:无标记数据集:测试集=1:69:30,即1%的数据用于有标记数据,69%的数据用于无标记数据,30%的数据用于测试。将69%的无标记数据集通过每次的迭代有选择的添加到1%的有标记数据集(训练集)中。每次迭代通过主动学习方法对无标记数据集进行选择,挑选出最有价值,最有意义的样本进行标记。将标记好的样本添加到训练集中,训练新的分类器对测试集进行测试,观察比较每次添加过程后分类器的性能。
(2)计算无标记数据的不确定性,按照不确定性划分不同的域
构造朴素贝叶斯分类器,根据margin策略,计算后验概率的差值,确定每一个无标记数据的不确定性。
d_value(x)=p(yfirst|x,l)-p(ysecond|x,l)(1)
基于不确定性的大小,将整个样本空间划分为3个域:正域、负域、边界域。
划分方法一:根据阈值threshold_α,threshold_β进行划分,定义如下:
ifd_value(x)≤threshold_αx∈pos(x)
ifthreshold_α<d_value(x)<threshod_βx∈bnd(x)(2)
ifd_value(x)≥threshold_βx∈neg(x)
其中,0≤threshold_α<threshold_β≤1
threshold_α,threshold_β可根据经验值或设定的可信度来确定。以二分类为例进行说明,若threshold_α=0.05,threshold_β=0.95
当d_value=0.05时
p(y1|x)+p(y2|x)=1,p(y1|x)-p(y2|x)=0.05求解方程组,可得如下结果p(y1|x)=0.525,p(y2|x)=0.475,即当二分类的后验概率分别是0.525和0.475时,将其划分为正域,视为完全不能确定分类。
当d_value=0.95时
p(y1|x)+p(y2|x)=1,p(y1|x)-p(y2|x)=0.95求解方程组,可得如下结果p(y1|x)=0.975,p(y2|x)=0.025,即当二分类的后验概率分别是0.975和0.025时,将其划分为负域,视为可以确定分类。
划分方法二:如图4,按照概率值由小到大进行排序,通过控制数量,对样本空间进行划分,前topk属于正域,后topk属于负域,中间的一部分属于边界域。
以
if
if
if
其中,selectnum:每次迭代期望标记的数量。
top(x):定义一个函数,获取数据x的在排序队列中的序号。
(3)对不同域上的数据做相应的处理
正域:即x∈pos(x)的样本集合,直接添加到待标记序列,并将其从无标记数据中删除;负域:即x∈neg(x)的样本集合,对该类样本打标意义不大,不对该类样本做任何处理。边界域:x∈bnd(x)需要进一步确定是否打标。
1.计算样本两两间的距离。
若属性为连续型属性,使用欧拉距离,定义如下:
若属性为离散型属性,选择使用vdm,定义如下:假设样本x1,x2在离散型属性的两个值v1,v2,
c1是所有样本中该属性值为v1的个数,c1i则为其中类别为i个数,c2是所有样本中该属性值为v2的个数,c2i则为其中类别为i个数。k为常数,通常取1。
2.确定样本的领域半径
δ=min(dis(xi,s))+w×range(dis(xi,s)),0≤w≤1(5)
其中,min(dis(xi,s))表示距离其最近的样本,range(dis(xi,s))表示在指定数据集中其距离的取值范围,w控制着半径的大小
3.选择最具有代表性的样本
由于d_value的值越小,不确定性越大,取其相反数则有d_value的值越大,不确定性越大,为了避免负数,进行加1操作,于是具有代表性的点有如下定义:
n为使公式dis(x,xk)≤δ成立的个数,其中,
对代表性的样本由大到小进行排序,选择topk个样本添加到待标记序列select中
(4)为待标记序列打标,创建新的分类器
对每个域选择出的样本取并集运算,即待标记序列select中的样本,交给专家等待标记,将已标记的样本添加到训练集,创建新的分类器。
(5)结果测试
主动学习算法是一个迭代的过程,每次选择selectnum添加到待标记数据集中,并对它们进行标注。更新训练集,创建新的分类器,利用测试集对分类性能进行测试。通过不断的迭代添加无标记数据直到满足预设迭代次数或评价标准。这里的评价指标可以选择使用accuracy,roc,f-value等。为了使得实验结果更具有稳定可靠性,通过随机划分的方法,比如对数据进行10次的测试,最后求取这10次平均结果。
以上这些实施例应理解为仅用于说明本发明而不用于限制本发明的保护范围。在阅读了本发明的记载的内容之后,技术人员可以对本发明作各种改动或修改,这些等效变化和修饰同样落入本发明权利要求所限定的范围。