发明内容
针对现有技术存在的问题,本发明的主要目的在于提供一种能克服固定分类阈值分类器对分类边界附近点分类不稳定的问题的基于浮动分类阈值的分类器集成方法。
为实现上述目的,当针对二分类问题时,本发明提供一种基于浮动分类阈值的分类器集成方法的实施例,该方法包括如下步骤:
(1)获取训练样本集S;
(2)初始化样本权值并赋初值,
(3)迭代T次,训练得到T个最佳弱分类器;
(4)组合T个最佳弱分类器得到最佳组合分类器,
该步骤(3)包括如下步骤:
(3.1)基于有权值
的训练样本集S训练弱分类器,t=1,...,T,通过如下步骤实现:①对应训练样本集S的划分,定义一个区间
i=1,...,m;②定义弱分类器h
t(x),令
l=1,-1,其中x
i代表第i个样本的具体值,y
i代表第i个样本的类别,
代表
中l类样本权值之和,l代表二分类问题中类别为1和-1的类;③选取弱分类器h
t(x),使
最小,其中Z
t代表样本权值调整后的归一化因子;
(3.3)判断t是否小于T,若是,则令t=t+1,并返回步骤(3.1),若否,则进入步骤(4)。
更进一步地,组合T个最佳弱分类器得到最佳组合分类器的方法为:H(x)=sgn(f(x)),其中
当针对多分类问题时,本发明提供一种基于浮动分类阈值的分类器集成方法的实施例,该方法包括如下步骤:
(1)获取训练样本集S;
(2)初始化样本权值并赋初值,
i=1,...,m;
(3)迭代T次,训练得到T个最佳弱分类器;
(4)组合T个最佳弱分类器得到最佳组合分类器,
该步骤(3)包括如下步骤:
(3.1)基于有权值
的训练样本集S训练弱分类器,t=1,...,T,通过如下步骤实现:①对应训练样本集S的划分,定义一个区间
i=1,...,m;②定义弱分类器h
t(x),令
l=1,...,K,其中x
i代表第i个样本的具体值,y
i代表第i个样本的类别,
代表
中l类样本权值之和,l代表多分类问题中的类别;③选取弱分类器h
t(x),使
最小,其中Z
t代表样本权值调整后的归一化因子;
(3.2)根据步骤(3.1)的结果调整样本权值
(3.3)判断t是否小于T,若是,则令t=t+1,并返回步骤(3.1),若否,则进入步骤(4)。
更进一步地,组合T个最佳弱分类器得到最佳组合分类器的方法为:
其中
本发明相对于现有技术,对各个弱分类器采取浮动分类阈值,各个弱分类器的输出值不是根据分类阈值而是根据训练样本的分布而确定,能克服固定分类阈值分类器对分类边界附近点分类不稳定的这一缺点,把只针对分类器的组合扩展到了针对分布的组合,因而可以更好地刻画分类边界。
具体实施方式
下面结合附图,详细说明本发明的具体实施方式。
实施例一
下面结合图1、图2、图3具体说明本发明的针对二分类问题时该基于浮动分类阈值的分类器集成方法的具体流程步骤。
使用现有的连续AdaBoost算法时,设训练样本集S={(x
1,y
1),(x
2,y
2),..,(x
m,y
m)},y
i∈{-1,+1},i=1,...,m,此处x
i代表第i个样本的具体值,y
i代表第i个样本的类别。(y
i,y
i)∈S简单记为x
i∈S。对样本空间S进行一个n
t段划分:
当i≠j时,
弱分类器h
t(x)实际上对应于样本空间的一个n
t段划分,当目标位于划分段
时,根据该段内1类和-1类样本发生的概率
与
弱分类器h
t(x)将输出
显然,位于同一划分段内的目标,弱分类器输出值是一样的。当目标位于分段阈值附近时,目标值较小的变化将导致弱分类器输出两个不同的值,即当目标位于弱分类器的分段阈值附近时,分类结果是不稳定的。
为了克服这种不合理现象,一种可行办法就是弱分类器h
t(x)的输出值,不是由目标位于弱分类器的划分段
内的两类样本的发生概率
与
决定,而是以包含该目标值的一个区域段内的两类样本的发生概率来决定。h
t(x)的输出值仍然为
但
与
不是
内的两类样本发生概率,而是以x为中心的一个区域段内的两类样本发生概率。根据统计学中的极大似然思想,已经发生的事件应该具有大的概率,如果用区域中间值来体现具有大的概率,上述做法便体现了极大似然思想。
称包含目标x的区域为目标中心区域,则选取怎样的目标中心区域来计算两类样本发生的概率,从而确定弱分类器的分类输出值,便是一个重要的问题。为便于计算,对二分类问题,一些简单可行的措施可以有:
1.目标中心区域为以该目标为中心,区域宽度为样本值变化幅度的一半。当目标靠近两端时,目标中心区域可选取包含该目标对应半宽区域。
2.根据极大似然原则,目标中心区域的宽度可以动态,比如以该目标值为中心,逐步向两边扩展,直至两类样本发生概率之差值最大。
对于第1种措施,其相当于固定目标中心区域宽度,计算简单,目标位于区域中间,其能很好地体现极大似然思想。而对于第2种措施,当两类样本分布是标准正态分布时,不难验证,其得到的目标中心区域将正好是最优阈值对样本的两段划分,这便与连续AdaBoost算法完全一样了,失去了浮动阈值分类器作用。如果对措施2进行一点限制,比如区域向两边扩展时,向两类样本发生概率之差值增长最大方向扩展,然后再向另一方向扩展,并同时限制区域宽度不超过样本值变化幅度的一半,则就具有浮动阈值的特点了。
根据前面的分析,该针对二分类问题时的基于浮动分类阈值的分类器集成方法具体包括如下步骤:
S1、获取训练样本集S;
S3、迭代T次,训练得到T个最佳弱分类器,通过步骤S31~S33来实现:
S31、基于有权值
的训练样本集S训练弱分类器,t=1,...,T,通过步骤S311~S313来实现:S311、对应训练样本集S的划分,定义一个区间
S312、定义弱分类器h
t(x),令
l=1,-1,其中x
i代表第i个样本的具体值,y
i代表第i个样本的类别,
代表
中l类样本权值之和,l代表二分类问题中类别为1和-1的类;S313、选取弱分类器h
t(x),使
最小,其中Z
t代表样本权值调整后的归一化因子;
S33、判断t是否小于T,若是,则令t=t+1,并返回步骤S31,若否,则进入步骤S4;
S4、组合T个最佳弱分类器得到最佳组合分类器,方法为:H(x)=sgn(f(x)),其中
本发明与连续AdaBoost算法相比,其一,在弱分类器选取策略上,本发明直接采用了最小化权值调整后的归一化因子,最小化权值调整后的归一化因子是方法的实质;其二,在弱分类器的划分上,连续AdaBoost算法的h
t(x)对应一个n
t段划分,即
i≠j时,
h
t(x)输出值定义为
其中
与
为x
i所位于的划分段
内正类样本累积权值与反类样本累积权值。而在本发明中,h
t(x)对应的不是一个划分了,h
t(x)输出值有类似公式
但
与
变成包含x
i(一般以x
i为中心)的样本空间的一个子集的正类样本累积权值与反类样本累积权值。即每一个x
i得到样本空间S的一个子集
但i≠j时,允许
其三,本发明能够根据h
t(x)输出值近似得到样本空间的分布,而不只是简单的正反类样本在划分段内的分布差异。因此,本发明实际上已经把连续AdaBoost算法只能针对弱分类器的组合,扩展到了针对样本分布的组合。
实施例二
下面结合图1、图4、图5具体说明本发明的针对多分类问题时该基于浮动分类阈值的分类器集成方法的具体流程步骤。
在二分类问题中,利用了1和-1来表示两类标签。因此,弱分类器ht(x)的输出值直接为两类标签置信度的差值,即
时,
组合分类器则根据累积置信度差值的符号来输出类别。在多分类问题中,各个弱分类器只能输出对应类别标签的置信度,组合分类器就是累积同标签的置信度,最后输出累积置信度最大对应的标签。记h
t(x,l)为h
t(x)输出标签l(=1,...,K)的置信度,组合分类器
其中
对多分类(K分类)问题,定义训练样本集S={(x
1,y
1),(x
2,y
3),...,(x
m,y
m)}中的标签y
i∈{1,...,K},i=1,...,m。与二分类问题一样,样本权值的调整与弱分类器的选取策略,均是为了使得选取的弱分类器尽量相互独立。弱分类器选取策略仍然是样本权值调整后的归一化因子,而样本权值的调整则根据被检测目标的置信度与平均置信度之差值来调整。因为当被检测目标的置信度最大,则将被正确分类,即
的大小,可近似度量样本(x
i,y
i)被正确分类的可能性。负指数函数,正好可以体现集成学习算法中样本权值调整的重要原则:被正确分类的样本的权值减少,被错误分类的样本的权值增加。
因此,该针对多分类问题时的基于浮动分类阈值的分类器集成方法具体包括如下步骤:
S1、获取训练样本集S;
S3、迭代T次,训练得到T个最佳弱分类器,通过步骤S41~S43来实现:
S41、基于有权值
的训练样本集S训练弱分类器,t=1,...,T,通过步骤S411~S413来实现:S411、对应训练样本集S的划分,定义一个区间
S412、定义弱分类器h
t(x),令
l=1,...,K,其中x
i代表第i个样本的具体值,y
i代表第i个样本的类别,
代表
中l类样本权值之和,l代表多分类问题中的类别;S413、选取弱分类器h
t(x),使
最小,其中Z
t代表样本权值调整后的归一化因子;
S43、判断t是否小于T,若是,则令t=t+1,并返回步骤S41,若否,则进入步骤S4;
S4、组合T个最佳弱分类器得到最佳组合分类器,方法为:
其中
需要注意的是,在本方法中,
但i≠j时,允许
这是浮动阈值与固定阈值的重要区别。在多分类问题中,仍然存在目标中心区域如何选取问题。因为本方法的真实目的是体现极大似然原则。因此,目标中心区域的选取仍然要体现这一思想。仍然可以采取目标位于所选区域的中间,以此体现极大似然思想,而区域的宽度,则可以是样本值变化幅度的一半,或1/K。
下面将本发明的基于浮动分类阈值的分类器集成方法用于实际运用中,并与现有的连续AdaBoost算法进行比较。
如果严格按照本方法来计算将是复杂的:首先,对不同的样本,需要统计不同的目标中心区域的各类样本累积权值。每个样本的每个属性值都要统计对应的目标中心区域,其几乎都需要遍历一次样本,计算量比较大;其次,在训练弱分类器时,对任一样本都要统计以其为中心的目标中心区域的各类样本的累积权值,以便得到对应的弱分类器输出,在得到各个弱分类器后,用于待分类目标的分类检测时,则又要根据待检测目标值,统计以该值为中心的目标中心区域内的各类样本的累积权值,计算量也很大。因此,本发明在用于实际运用中时,需要解决这两个计算步骤的耗时问题。
针对第一个问题,可参照AdaBoost算法用于人脸检测时的方法,因为在AdaBoost算法用于人脸检测时,其中引入的Harr-like特征也是一个很耗时的特征。在引入积分图概念后,可以通过积分图来完成任意矩形区域的累积灰度值的快速计算,于是AdaBoost算法用于人脸检测真正可行。按照类似的思想,为了统计任意区间内的各类样本的累积权值,可先统计大于给定样本值的各类样本的累积权值(相当于最大样本值到该样本值之间的各类样本累积权值),这只需遍历一次样本。然后,任意中间一段区域的各类样本累积权值,可以由该区间的两个边界点对应的上述统计值之差得到。可以由该方法来解决第一个计算步骤的耗时问题;针对第二个问题,事实上,并没有必要精细到样本取值变化范围内的任一值来统计目标中心区域的各类样本累积权值,也就是说,当两个目标值相差很小时,弱分类器输出值可以一样。这便可以解决第二个问题。
于是,可以按照下面的方法来计算弱分类器的输出值。为叙述简单,仍然用x
i直接代表样本的某个属性值。记x
i的最大值和最小值分别为
确定弱分类器对样本值的分辨率为(v
max-v
min)/n,即当两个目标的值相差小于(v
max-v
min)/n时,弱分类器输出同样的值,n≥2。把样本空间按样本值大小n等分,S=S
1U...US
n,并设S
1包含v
max,S
n包含v
min。则定义弱分类器h
t(x):任意x
i∈S
j,令
l=1,...,K。其中R
i为包含S
j的相邻的一些S
k组成,即
比如按照前面介绍的第一种目标中心区域确定方法,则k取值范围为max(1,j-Δ):min(n,j+Δ)。当Δ=n/4,相当于目标中心区域为样本值变化范围的一半,Δ=1/(2K)时,目标中心区域为样本值变化范围的1/K。
当然,对于非数字属性的分类问题,将哪些样本作为相邻样本考虑,这是一个重要问题,不同的考虑方法,将会得到不同的分类方法。
前面从理论上分析了本发明比连续AdaBoost算法会有更好的效果。下面通过实验与现有的连续AdaBoost算法进行比较。
实验工具软件是MATLAB 7.8。实验数据选取了UCI中的Ionosphere,Sonar,Wisconsin Diagnostic Breast Cancer(WDBC),Pima,SPECT数据集,这几个数据集可从网址:http://archive.ics.uci.edu/ml/datasets.html下载。
本实验中的训练集和测试集按不同标签类同比例随机划分,重复多次计算测试错误率的均值和方差,均值反映方法的效果,方差反映方法的稳定性。实验中对数据集中训练集与测试集按照对等的比例划分,表1为本实验所选UCI实验数据集的情况。表1中“正例、反例”一列给出了各样本数据正类和反类的选择方法,“训练集、测试集”一列给出了训练集和测试集的选择方法。实验中重复抽样属性集的大小n选为与原始属性集相同,即表1中的“属性个数”一列给出的数值。
实验中采用的弱学习算法为决策树算法,对本发明和连续的AdaBoost算法在同样的数据集上用同样的参数进行对比实验。实验中对数据集分别进行30和40次随机迭代实验,得出应用各种方法对测试集数据的测试错误率的均值和方差。表2即为在实验数据集上的测试错误率均值和方差的对比,对应于表2的示意图如图6至图10所示(图中Ordinary AdaBoost代表现有的连续AdaBoost算法,Floating Threshold AdaBoost代表本发明,横坐标代表迭代实验次数,纵坐标代表测试错误率)。
特别指出,采取同比例随机划分训练集和测试集,可验证各方法的效果。划分的随机性能反映方法对训练集的适应性,针对固定训练集和测试集来验证是不科学的。而同比例划分,正好反映了学习算法的适用条件,一般的学习算法都有一个潜在假设,即训练集与测试集(或目标空间)是同分布的,也只有这样,通过降低训练错误率才能降低测试错误率,如果二者分布不同,分析结论将不一样。
表3
表4
实验结果表明,本发明确实比连续AdaBoost算法效果好。如表2所示,测试错误率的方差都很小,证明本发明具有稳定性;另外,本发明的测试错误率比AdaBoost算法低。而随着训练集比例增加,二者的测试错误率均呈现逐渐降低的趋势,而测试错误率方差,则呈现相反的趋势,这与常识吻合。
以上介绍了基于浮动分类阈值的分类器集成方法。本发明并不限定于以上实施例,任何未脱离本发明技术方案,即仅仅对其进行本领域普通技术人员所知悉的改进或变更,均属于本发明的保护范围之内。