主要内容

处理不平衡数据分类合奏中或不平等的误分类成本

在许多应用程序中,您可能倾向于治疗类数据进行不对称。例如,数据可能会有更多的观察比其他任何一个类。或一个类有多个分类的观察比分类观察另一个类的严重后果。在这种情况下,您可以使用RUSBoost算法(指定“方法”作为“RUSBoost”)或使用名称-值对的论点“之前”“成本”fitcensemble

如果某些类是弱势或在你的训练集,过多使用“之前”名称-值对的论点或RUSBoost算法。例如,假设您通过仿真获得你的训练数据。因为模拟类一个比模拟类更贵B,你选择生成更少的观察类一个和更多的观察类B。然而,期望是类一个和类B以不同的比例混合现实(nonsimulated)的情况。在这种情况下,使用“之前”设置类的先验概率一个B约您期望的值观察实际情况。的fitcensemble函数可实现先验概率,使它们加起来1。所有的先验概率乘以相同的积极因素不会影响分类的结果。处理不平衡数据的另一种方法是使用RUSBoost算法(“方法”、“RUSBoost”)。您不需要使用这个算法时调整先验概率。有关详细信息,请参见随机采样提高与不平衡数据分类

如果类中充分体现培训数据,但是你想把他们不对称,使用“成本”名称-值对的论点。假设您想分类癌症患者的良性和恶性肿瘤。未能识别恶性肿瘤(假阴性)的严重后果远远大于识别错良性,恶性(假阳性)。你应该分配识别错恶性,良性的高成本和低成本识别错良性恶性。

你必须通过误分类成本与非负元素作为一个方阵。元素C (i, j)这个矩阵的分类的成本是一个观察到类j如果真正的类。对角线元素C(我)矩阵必须的费用0。对于前面的示例,您可以选择恶性肿瘤类1和良性肿瘤类2。然后你可以设置成本矩阵

( 0 c 1 0 ]

在哪里c> 1的成本识别错恶性肿瘤是良性的。成本都relative-multiplying成本同样的积极因素不会影响分类的结果。

如果你只有两类,fitcensemble调整他们的先验概率 P ˜ = C j P 为类= 1,2jP先验概率要么传递到吗fitcensemble在训练数据或从类频率计算,和 P ˜ 调整先验概率。fitcensemble使用概率调整培训其脆弱的学习者和不使用成本矩阵。操纵成本矩阵从而相当于操纵先验概率。

如果你有三个或更多的类,fitcensemble也将投入成本转化为先验概率调整。这种转换是更复杂的。首先,fitcensemble试图解决一个矩阵方程描述的周和刘[1]。如果不能找到一个解决方案,fitcensemble适用于描述的“平均成本”调整Breiman et al。[2]。有关更多信息,请参见Zadrozny、朗格弗德和安倍[3]

火车合奏与不平等的分类成本

这个例子展示了如何训练一个分类树的不平等的分类成本。这个示例使用肝炎患者数据,看看他们是死是活的疾病。在描述的数据集UCI机器学习数据存储库

读肝炎UCI数据集的存储库作为字符数组。然后将结果转换成特征向量的单元阵列使用textscan。指定一个单元阵列包含变量名称的特征向量。

选择= weboptions (“ContentType”,“文本”);肝炎= textscan (webread ([“http://archive.ics.uci.edu/ml/”“machine-learning-databases /肝炎/ hepatitis.data”),选择),“% % % f % f % % % f % f % % % f % f % % % f % f % % % f % f ',“分隔符”,”、“,“EndOfLine”,' \ n ',“TreatAsEmpty”,“?”);大小(肝炎)
ans =1×21 20
VarNames = {“dieOrLive”“年龄”“性”“类固醇”抗病毒药物的“疲劳”“不舒服”“厌食症”“liverBig”“liverFirm”“脾”“蜘蛛”腹水的“静脉曲张”胆红素的“alkPhosphate”“血清谷”白蛋白的“protime”组织学的};

肝炎是1-by-20单元阵列的特征向量。对应的细胞响应(liveOrDie异构预测)和19。

指定包含预测的数值矩阵和向量包含一个细胞“死”“生活”响应的类别。响应包含两个值:1表明一个病人死了,2表明一个病人住。指定一个单元阵列响应使用响应类别的特征向量。第一个变量肝炎包含响应。

X = cell2mat(肝炎(2:结束));一会= {“死”“生活”};Y =一会(肝炎{:1});

X是一个数字矩阵包含19个预测因子。Y是一个单元阵列特征向量包含响应。

检查数据缺失值。

图barh(总和(isnan (X), 1) /尺寸(X, 1) h = gca;h。YTick = 1:numel(VarNames) - 1; h.YTickLabel = VarNames(2:end); ylabel(“预测”)包含(缺失值的分数)

大多数预测有缺失值,有近45%的缺失值。因此,使用决策树代理分割的准确性。因为数据集是小,培训时间与代孕应该容许分裂。

创建一个分类树模板,使用代理分裂。

rng (0,“旋风”)%的再现性t = templateTree (“代孕”,“所有”);

检查数据或数据的描述看到分类的预测因子。

:X (1:5)
ans =5×1930.0000 2.0000 1.0000 2.0000 2.0000 2.0000 2.0000 1.0000 2.0000 2.0000 2.0000 2.0000 2.0000 1.0000 85.0000 18.0000 4.0000南1.0000 50.0000 1.0000 1.0000 2.0000 1.0000 2.0000 2.0000 1.0000 2.0000 2.0000 2.0000 2.0000 2.0000 0.9000 135.0000 42.0000 3.5000南1.0000 78.0000 1.0000 2.0000 2.0000 1.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 - 2.0000 2.0000 - 0.7000 31.0000 - 1.0000 1.0000 96.0000 32.0000 4.0000南南1.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 0.7000 46.0000 52.0000 4.0000 80.0000 1.0000 34.0000 1.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 1.0000 200.0000 - 4.0000 2.0000 2.0000 1.0000南南

看来,预测2到13直言,以及预测19。你能确认这个推理使用数据集描述UCI机器学习数据存储库

分类变量列表。

catIdx = (13、19);

创建一个旨在使用50学习者和合奏GentleBoost算法。

合奏= fitcensemble (X, Y,“方法”,“GentleBoost”,“NumLearningCycles”,50岁,“学习者”t“PredictorNames”VarNames(2:结束),“LearnRate”,0.1,“CategoricalPredictors”catIdx,“KFold”5);

检查混淆矩阵看到哪些病人整体预测正确。

[yFit, sFit] = kfoldPredict(套装);yFit confusionchart (Y)

123病人生活的整体预测正确,116年将生活。但是32名患者死于肝炎,乐团唯一的正确预测,大约有一半将死于肝炎。

有两种类型的错误预测的合奏:

  • 预测病人的生命,但是病人死亡

  • 预测,病人死了,但病人的生活

假设你相信第一个错误是比第二个五倍。创建一个新的分类成本矩阵反映了这一信念。

成本。ClassNames = ClassNames; cost.ClassificationCosts = [0 5; 1 0];

创建一个新的旨在合奏成本误分类代价,并检查结果混淆矩阵。

EnsembleCost = fitcensemble (X, Y,“方法”,“GentleBoost”,“NumLearningCycles”,50岁,“学习者”t“PredictorNames”VarNames(2:结束),“LearnRate”,0.1,“CategoricalPredictors”catIdx,“KFold”5,“成本”、成本);[yFitCost, sFitCost] = kfoldPredict (EnsembleCost);yFitCost confusionchart (Y)

正如预期的那样,新乐团做得更好分类的病人死亡。有点令人惊讶的是,新乐团也更好地分类的病人生活,虽然结果不是统计学上显著更好。交叉验证的结果是随机的,所以这个结果是一个简单的统计涨落。结果似乎表明,病人的分类生活成本不是很敏感。

引用

[1]周,Z.-H。,X.-Y。刘。“厂商参与学习。”计算智能。问题3卷。26日,2010年,页232 - 257 CiteSeerX。

[2]Breiman, L。,J. H. Friedman, R. A. Olshen, and C. J. Stone.分类和回归树。博卡拉顿FL:查普曼&大厅,1984。

[3]Zadrozny B。,J. Langford, and N. Abe. “Cost-Sensitive Learning by Cost-Proportionate Example Weighting.”第三IEEE国际会议数据挖掘,435 - 442。2003年。

另请参阅

||||

相关的话题