本发明涉及模式识别技术领域,尤其涉及针对不平衡分类问题的集成模型。
背景技术:
模式识别是研究利用计算机来模仿或实现人类或其它动物的识别能力,以便对研究对象完成自动识别的任务。近年来,模式识别技术已被广泛应用在人工智能、机器学习、计算机工程、机器人学、神经生物学、医学、侦探学以及考古学、地质勘探、宇航科学和武器技术等许多重要领域。近十年来,在模式识别领域中,不平衡问题收到了广泛的关注。因为在现实生活中获取的数据大多数不平衡的,例如医疗数据,门禁数据,邮件数据等等。然而不平衡问题对传统分类器而言是个巨大的挑战。因为基于全局最优的传统方法往往会过于偏重多数类,而忽略了重要的少数类的分类准确率。为了能够解决不平衡问题,相关的方法能够分类数据层面和算法层面两类。其中数据层面包含下采样,上采样和混合采样,而算法层面则包含集成学习,代价敏感学习等。
使用集成学习来解决不平衡问题往往是与数据采样或者代价敏感相结合的。这些基于采样的集成方法以不同的集成、采样的交叉策略又能进一步分为基于不同采样模式的bagging集成,boosting集成以及混合集成的策略。这些方法在集成领域都已经有了不少代表性的算法。集成算法结合代价敏感,一般是基于boosting策略的。其中典型的方法是与adaboost结合的adacost,adac系列,csb和rareboost等。
然而,基于数据预处理的集成算法并不能很好地弥补多数类的信息缺失,而代价敏感则受到boosting集成框架的限制,难以进一步扩展。一种经典的集成策略叫做堆叠集成(stacking)在近几年发展迅速,表现抢眼。在深度学习领域有densenet,深度堆叠网络(dsn)等。而近期的深度森林,也是基于堆叠的理念而实现的。相比起其他集成策略,堆叠集成的性能更强,而训练时间也更长,并有理论支持其集成结果能够优于最优的基分类器。而本发明的内容则是将堆叠集成运用于不平衡问题的处理,并且在数据和特征层面同时引入代价敏感,使得新构筑的基于特征逆映射的代价敏感堆叠集成学习框架不但能够解决不平衡分类问题,更能使得模型得到更加合理的分类阈值。
技术实现要素:
针对现存的集成算法无法有效解决不平衡问题,本发明通过结合堆叠集成以及代价敏感,提出了一种基于特征逆映射的代价敏感堆叠集成学习框架。该堆叠集成模型有效利用了样本和特征双重层面的代价敏感得到了合理的分类阈值,同时利用stacking集成的特性有效降低了模型的偏差,并且节省了训练的参数选择时间。
本发明解决其技术问题所采用的技术方案:在预处理阶段,后台根据具体问题描述,将采集到的样本转化成可以供该系统处理的向量模型;在训练过程中,首先使用多个基分类器对数据集进行训练;通过堆叠集成学习(stacking)的方法,将基分类器交叉验证得到的置信度进行堆叠从而形成新的特征集;对新的特征集进行特征逆映射,并得到逆映射后的新特征集;最后,使用代价敏感逻辑回归对逆映射后的特征集进行训练。在测试过程中,将测试数据集输入所得的堆叠模型中,堆叠得到的特征无需进行逆映射的操作。
本发明解决其技术问题所采用的技术方案还可以进一步细化。所述训练步骤的第一阶段,基分类器为随机森林,极限森林,梯度树,线性判别分析以及逻辑回归。基分类器能够有更多的拓展,考虑到问题的解释性以及方法的实现难易程度,本实验中只选择了上述5种作为基分类器,并且将决策树和线性分类器的堆叠也能有效提升分类性能。同时在测试和验证过程中,本发明使用多数类和少数类的平均准确率作为评价指标以客观地体现算法的性能。
本发明有益的效果是:通过设计一个堆叠集成模型,将堆叠集成和代价敏感结合解决不平衡分类问题;充分利用代价敏感的特性得到合理的分类阈值;运用堆叠集成交叉验证的特性缩减了超参数选择的时间复杂度。
附图说明
图1是本发明的算法流程图。
图2是交叉验证堆叠的详细过程图。
具体实施方式
下面结合附图和实例对本发明作进一步介绍:本发明所设计的系统共分四个模块。
第一部分:数据采集
数据采集过程是将现实样本数据化,生成向量表示的数据集便于后续模块进行处理。在该步骤中,将采集到的样本分为训练样本与测试样本。先处理训练样本。一个训练样本生成一个向量
第二部分:训练分类模型
在这个模块中,上一模块生成的训练样本矩阵d将被代入发明的核心算法中进行训练。主要步骤如下:
1)分别使用随机森林,极限森林,梯度树,线性判别分析以及逻辑回归作为基分类器对数据集进行训练:随机森林中使用cart树作为子分类器,cart每次叶节点分裂时从d个特征中随机选择k个特征参与gini指数的判别,k通常为
其中
来最大化类间距离,最小化类内距离。其中sb是类间协方差矩阵,而sw则为类内协方差矩阵。逻辑回归则是通过最大化对数似然得到
优化算法往往是梯度下降。
2)通过堆叠集成学习(stacking)的方法,将基分类器交叉验证得到的置信度进行堆叠从而形成新的特征集:在堆叠集成过程中,为了避免类标泄露从而导致的过拟合现象,通常会对训练集进行交叉验证。本实验中使用的是5折交叉验证,具体即为将训练集分为5份,使用4份训练,推断1份的数据作为结果,重复5次最终拼接得到新特征集p。在测试过程中,使用的训练集是整体的训练集d。
从上述的5个基分类器中得到的输出置信度将其作为新的特征进行堆叠。其中,决策树类算法(随机森林,极限森林,梯度树)的置信度计算为
可以直观理解为叶节点中所属类别y′样本比例的均值。而线性分类器(线性判别分析,逻辑回归)的置信度计算为
3)对新的特征集进行特征逆映射,并得到逆映射后的新特征集:假设通过堆叠得到的新特征集为p,通过对p进行指数变化p′=pk,k∈(0,2),得到最优的平均对数损失
其中xmaj,nmaj表示多数类样本及其数量,xmin,nmin表示少数类样本及其数量。得到最优lossmean的指数记为
由于在测试阶段不会进行特征逆映射,因此测试集与训练集的差异性能够使得模型能够在训练时学习到更理想的分类阈值。
4)使用代价敏感逻辑回归对逆映射后的特征集进行训练:对特征逆映射得到的特征集
其推导公式包括但不局限于
其中cmaj和cmin分别代表多数类和少数类的代价,本发明进行的实验中cmaj=1
第三部分:测试未知数据
该模块首先将第一模块中随机划分出的另一半样本作为测试样本构成测试样本矩阵,其中训练集和测试需要满足同概率分布的前提。要特别注意的是,测试过程中无需进行特征逆映射,因为正是训练集和测试集特质差异性使其对不同分类阈值足够敏感,从而能够更好地解决不平衡分类问题。
实验设计
1)实验数据集选取:该实验选择了30个keel经典不平衡数据集。选取数据集的特征数,规模,不平衡率如下
所有使用的数据集均采用5轮交叉验证进行检验,即将数据集打乱均等分为5份,每次训练使用其中4份进行训练,1份用于测试,并且总共进行5轮。即所有数据都会作为测试集参与测试。
2)对比模型:该发明所提出的系统命名为imcstacking,仅基于决策树集成和线性分类器的stacking算法分别为fcstacking和lcstacking,没有特征逆映射的imcstacking则退化为flcstacking。另外,还选择了代价敏感逻辑回归(clr),随机下采样bagging/boosting随机森林(rusbagging-rf,rusboost-rf)以及混合集成easyensemble作为对比。
3)参数选择:imcstacking的k取值范围为{[0.6,0.7,0.8,0.9],[1.1,1.2,1.3,1.4]}两个集合,由于k能够在训练的时候决定最优,因此复杂度不会随参数增加而增加。随机森林的cart树个数为50,bagging,boosting和easyensemble的集成次数均为10。
4)性能度量方法:实验统一使用多数类和少数类的平均准确率m-acc作为评价标准。
实验结果
所有模型在各keel数据集上的m-acc结果如下表。表中的最后一行表示所提出的imcstacking与该算法比较的胜负情况,倒数第二行表示该算法的平均排名,倒数第三行是它们的平均m-acc,黑色字体表示最优的结果。
stacking相关算法单轮的训练时间如下(单位:秒)
从第一张表中可以发现本发明imcstacking能够在大多数数据集中得到最优的结果,性能显然超过了其他的bagging,boosting集成算法。如果移除了特征逆映射,flcstacking的效果显然要低于imcstacking,而两者的时间复杂度却在第二张表中相差无几。这证明了特征层面的代价敏感是有效的。此外,单一决策树集成和线性集成的算法效果均不如两者的结合,可以说明决策树和线性分类器的集成能够互补,其多样性是有价值的。