基于改进Adaboost算法的数据源分类器构建方法与流程

文档序号:15447740发布日期:2018-09-14 23:34阅读:105来源:国知局

本发明涉及数据源分类技术领域,尤其涉及一种基于改进adaboost算法的数据源分类器构建方法。



背景技术:

deepweb即“深网”,指互联网上那些不能被标准搜索引擎索引的非表面网络内容。在2000年7月,brightplanet公司就指出,整个互联网上大约有43000~96000个web数据库,并且将deepweb与surfaceweb进行对比:1、deepweb蕴含的信息量是surfaceweb的400~500倍;2、对deepweb数据的访问量比surfaceweb要高出15%;3、deepweb蕴含的信息量比surfaceweb的质量更高;4、deepweb的增长速度要远大于surfaceweb;5、超过半数的deepweb的内容是局限于某个特定领域的,即面向某个特定领域。在2004年4月,伊利诺伊大学厄巴纳-香槟分校对整个deepweb做了一次较为准确的估算,推测web上有307000个提供web数据库的网站、450000个web数据库,比brightplanet在2000年估计的50000个数据库网站的数目增长了6倍多。可见deepweb包含丰富的、高质量的信息资源,其价值(数量和质量)远超仅由静态网页构成的surfaceweb,且增长速度相对较快。deepweb的信息一般存储在服务端web数据库中,与静态页面相比信息量更大,主题更专一,信息质量更好,信息结构化更好。尽管deepweb是非常有用的信息源,但准确的查找到他们是一件非常困难的事情。

为了准确查找deepweb上的数据,首先必须对deepweb数据源的内容进行准确分类,即准确的判断每一个deepweb数据源的内容属于什么类别,例如,某一deepweb数据源的内容属于旅游类别、还是属于新闻类别等。针对deepweb数据源分类问题,国内外已经进行了大量的研究。有文献提出了一种基于k-邻近算法的deepweb数据源的自动分类方法,运用k-邻近算法对deepweb数据源进行自动分类,但是该方法比较适用于样本容量比较大的类域的自动分类,而对于样本容量较小的类域采用该方法进行自动分类时,比较容易产生误分。还有文献提出了一种基于查询接口特征的deepweb数据源的自动分类方法,在方案中首先要提取查询接口的特征,并将之标准化,随后使用c4.5决策树分类算法来对数据源进行分类,取得了较高的查全率和查准率,但是在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的效率较低。

但是,上述文献公开的方案都是采用现有的分类算法对数据源进行分类,而没有针对数据源数据的结构特性对分类算法进行改进从而达到更高的准确率。同时,传统adaboost算法仅采用弱分类器进行迭代训练,而弱分类器多次迭代训练后会导致错误的叠加,从而影响分类的准确性。



技术实现要素:

为了解决现有技术中所存在的问题,本发明针对deepweb数据源是一种半结构化的数据类型,具有特征空间高维性、文本特征表示向量稀疏和文本主体特征表现明显等特点,提出了一种采用强弱分类器并行的方法对现有的adaboost算法进行改进来构建分类器,从而达到提高数据源分类效率的效果。

本发明提供了一种基于改进adaboost算法的数据源分类器构建方法,包括:

步骤s1:根据历史分类数据构建样本数据集,并设置样本数据集中每一组训练样本数据的初始样本权重值;

步骤s2:根据样本数据集抽取训练集;

步骤s3:采用所述训练集分别训练弱分类器和强分类器,并获取两个分类器各自的错误度;

步骤s4:当步骤s3得到的两个分类器各自的错误度均大于预设阈值时,返回步骤s3;

步骤s5:根据两个分类器各自的错误度分别设置两个分类器各自的分类器权重值;

步骤s6:当本轮迭代训练得到的两个分类器各自的错误度均大于上一轮迭代训练得到的两个分类器各自的错误度时,根据本轮迭代训练之前的各轮迭代训练得到的分类器及其分类器权重值整合获得最终分类器;否则,重新设置每一组训练样本数据的样本权重值,并返回步骤s3。

现有的adaboost算法是仅利用多个弱分类器级联来构造出一个强分类器的训练方式,其优点在于这样构造出来的分类器拥有很好的精度,对缺失样本不敏感,可用于二分类和多分类的分类场景;其缺点在于通过对单一弱分类器的不断迭代,使得其错误也不断的叠加,使得分类器整体的准确率下降。本发明通过在现有adaboost算法的每一轮迭代训练中,采用弱分类器和强分类器并行的训练方式,来替代原有仅用弱分类器进行训练的方式,利用强分类器所拥有的在使用较少样本情况下可以具有较好分类能力和泛化能力的特点,通过相互补偿的概念将强弱分类器的优点结合起来,构造出一个准确率和鲁棒性更好的分类器,从而弥补单一弱分类器错误叠加使得现有adaboost算法准确率受到影响的缺陷。

同时,本方案发明人通过研究和实验发现,大数据会延长分类器的训练时间和迭代次数,若采用强分类器与强分类器并行的训练方式,则因为强分类器较为复杂,虽然准确性可以得到保证,但是其需要牺牲大量的时间与空间作为代价,因而发明人并未采用强分类器与强分类器并行的方式来改进现有的adaboost算法,而是采用弱分类器与强分类器并行的方式来改进现有的adaboost算法,使得在保证时间和空间优势的情况下,尽可能地提高分类的准确性。

进一步的,所述步骤s1中的样本数据集为d={(x1,y1),(x2,y2),...,(xi,yi),...,(xm,ym)},将其中每一组训练样本数据的初始样本权重值设置为

其中,t表示第t轮迭代训练,i为训练样本数据组序号,m为样本数据集中的训练样本数据组总数,t、i和m均为正整数,xi表示每一组样本数据中包含的待分类的数据源类别,yi表示每一组样本数据中分类正确的数据源类别。

首先,通过历史分类数据,构建样本数据集,并在训练开始前,给每一组训练样本数据设置相同的初始样本权重值,即根据样本数据组总数确定的由此,每一组样本数据均将平等的用于分类器训练。

进一步的,所述步骤s2为:

从所述样本数据集d中按照预设抽样比例随机抽取训练样本数据组构建训练集s;

其中,所述预设抽样比例的取值范围为20%到80%。

在本方案中,在第一轮迭代训练开始时,需要从样本数据集中有放回地随机抽取一定比例的样本数据组来构建训练集。本方案发明人通过研究发现,该抽样比例需保持在20%到80%之间较为合适,最佳的抽样比例为60%,在此比例下构建的训练集的训练效果最佳。

进一步的,所述步骤s3中错误度的获取方法为:

弱分类器hp错误度为强分类器hs错误度为

其中,hp(xi)≠yi表示弱分类器hp对第i个训练样本数据组分类错误,p(hp(xi)≠yi)表示本轮迭代训练中弱分类器hp分类错误样本数据组的样本权重值总和,hs(xi)≠yi表示弱分类器hs对第i个训练样本数据组分类错误,p(hs(xi)≠yi)表示本轮迭代训练中强分类器分类错误样本数据组的样本权重值总和。

在第一轮迭代训练中,通过分类器分类错误的样本数据组数和训练集中的样本数据组总数来确定分类器在本轮迭代训练中的错误度,该错误度反映了分类器对训练集中样本数据组的分类错误情况,为后续设置分类器权重值提供基础;在之后的各轮训练中,分类器的错误度由分类错误的样本数据组的样本权重值总和来决定,例如,将一轮训练中弱分类器分类错误的样本数据组的样本权重值相加,即得到本轮训练中弱分类器的错误度。

进一步的,所述步骤s4中的预设阈值为0.5。

为了避免错误率较高的分类器继续参与后续训练,影响分类的准确率,同时也为了尽可能缩短迭代训练次数,节省运行的时间和空间,当强分类器和弱分类器各自的错误率均高于0.5时,便停止本轮训练。

进一步的,所述步骤s5为:

根据所述弱分类器错误度εp设置弱分类器hp的分类器权重值αp为

根据所述强分类器错误度εs设置强分类器hs的分类器权重值αs为

此处获得的分类器权重值用于最终分类器的构建,是每一轮迭代训练得到的分类器可以更加准确的整合到最终分类器中。

进一步的,所述步骤s6为:

当本轮迭代训练得到的弱分类器错误度大于上一轮迭代训练得到的弱分类器错误度且本轮迭代训练得到的强分类器错误度大于上一轮迭代训练得到的强分类器错误度时,根据本轮训练之前的各轮迭代训练得到的分类器及其分类器权重值整合获得最终分类器h(xi):

否则,重新设置所述样本数据集d中每一个训练样本数据组的样本权重值wt+1(i),并返回步骤s3:

其中,hp(xi)=yi表示弱分类器hp对第i个训练样本数据组分类正确,hp(xi)≠yi表示弱分类器hp对第i个训练样本数据组分类错误,hs(xi)=yi表示强分类器hs对第i个训练样本数据组分类正确,hs(xi)≠yi表示弱分类器hs对第i个训练样本数据组分类错误,zt为归一化因子且zt=sum(d)即样本数据集中的样本总数,y为标签向量,hp(xi)=sign(αphp(xi)),hs(xi)=sign(αshs(xi)),sign为符号函数。

发明人通过研究和实验发现,分类器的错误度与迭代训练次数存在一种随着迭代训练次数的增加,分类器错误度逐渐降低,但是达到一定训练次数后,随着训练次数的增加,分类器错误度又逐渐升高的相关关系。故当本轮训练得到的分类器错误度大于上一轮训练得到的分类器错误度时,说明上一轮训练得到的分类器是错误度最小的分类器,即分类效果最佳的分类器,所以停止迭代训练,并根据本轮训练之前的各轮迭代训练得到的分类器及其分类器权重值整合获得最终分类器。

在下一轮迭代训练开始时,重新给每一组样本数据设置样本权重值,是为了加大训练中错误样本的权重,从而提高分类器对于难分类样本的重视程度。同时,通过调整样本数据组的样本权重值,也可以使分类器更加有针对性的对训练样本数据进行训练。

进一步的,所述弱分类器为采用朴素贝叶斯算法构建的分类器,所述强分类器为采用smo算法构建的分类器。

本发明使用的弱分类器采用朴素贝叶斯算法构造,强分类器采用支持向量机(svm)下的一个核心函数:序列最小优化算法(smo,sequentialminimaloptimization)构造。朴素贝叶斯算法的优点在于:对于大数量训练和查询时有较高的速度,并且支持增量运算,即可以实时对新增的样本进行训练。而smo能对训练集之外的数据做很好的预测、泛化错误率低、计算开销小,并且能够解决小样本下的机器学习问题,处理高维数据集。

有益效果

本发明提供了一种基于改进adaboost算法的数据源分类器构建方法,通过弱分类器和强分类器并行训练的方式来改进现有的adaboost算法,通过一种强弱分类器互补的概念来解决传统adaboost算法中单个弱分类器错误叠加的问题,将强弱分类器的优势互补,从而使得改进后的算法对于数据源分类更加准确,效率更高。并且通过在每一轮训练开始时,根据上一轮训练情况重置样本数据集中各个样本数据组的样本权重值,使分类器对不同样本数据进行针对性学习,进一步提高分类器的分类准确度。同时,最后根据不同分类器权重值整合最终分类器,使得最终分类器能够针对性的对各种待分类数据进行分类,再一次提高了本发明公开的分类器的分类准确度。

附图说明

图1是本发明提供的一种基于改进adaboost算法的数据源分类器构建方法的流程示意图;

图2是本发明实施例中改进adaboost算法与其他三种常规算法的分类结果比较示意图;

图3是本发明实施例中改进adaboost算法与传统adaboost算法的迭代训练次数的比较示意图。

具体实施方式

为了方便更好地理解本发明方案的内容,下面结合具体实施例进行进一步阐述。

如图1所示,本发明提供了一种基于改进adaboost算法的数据源分类器构建方法,包括:

步骤s1:根据历史分类数据构建样本数据集,并设置样本数据集中每一组训练样本数据的初始样本权重值。

所述步骤s1中的样本数据集为d={(x1,y1),(x2,y2),...,(xi,yi),...,(xm,ym)},将其中每一组训练样本数据的初始样本权重值设置为其中,t表示第t轮迭代训练,i为训练样本数据组序号,m为样本数据集中的训练样本数据组总数,t、i和m均为正整数,xi表示每一组样本数据中包含的待分类的数据源类别,yi表示每一组样本数据中分类正确的数据源类别。

首先,通过历史分类数据,构建样本数据集,并在训练开始前,给每一组训练样本数据设置相同的初始样本权重值,即根据样本数据组总数确定的由此,每一组样本数据均将平等的用于分类器训练。

步骤s2:根据样本数据集抽取训练集。

即从所述样本数据集d中按照预设抽样比例随机抽取训练样本数据组构建训练集s;其中,所述预设抽样比例的取值范围为20%到80%。

在本方案中,第一轮迭代训练开始时,需要从样本数据集中有放回地随机抽取一定比例的样本数据组来构建训练集。本方案发明人通过研究发现,该抽样比例需保持在20%到80%之间较为合适,最佳的抽样比例为60%,在此比例下构建的训练集的训练效果最佳。

步骤s3:采用所述训练集分别训练弱分类器和强分类器,并获取两个分类器各自的错误度。

所述步骤s3中错误度的获取方法为:弱分类器hp错误度为强分类器hs错误度为其中,hp(xi)≠yi表示弱分类器hp对第i个训练样本数据组分类错误,p(hp(xi)≠yi)表示本轮迭代训练中弱分类器hp分类错误样本数据组的样本权重值总和,hs(xi)≠yi表示弱分类器hs对第i个训练样本数据组分类错误,p(hs(xi)≠yi)表示本轮迭代训练中强分类器分类错误样本数据组的样本权重值总和。

在第一轮迭代训练中,通过分类器分类错误的样本数据组数和训练集中的样本数据组总数来确定分类器在本轮迭代训练中的错误度,该错误度反映了分类器对训练集中样本数据组的分类错误情况,为后续设置分类器权重值提供基础;在之后的各轮训练中,分类器的错误度由分类错误的样本数据组的样本权重值总和来决定,例如,将一轮训练中弱分类器分类错误的样本数据组的样本权重值相加,即得到本轮训练中弱分类器的错误度。

步骤s4:当步骤s3得到的两个分类器各自的错误度均大于预设阈值时,返回步骤s3。

其中,所述步骤s4中的预设阈值为0.5。为了避免错误率较高的分类器继续参与后续训练,影响分类的准确率,同时也为了尽可能缩短迭代训练次数,节省运行的时间和空间,当强分类器和弱分类器各自的错误率均高于0.5时,便停止本轮训练。

步骤s5:根据两个分类器各自的错误度分别设置两个分类器各自的分类器权重值。

即根据所述弱分类器错误度εp设置弱分类器hp的分类器权重值αp为根据所述强分类器错误度εs设置强分类器hs的分类器权重值αs为此处获得的分类器权重值用于最终分类器的构建,是每一轮迭代训练得到的分类器可以更加准确的整合到最终分类器中。

步骤s6:当本轮迭代训练得到的两个分类器各自的错误度均大于上一轮迭代训练得到的两个分类器各自的错误度时,根据本轮迭代训练之前的各轮迭代训练得到的分类器及其分类器权重值整合获得最终分类器;否则,重新设置每一组训练样本数据的样本权重值,并返回步骤s3。

即当本轮迭代训练得到的弱分类器错误度大于上一轮迭代训练得到的弱分类器错误度且本轮迭代训练得到的强分类器错误度大于上一轮迭代训练得到的强分类器错误度时,根据本轮训练之前的各轮迭代训练得到的分类器及其分类器权重值整合获得最终分类器h(xi):

否则,重新设置所述样本数据集d中每一个训练样本数据组的样本权重值wt+1(i),并返回步骤s3:

其中,hp(xi)=yi表示弱分类器hp对第i个训练样本数据组分类正确,hp(xi)≠yi表示弱分类器hp对第i个训练样本数据组分类错误,hs(xi)=yi表示强分类器hs对第i个训练样本数据组分类正确,hs(xi)≠yi表示弱分类器hs对第i个训练样本数据组分类错误,zt为归一化因子且zt=sum(d),y为标签向量,hp(xi)=sign(αphp(xi)),hs(xi)=sign(αshs(xi)),sign为符号函数。

发明人通过研究和实验发现,分类器的错误度与迭代训练次数存在一种随着迭代训练次数的增加,分类器错误度逐渐降低,但是达到一定训练次数后,随着训练次数的增加,分类器错误度又逐渐升高的相关关系。故当本轮训练得到的分类器错误度大于上一轮训练得到的分类器错误度时,说明上一轮训练得到的分类器是错误度最小的分类器,即分类效果最佳的分类器,所以停止迭代训练,并根据本轮训练之前的各轮迭代训练得到的分类器及其分类器权重值整合获得最终分类器。

在下一轮迭代训练开始时,重新给每一组样本数据设置样本权重值,是为了加大训练中错误样本的权重,从而提高分类器对于难分类样本的重视程度。同时,通过调整样本数据组的样本权重值,也可以使分类器更加有针对性的对训练样本数据进行训练。

在本实施例中,为了比较本发明提供的改进型adaboost算法与传统的adaboost算法、朴素贝叶斯算法和smo算法,利用weka软件结合eclipse对上述改进型adaboost算法进行编译,再将编译的代码导入weka中,在weka的平台上进行运行,采用uiuc的bammextractedqueryschemas数据来进行算法测试,其中包括automobiles、books、movies和musicrecords四个领域的212条表单数据。在本实施例中,改进型算法采用朴素贝叶斯算法构建弱分类器,采用smo算法(即sequentialminimaloptimization,序列最小优化算法)构建强分类器。

如图2和图3所示,smo算法对训练集的大小比较敏感,且波动较大;而传统adaboost算法在训练时需要较高的迭代次数才能达到最优的查询率;本发明提供的改进型adaboost算法在抽取20%~80%数据集作为训练集的时候都能保持较高的查准率且迭代次数小于传统adaboost算法的一半,能够缩短因为运行两种分类算法所增加的时间,且能结合强分类器和弱分类器的优点,使得在利用不同百分比训练集的时候均具有较高的稳定性,使得本发明提供的改进型adaboost算法在对数据源分类时能够优于其他单分类器算法。

本发明提供了一种基于改进adaboost算法的数据源分类器构建方法,通过弱分类器和强分类器并行训练的方式来改进现有的adaboost算法,通过一种强弱分类器互补的概念来解决传统adaboost算法中单个弱分类器错误叠加的问题,将强弱分类器的优势互补,从而使得改进后的算法对于数据源分类更加准确,效率更高。并且通过在每一轮训练开始时,根据上一轮训练情况重置样本数据集中各个样本数据组的样本权重值,使分类器对不同样本数据进行针对性学习,进一步提高分类器的分类准确度。同时,最后根据不同分类器权重值整合最终分类器,使得最终分类器能够针对性的对各种待分类数据进行分类,再一次提高了本发明公开的分类器的分类准确度。

以上所述仅为本发明的实施例而已,并不用以限制本发明,凡在本发明精神和原则之内,所作任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1