主要内容

不平衡数据分类

这个例子展示了当一个类比另一个类有更多的观察值时,如何执行分类。您使用RUSBoost首先是算法,因为它是为处理这种情况而设计的。处理不平衡数据的另一种方法是使用名称-值对参数“先前的”“成本”。有关详情,请参阅在分类系统中处理不平衡的数据或不相等的误分类成本

本例使用UCI机器学习档案中的“封面类型”数据,如中所述https://archive.ics.uci.edu/ml/datasets/Covertype。该数据根据海拔、土壤类型和距水距离等预测值对森林(地面覆盖)类型进行分类。该数据有超过500000个观测值和50个预测值,因此训练和使用分类器非常耗时。

布莱克德和迪恩[1]描述这个数据的神经网络分类。他们引用了70.6%的分类准确率。RUSBoost获得81%以上的分类准确率。

获取数据

将数据导入到工作区。将最后一个数据列提取到一个名为Y

gunzip (“https://archive.ics.uci.edu/ml/machine-learning-databases/covtype/covtype.data.gz”)装载covtype.dataY = covtype(:,结束);covtype(:,结束)= [];

检查响应数据

表格(Y)
1 211840 36.46% 2 283301 48.76% 3 35754 6.15% 4 2747 0.47% 5 9493 1.63% 6 17367 2.99% 7 20510 3.53%

有几十万个数据点。第4类的数据点不到总数的0.5%。这种不平衡表明RUSBoost是一个合适的算法。

为质量评估划分数据

使用一半的数据来拟合分类器,另一半用来检查结果分类器的质量。

rng (10,“旋风”%为了再现性= cvpartition (Y,一部分“坚持”, 0.5);istrain =培训(部分);%拟合数据坚持=测试(部分);%质量评估数据汇总(Y (istrain))
值计数百分比1 105919 36.46% 2 141651 48.76% 3 17877 6.15% 4 1374 0.47% 5 4747 1.63% 6 8684 2.99% 7 10254 3.53%

创建合奏

使用深树以获得更高的集成精度。为此,将树设置为具有最大数量的决策分割N,在那里N是训练样本中的观察数。集合LearnRate0.1为了获得更高的精度,数据量很大,而且由于树很深,创建集合非常耗时。

N =总和(istrain);%训练样本中观测次数t=模板树(“MaxNumSplits”N);tic rusTree = fitcensemble(covtype(istrain,:),Y(istrain)),“方法”“俄罗斯助推”...“NumLearningCycles”, 1000,“学习者”T“LearnRate”, 0.1,“nprint”,100);
训练增强。。。成长弱势学习者:100名成长弱势学习者:200名成长弱势学习者:300名成长弱势学习者:400名成长弱势学习者:500名成长弱势学习者:600名成长弱势学习者:700名成长弱势学习者:800名成长弱势学习者:900名成长弱势学习者:1000名
toc
运行时间为242.836734秒。

检查分类误差

将分类误差与集合中成员的数量进行对比。

图;tic图(损失(锈树型、covtype(istest,:)、Y(istest),“模式”“累积的”));toc
运行时间为164.470086秒。
网格在…上;包含(树木的数量);ylabel (“测试分类错误”);

使用116棵或更多的树,集成的分类误差小于20%。对于500棵或更多的树,分类误差以较慢的速度减小。

检查每个类别的混淆矩阵作为真实类别的百分比。

tic Yfit=预测(锈树型、共价型(istest,:);总有机碳
运行时间为132.353489秒。
Yfit confusionchart (Y(是),“归一化”“行规范化”“RowSummary”“行规范化”

除第2类外,所有类的分类准确率均在90%以上。但是第二类数据占了近一半,所以总体的准确性不是那么高。

紧凑的合奏

这群人很大。方法删除数据契约方法。

cmpctRus=紧凑型(锈树);sz(1)=whos(“rusTree”);深圳(2)=谁(“cmpctRus”);[sz(1).字节sz(2).字节]
ans =1×2109×1.6579 - 0.9423

压缩的整体大约是原始的一半大小。

把一半的树从树上移开cmpctRus.这一操作对预测性能的影响可能很小,根据观察,1000棵树中有500棵提供了几乎最优的准确性。

cmpctRus = removeLearners (cmpctRus [500:1000]);深圳(3)=谁(“cmpctRus”);深圳(3).bytes
ans = 452868660

简化后的紧凑集成大约占用整个集成的四分之一内存。总体损失率低于19%:

L =损失(cmpctRus covtype(是:),Y(坚持))
L = 0.1833

对新数据的预测精度可能不同,因为总体精度可能存在偏差。产生偏差的原因是用于评估集成的相同数据被用于减少集成大小。为了获得对所需集成大小的无偏估计,您应该使用交叉验证。然而,这个过程很耗时。

工具书类

布莱克沃德,J. A.和D. J.迪恩。“人工神经网络和判别分析在从地图变量预测森林覆盖类型中的比较精度”。农业中的计算机与电子学1999年第24卷第3期131-151页。

另请参阅

||||||||||

相关话题