まれなイベント予測モデルのオーバーサンプリングによるバギング


13

次のものが記述されているかどうか、また(どちらにしても)ターゲット変数が非常に不均衡な予測モデルを学習するためのもっともらしい方法のように聞こえるかどうか、誰もが知っていますか?

データマイニングのCRMアプリケーションでは、多くの場合、ポジティブイベント(成功)が多数派(ネガティブクラス)に比べて非常にまれなモデルを探します。たとえば、肯定的な興味のあるクラス(例:顧客が購入した)が0.1%だけである500,000のインスタンスがあるとします。したがって、予測モデルを作成するための1つの方法は、データをサンプリングすることです。これにより、すべてのポジティブクラスインスタンスとネガティブクラスインスタンスのサンプルのみを保持し、ポジティブクラスとネガティブクラスの比率が1に近くなります(おそらく25%プラスからマイナス75%)。オーバーサンプリング、アンダーサンプリング、SMOTEなどはすべて、文献の方法です。

私が興味を持っているのは、上記の基本的なサンプリング戦略と、ネガティブクラスのバギングを組み合わせることです。

  • すべてのポジティブクラスインスタンスを保持する(例:1,000)
  • バランスの取れたサンプル(たとえば1,000)を作成するために、ネガティブクラスインスタンスをサンプリングします。
  • モデルを適合させる
  • 繰り返す

前にこれを行うことを聞いた人はいますか?バギングがないと思われる問題は、500,000の場合にネガティブクラスの1,000インスタンスのみをサンプリングすると、予測子スペースがまばらになり、予測子の値/パターンの表現がない可能性があることです。バギングはこれに役立つようです。

サンプルの1つに予測変数のすべての値が含まれていない場合、rpartを見て、「壊れない」ことを確認しました(これらの予測変数の値を使用してインスタンスを予測するときに壊れません:

library(rpart)
tree<-rpart(skips ~ PadType,data=solder[solder$PadType !='D6',], method="anova")
predict(tree,newdata=subset(solder,PadType =='D6'))

何かご意見は?

更新: 現実世界のデータセット(ダイレクトメール応答データのマーケティング)を取得し、それをトレーニングと検証にランダムに分割しました。618個の予測変数と1つのバイナリターゲットがあります(非常にまれです)。

Training:
Total Cases: 167,923
Cases with Y=1: 521

Validation:
Total Cases: 141,755
Cases with Y=1: 410

トレーニングセットからすべての肯定的な例(521)と、バランスの取れたサンプルに対して同じサイズの否定的な例のランダムサンプルを取りました。私はrpartツリーに適合します:

models[[length(models)+1]]<-rpart(Y~.,data=trainSample,method="class")

このプロセスを100回繰り返しました。次に、これらの100個のモデルそれぞれの検証サンプルのケースでY = 1の確率を予測しました。最終的な推定のために、100個の確率を単純に平均しました。検証セットの確率を調整し、各十分位数で、Y = 1(モデルのランキング能力を推定するための従来の方法)のケースの割合を計算しました。

Result$decile<-as.numeric(cut(Result[,"Score"],breaks=10,labels=1:10)) 

パフォーマンスは次のとおりです。 ここに画像の説明を入力してください

これをバギングなしと比較する方法を確認するために、最初のサンプルのみで検証サンプルを予測しました(すべての陽性例と同じサイズのランダムサンプル)。明らかに、サンプリングされたデータはあまりにもまばらであるか、適合しすぎて、検証サンプルを有効にするには有効ではありません。

まれなイベントと大きなnおよびpがある場合のバギングルーチンの有効性の提案。

ここに画像の説明を入力してください

回答:


7

各袋に同じポジティブクラスの例を含めることを除いて、これはS ^ 3Bagging:サブサンプリングとバギングを使用した高速分類子誘導法で説明されているS ^ 3Baggingです。(私はこの論文を詳しくレビューしていませんが、ざっと読みました。)

バギングよりもサブサンプリングとブースティングを組み合わせた方がはるかに頻繁に見られますが、理論的にはあなたのアプローチに問題はありません。

これはあなたの質問を正確に扱っていないかもしれませんが、不均衡なデータを扱うさまざまな方法に関する優れた論文はLearning In Imbalanced Dataです。コスト重視の学習があなたの場合により適切であるように見えます。意思決定フォレストを使用しているため、セクション3.2.3コスト重視の意思決定ツリーがおそらく役立つでしょう。それは述べています、

意思決定ツリーに関して、コストに敏感なフィッティングには3つの形式があります。まず、意思決定のしきい値にコストに敏感な調整を適用できます。第二に、各ノードでの分割基準にコスト重視の考慮事項を与えることができます。最後に、コストに敏感なプルーニングスキームをツリーに適用できます。

基本的に、決定しきい値に対するコスト重視の調整とは、ROCまたはPrecision-Recall Curveのパフォーマンスに基づいて決定しきい値を選択することを意味します。特に、PRCのパフォーマンスは、不均衡なデータに対して堅牢です。

コストに敏感な分割基準は、不均衡なデータを処理するために不純物関数を変更することになります。上記の論文には、

[63]では、3つの特定の不純物関数、Gini、エントロピー、およびDKMが、精度/エラー率のベースラインと比較して改善されたコスト非感受性を示すことが示されました。さらに、これらの経験的実験は、DKM関数を使用すると、一般に、ジニとエントロピーに匹敵する精度を悪化させる小さな剪定されていない決定木を生成することも示しました。これらの経験的結果の結論を説明する詳細な理論的根拠は、後で[49]で確立されました。これは、任意の唾基準の選択に対する決定木の成長の影響を一般化します。

剪定に関しては、

ただし、不均衡なデータが存在する場合、プルーニング手順では、少数概念を説明する葉を削除する傾向があります。不均衡なデータから誘導された剪定ツリーはパフォーマンスを低下させる可能性がありますが、そのような場合に剪定されていないツリーを使用してもパフォーマンスは向上しません[23]。その結果、各ノードでクラス確率推定を改善して、枝刈りをプラスの効果で適用できるように、より代表的な決定木構造を開発することに注意が払われました。代表的な作品には、確率推定のラプラス平滑化法とラプラス枝刈り技術が含まれます[49]。

[23] N. JapkowiczおよびS. Stephen、「クラスの不均衡問題:体系的研究」、インテリジェントデータ分析、vol。6、いいえ。5、pp。429-449、2002。

[49] C.エルカン、「コスト重視の学習の基礎」、Proc。国際共同会議 人工知能、pp。973-978、2001。

[63] C.ドラモンドとRCホルテ、「決定木分割基準のコスト(イン)感度の活用」、Proc。国際会議 機械学習、pp。239-246、2000。


0

これは非常に興味深いです。最近、似たような状況のプロジェクトがあり、まれなイベントの検証はうまく機能しますが、最低予測範囲(0.0-0.1など)の非イベントの検証は毎月不安定に実行されます。あなたが言ったように、非イベントの人口が多いため、背後にある理由は、変数のさまざまな組み合わせをカバーするのに十分なサンプルがあるように、より多くのサンプルをトレーニングセットに含める方が良いです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.