您的位置:首页 > 其它

提高分类准确率的技术——组合分类

2015-06-22 15:23 706 查看

组合分类方法简介

基本思想:组合分类把k个学习得到的模型(或基分类器)M1,M2,···,Mk组合在一起,旨在创建一个改进的复合分类器模型M*。使用给定的数据集D创建k个训练集D1,D2,···,Dk,其中Di用于创建分类器Mi。现在给定一个待分类的新数据元组,每个基分类器通过返回类预测进行投票。组合分类器基于基分类器的投票返回类预测。



目前常用的组合分类器有:装袋、提升和随机森林。下面就对这三种分类器依次作介绍。

装袋(bagging)

算法:装袋。装袋算法——为学习方案创建组合分类模型,其中每个模型给出等权重预测。

输入

D:d个训练元组的集合

k:组合分类器中的模型数

一种学习方案(例如,决策树算法、后向传播等)

输出:组合分类器——复合模型M∗M^*

方法

for i = 1 to k do

通过对DD有放回抽样,创建自助样本DiD_i

使用DiD_i和学习方法导出模型MiM_i

endfor

使用组合分类器对元组x分类:让k个模型都对x分类并返回多数表决

注意:这里的每个基分类器具有相同的投票权重

提升(boosting)

在提升方法中,权重赋予每个训练元组。迭代地学习kk个分类器。学习得到分类器MiM_i之后,更新权重,使得其后的分类器Mi+1M_{i+1}”更关注“MiM_i误分类的训练元组。最终提升的分类器M∗M^*组合每个个体分类器的表决,其中每个分类器投票的权重是其准确率的函数。

Adaboost(Adaptive Boosting)是一种流行的提升算法。

算法:Adaboost.一种提升算法——创建分类器的组合。每个给出一个加权投票。

输入

D:类标记的训练元组集。

k:轮数(每轮产生一个分类器)。

一种分类学习方案。

输出:一个复合模型。

方法

将D中每个元组的权重初始化为1/d1/d

for ii = 1 to do

根据元组的权重从DD中又放回抽样,得到DiD_i

使用训练集DiD_i导出模型MiM_i

计算MiM_i的错误率error(Mi)=∑dj=1wi×err(Xj)error(M_i)=\sum_{j=1}^d w_i\times err(X_j),其中,err(Xj)={0,Xj被正确分类1,Xj被误分类err(X_j)=\{_{1,X_j被误分类}^{0,X_j被正确分类},wiw_i表示元组的权重值

if error(Mi)error(M_i) > 0.5 then
//这一步的作用是为了避免所产生的分类器效果太差


转步骤3重试

endif

for DiD_i 的每个被正确分类的元组 do
// 这一步是用来更新被正确分类的元组的权重值


元组的权重wi=wi×error(Mi)1−error(Mi)w_i=w_i \times {error(M_i) \over 1-error(M_i)}

规范化每个元组的权重
//将所有元组的权重值进行规范化,规范化后的结果,会发现被正确分类的元组权重降低,而被误分类元组的权重值上升


endfor

使用组合分类器对元组x分类:

将每个类的权重初始化为0

for ii = 1 to kk do

wi=log1−error(Mi)error(Mi)w_i=log {1-error(M_i)\over error(M_i)}
//获得基分类器的权重值


c=Mi(x)c=M_i(x)
//获得基分类器的分类结果


将wiw_i加到类cc的权重
//将不同类的基分类器权重进行求和


endfor

返回具有最大权重的类

需要注意的是,这个方法存在结果复合模型对数据过分拟合的危险。

随机森林

随机森林可以使用装袋随机属性选择结合起来构建。

算法:Forest-RI.一种随机森林算法

输入

DD:类标记的训练元组集

kk:分类器中的模型树

FF:节点划分时,候选属性的个数

一种属性选择算法

输出:一个随机森林

方法

for i=1i=1 to kk do

通过对DD有放回抽样,创建自助样本DiD_i

从自主样本DiD_i的属性集合中,随机选择FF个属性作为节点划分时的候选属性

根据属性选择算法,选择节点的分裂属性,对DiD_i进行一次分裂

再次执行第3步,直到被选择的属性集都在之前的分裂中使用过,即无法再进行决策树的构建,从而得到最终的决策树模型MiM_i

endfor

随机森林对于属性个数的选择很敏感,通常选取log2d+1log_2d+1个属性。随机森林具有更快的分类速度,适合大型数据库。

类不平衡数据

类不平衡问题与代价敏感学习密切相关。传统的分类方法,将假正例和假负例的代价视为相等,所以不适合类平衡数据分类。

这里介绍四种通用的解决方案:(1)过抽样;(2)欠抽样;(3)阈值移动;(4)组合技术。第四种技术,前面已经做过介绍,下面主要对前三种技术做一下说明。注意,这里的类不平衡解决方案,都是只假定两种类别,对于多类的不平衡数据,目前还没有很好的解决措施:

过抽样

过抽样就是通过对训练集中的正元组进行重复采样,直到结果训练集包含相同个数的正元组和负元组。

欠抽样

欠抽样是通过对训练集中的多数类随机进行删除元组,直到结果训练集包含相同个数的正元组和负元组。

阈值移动

这种方法适用于对于给定输入元组返回一个连续输出值得分类器。即对于输入元组XX,这种分类器返回一个映射f(X)→[0,1]f(X)\to [0,1]作为输出。该方法不出操控训练元组,而是基于输出值返回分类决策。

对于某个阈值tt,满足f(X)≥tf(X)\ge t的元组XX被视为正的,而其他元组被视为负的。

阈值移动就是通过改变tt的值,使得稀有类的元组更容易分类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: