主要内容

处理分类集合中的不平衡数据或不平等错误分类代价

在许多应用程序中,您可能更喜欢不对称地对待数据中的类。例如,数据中某个类的观测值可能比其他类的观测值要多很多。或者对一类观测值错分类比对另一类观测值错分类的后果更严重。在这种情况下,您可以使用RUSBoost算法(指定“方法”作为“RUSBoost”)或使用名称-值对参数“之前”“成本”fitcensemble

如果某些类在您的训练集中代表不足或过多,请使用“之前”名称-值对参数或RUSBoost算法。例如,假设通过模拟获得训练数据。因为模拟类一个比模拟课贵吗B,你选择生成更少的类观察一个还有更多的课堂观察B.然而,期望是这样的一个和类B在真实(非模拟)情况下以不同的比例混合。在这种情况下,使用“之前”为类设置先验概率一个而且B接近于您期望在实际情况中观察到的值。的fitcensemble函数将先验概率归一化,使它们相加为1.将所有先验概率乘以相同的正因子不影响分类结果。处理不平衡数据的另一种方法是使用RUSBoost算法(“方法”、“RUSBoost”).使用此算法时,不需要调整先验概率。详细信息请参见随机欠采样增强而且不平衡数据分类

如果类在训练数据中得到了充分的表示,但您希望不对称地对待它们,请使用“成本”名称-值对参数。假设你想对癌症患者的良性肿瘤和恶性肿瘤进行分类。未能识别恶性肿瘤(假阴性)比将良性肿瘤误诊为恶性肿瘤(假阳性)的后果严重得多。你应该认为将恶性识别为良性的代价高,将良性识别为恶性的代价低。

你必须将错误分类代价传递为一个包含非负元素的方阵。元素C (i, j)这个矩阵是将观测数据分类的代价j如果真正的类是.对角线元素C(我)的代价矩阵0.对于前面的例子,您可以选择恶性肿瘤为第1类,良性肿瘤为第2类。然后可以将代价矩阵设置为

0 c 1 0

在哪里c1是将恶性肿瘤误认为良性肿瘤的代价。成本是相对的,所有成本乘以相同的正因子并不影响分类结果。

如果你只有两门课,fitcensemble调整他们的先验概率使用 P ˜ C j P 为类= 1, 2而且jP先验概率是传入的吗fitcensemble或从训练数据中的类频率计算,和 P ˜ 是调整过的先验概率。然后fitcensemble使用默认的成本矩阵

0 1 1 0

这些调整的概率用来训练弱学习者。因此,操纵成本矩阵等同于操纵先验概率。

如果你有三门以上的课,fitcensemble还将投入成本转换为调整后的先验概率。这种转换更加复杂。首先,fitcensemble试图解在Zhou和Liu中描述的矩阵方程[1].如果找不到解决办法,fitcensemble应用Breiman等人描述的“平均成本”调整。[2].欲了解更多信息,请参阅Zadrozny, Langford和Abe[3]

具有不等分类代价的列车集合

这个例子展示了如何训练具有不等分类代价的分类树集合。本例使用肝炎患者的数据来查看他们是否因该疾病而生存或死亡。数据集描述在UCI机器学习数据库

从UCI存储库中将肝炎数据集作为字符数组读取。然后将结果转换为字符向量的单元格数组textscan.指定包含变量名的字符向量的单元格数组。

选项= weboptions(“ContentType”“文本”);* * * * * * * * * * *“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 × 20单元格数组。细胞对应于响应(liveOrDie)和19个异质预测因子。

指定包含预测器的数值矩阵和包含的单元格向量“死”而且“生活”,这是响应类别。响应包含两个值:1说明病人死了,而且2表明患者存活。使用响应类别为响应指定字符向量的单元格数组。第一个变量肝炎包含响应。

X = cell2mat(肝炎(2:end));ClassNames = {“死”“生活”};Y = ClassNames(肝炎{:,1});

X是一个包含19个预测因子的数值矩阵。Y包含响应的字符向量的单元格数组。

检查数据中缺失的值。

figure barh(sum(isnan(X),1)/size(X,1)) h = gca;h.YTick = 1:数字(VarNames) - 1;. 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.700046.0000 520.000 4.0000 80.000 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 NaN

预测因子2到13似乎是分类的,预测因子19也是。您可以使用的数据集描述来确认此推断UCI机器学习数据库

列出分类变量。

catIdx = [2:13,19];

创建一个使用150个学习器和GentleBoost算法。

集合= fitcensemble(X,Y,“方法”“GentleBoost”...“NumLearningCycles”, 150,“学习者”t“PredictorNames”VarNames(2:结束),...“LearnRate”, 0.1,“CategoricalPredictors”catIdx,“KFold”5);图绘制(kfoldLoss(合奏,“模式”“累积”“LossFun”“指数”)包含(“树的数量”) ylabel (“交叉验证的指数损失”

检查混淆矩阵,看看集合预测正确的病人。

[yFit,sFit] = kfoldPredict(集合);yFit confusionchart (Y)

在存活的123名患者中,整体预测正确,112人将存活。但对于死于肝炎的32名患者,整体只正确地预测了大约一半人将死于肝炎。

在集合的预测中有两种类型的误差:

  • 预测病人能活下来,但病人会死

  • 预测病人会死,但病人却活了下来

假设你认为第一个错误比第二个错误严重五倍。创建一个新的分类成本矩阵来反映这一信念。

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

使用。创建一个新的交叉验证集成成本作为误分类代价,并检查得到的混淆矩阵。

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

正如预期的那样,新的集成系统在对死亡患者进行分类方面做得更好。有些令人惊讶的是,新的集合在分类存活患者方面也做得更好,尽管结果在统计上并没有显著改善。交叉验证的结果是随机的,所以这个结果只是一个统计涨落。结果似乎表明,住院患者的分类对费用不是很敏感。

参考文献

[1]周振华。和X.-Y。刘。《论多课成本敏感学习》计算智能。Vol. 26,第3期,2010,pp. 232-257。

[2]布雷曼,L. J. H.弗里德曼,R. A.奥尔申和C. J.斯通。分类和回归树。佛罗里达州博卡拉顿:查普曼和霍尔,1984年。

[3]扎德罗兹尼,B.朗福德和N.亚伯。“成本敏感学习的成本比例示例加权。”第三届IEEE数据挖掘国际会议, 435 - 442。2003.

另请参阅

||||

相关的话题