主要内容

このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

アンサンブル分類における不均衡デ,タまたは一様ではない誤分類コストの処理

多くの応用で,デ,タのクラスを非対称的に処理したい場合があります。たとえば,あるクラスの観測値が他のクラスよりはるかに多くデ,タに含まれている場合があります。また,あるクラスの観測値を誤分類すると,別のクラスの観測値を誤分類する場合より深刻な結果になることもあります。このような場合は,RUSBoostアルゴリズムを使用(“方法”として“RUSBoost”を指定)するか,fitcensembleの名前と値のペアの引数“之前”または“成本”を使用できます。

過小または過大に表現されているクラスが学習セットに含まれている場合は,名前と値のペアの引数“之前”またはRUSBoostアルゴリズムを使用します。たとえば,シミュレ,ションによって学習デ,タを取得するとします。クラス一个のシミュレ,トはクラスBのシミュレ,トより計算負荷が高いので,クラス一个の観測値は少なく,クラスBの観測値は多く生成することにします。しかし,実際の(シミュレ,トしたのではない)状況では,クラス一个とクラスBの混合比率が異なると考えられます。このようなケ,スでは,“之前”を使用して,実際の状況で観測されると考えられる値に近づくようにクラス一个およびBの事前確率を設定します。関数fitcensembleは,合計が1になるように事前確率を正規化します。すべての事前確率に同じ正の係数を乗算しても,分類の結果に影響はありません。不均衡なデ,タを処理する方法には,RUSBoostアルゴリズム(“方法”、“RUSBoost”)を使用するものもあります。このアルゴリズムを使用する場合,事前確率を調整する必要はありません。詳細は,ランダムアンダ,サンプリングブ,スティング不均衡デ,タでの分類を参照してください。

学習デ,タでは適切に表現されているクラスを非対称的に処理するには,名前と値のペアの引数“成本”を使用します。癌患者の良性腫瘍と悪性腫瘍を分類したいとします。悪性腫瘍の特定に失敗すること(偽陰性)は,良性を悪性と誤診する(偽陽性)よりも深刻な結果をもたらします。悪性を良性と誤診する場合には高いコストを,良性を悪性と誤診する場合には低いコストを割り当てなければならないはずです。

誤分類のコストは,非負の要素をも正方行列として渡さなければなりません。この行列の要素C (i, j)は,真のクラスがである場合に,観測値をクラスjに分類するコストを表します。コスト行列C(我)の対角要素は,0でなければなりません。前の例では,悪性腫瘍をクラス1,良性腫瘍をクラス2として選択できます。この場合,コスト行列は次のように設定できます。

0 c 1 0 ]

ここで,c > 1は,悪性腫瘍を良性と誤診した場合のコストを表します。コストは相対値です。すべてのコストに同じ正因子を乗算しても,分類の結果に影響はありません。

クラスが2だけの場合,fitcensembleではI = 1,2およびJ≠Iであるクラスにいて P ˜ C j P を使用して事前確率を調整します。Pは,fitcensembleに渡した事前確率または学習デ,タのクラス頻度から計算された事前確率です。 P ˜ は,調整された事前確率です。次に,fitcensembleは既定のコスト行列を使用します。

さらに,これらの調整済みの確率を弱学習器の学習に使用します。まり,コスト行列の操作は事前確率の操作と等価です。

3 .以上のクラスを使用する場合も,fitcensembleは入力コストを調整済み事前確率に変換します。この変換はさらに複雑です。まず,fitcensembleは,周と刘の[1]で説明されている行列方程式を解こうとします。解を求めるのに失敗した場合は,fitcensembleは布雷曼などによって説明されている"平均コスト"を適用します。[2]。詳細は,扎德罗兹尼,兰福德および阿贝[3]を参照してください。

不均衡な分類コストによるアンサンブルの学習

この例では,不均衡な分類コストを使用して分類木のアンサンブルに学習をさせる方法を示します。この例では,肝炎患者に関するデータを使用して,疾病によって生存するか,または死亡するかを確認します。デタセットの説明にいては,UCI机器学习数据库を参照してください。

Uciリポジトリから肝炎のデ,タセットを文字配列として読み込みます。次に,textscanを使用して結果を文字ベクトルのcell配列に変換します。変数名が格納されている文字ベクトルのcell配列を指定します。

选项= 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列の文字ベクトルのcell配列です。セルは応答(liveOrDie)および19の異種混合予測子に対応します。

予測子が格納されている数値行列と,応答カテゴリの“死”および“生活”が格納されているcellベクトルを指定します。応答は2の値を含みます。1は患者が亡くなったことを,2は患者が生存したことを意味します。応答カテゴリを使用して,応答に対応する文字ベクトルの单元格配列を指定します。肝炎の最初の変数には応答が含まれます。

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

Xは19個の予測子が格納されている数値行列です。Yは応答が格納されている文字ベクトルのcell配列です。

欠損値にいてデタを検査します。

figure barh(sum(isnan(X),1)/size(X,1)) h = gca;h.YTick = 1:数字(VarNames) - 1;. yticklabel = VarNames(2:end);ylabel (“预测”)包含(“缺失值的比例”

ほとんどの予測子に欠損値があり,その1では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名については,実際に肝炎で死亡した患者の約半数がアンサンブルにより正しく予測されただけです。

アンサンブルによる予測で発生する誤差には,次の2のタプがあります。

  • 患者の生存を予測したにも関わらず,患者が死亡した場合

  • 患者の死亡を予測したにも関わらず,患者が生存した場合

1番目の誤差は2番目の誤差より5倍の悪影響をもたらすという前提があるとします。この前提を反映した新しい分類コスト行列を作成します。

成本。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.

参考

||||

関連するトピック