不均衡なデータに対する決定ツリーのトレーニング


43

私はデータマイニングが初めてであり、非常に不均衡なデータセットに対してデシジョンツリーをトレーニングしようとしています。ただし、予測精度が低いという問題があります。

データはコースを学習している学生で構成され、クラス変数はコースのステータスであり、2つの値(撤回済みまたは現在)があります。

  • 年齢
  • 人種
  • 性別
  • コース
    ...
  • コース状況

データセットには、撤回されたよりも多くの現在のインスタンスがあります。撤回されたインスタンスは、合計インスタンスの2%のみを占めます。

人が将来撤退する確率を予測できるモデルを構築したいと考えています。ただし、トレーニングデータに対してモデルをテストする場合、モデルの精度はひどいです。

データが1つまたは2つのクラスに支配されているディシジョンツリーでも同様の問題が発生しました。

この問題を解決し、より正確な分類器を構築するには、どのアプローチを使用できますか?


4
考慮すべきことの1つは、さまざまなタイプの誤った分類のペナルティ条件を変更することです。使用しているソフトウェアを言うことはありませんが、すべての優れたツリーソフトウェアにはこれを実行する方法が含まれているはずです。
ピーターフロム-モニカの復職

回答:


61

これは、分類において興味深い非常に頻繁な問題です-意思決定ツリーだけでなく、実質的にすべての分類アルゴリズムにおいて。

経験的にわかったように、いずれかのクラスの異なる数の代表で構成されるトレーニングセットは、多数派に偏った分類器になる可能性があります。同様に不均衡なテストセットに適用すると、この分類器は楽観的な精度の推定値を生成します。極端な場合、分類子はすべてのテストケースを多数決クラスに割り当て、それによって多数決クラスに属するテストケースの割合に等しい精度を達成する場合があります。これは、バイナリ分類でよく知られている現象です(当然、マルチクラス設定にも拡張されます)。

これは重要な問題です。データセットが不均衡だと、パフォーマンスの見積もりが大きくなる可能性があるためです。これは、アルゴリズムが偶然よりも優れたパフォーマンスを発揮した重要性に関する誤った結論につながる可能性があります。

このトピックに関する機械学習の文献では、基本的に3つのソリューション戦略が開発されています。

  1. 大きいクラスをアンダーサンプリングするか、小さいクラスをオーバーサンプリングすることにより、トレーニングセットのバランスを回復して、そもそもバイアスが発生しないようにすることができます。

  2. あるいは、バイアスを防ぐために、前の応答で述べたように、誤分類のコストを変更することもできます。

  3. ϕ:=12(π++π),π+π

精度とバランスの取れた精度

上記のアプローチのうち少なくとも2つを組み合わせて検討することをお勧めします。たとえば、マイノリティクラスをオーバーサンプリングして、分類器が多数派クラスに有利なバイアスを獲得しないようにすることができます。これに続いて、分類器のパフォーマンスを評価するときに、精度をバランスの取れた精度に置き換えることができます。2つのアプローチは相補的です。一緒に適用すると、元の問題を防ぎ、それに続く誤った結論を回避するのに役立ちます。

これについてフォローアップしたい場合は、文献への追加の参考文献を投稿させていただきます。


3
Broder-詳細情報をありがとう。それは本当に役に立ちました!最初はSQL Serverのデータマイニング機能を使用しようとしましたが、Rの使用に切り替えたというアドバイスに従いました。SMOTEアルゴリズムを使用してデータセットのバランスを取り直し、決定木とSVMの両方を使用しました。DTは81%のバランスのとれた精度を提供し、SVMでさらに優れています。ただし、1つの質問-rebalancdデータも含むデータセットに対してモデルをテストする必要がありますか?それとも、オリジナルのようなデータに対してテストする必要がありますか?
chrisb

2
これは聞いて素晴らしいです。あなたの質問に関して:あなたはあなたのテストデータのバランスをとりたくありません。これは、いくつかの例を2回テストする(オーバーサンプリングの場合)か、テストからいくつかの例を省略する(アンダーサンプリングの場合)ため、パフォーマンス評価にバイアスがかかります。要約すると、トレーニングセットのバランスを取り(各クロス検証フォールド内で別々に)、その後、変更されていない(潜在的に不均衡な)テストデータでテストします。
ケイBrodersen

おかげでブロダー。そうすることで、物事に別のイメージが生まれます。バランスの取れた精度は約56%に低下します。最良のモデルでは感度が17%に低下します(より良い予測を取得するために必要なクラスに対応)。オーバーサンプリングされたクラスはそのクラスであるため、これらの例は複数回カウントされるため、これは理にかなっていると思います。トレーニングデータセットのバランスを上げて、これが何らかの違いをもたらすかどうかを確認します。
chrisb

バランスのとれたデータのさまざまな割合でテストした結果、私が得ることができる最高のバランスの取れた精度は、Ada Boostで60%です。何が「良い」かを判断するのに苦労しています。私の主な目的は、コースから退学する可能性のある学生を予測することです。Withdrawがポジティブなクラスであるため、真のポジティブの数を最大限にしようとしています(つまり、感度を上げます)。データのバランスを再調整すると、これが偽陰性の数を損なうことになります。60%は、私にとってはランダムよりもはるかに良いとは思えませんが、この場合の「良い」ものに対するベースラインはありません。
chrisb

2
@chrisb、これは少し(!)遅いコメントです。接線では、Cox比例ハザード回帰(cran.r-project.org/doc/contrib/Fox-Companion/…)を試して、生徒の生存をモデル化できます。ダウンやオーバーサンプリングは必要ないかもしれません。
ジュバル

8

次の4つのアイデアは、この問題に取り組むのに役立ちます。

  1. 2PrecisionRecallPrecision+Recall

  2. デシジョンツリーの「prior」パラメータを使用して、データセット内のクラスの以前の頻度、つまり1,000,0000個のデータセットセットprior = c(0.001, 0.999)(R)に1,000個の陽性がある場合にアルゴリズムに通知します。

  3. 使用する分類関数で「重み」引数を使用して、まれな陽性ケースの誤分類のアルゴリズムを大幅にペナルティにします。

  4. 一部の分類アルゴリズム(「rpartR 」など)で「コスト」引数を使用して、真のポジティブと真のネガティブの誤分類の相対コストを定義します。当然、まれなクラスの誤分類には高いコストを設定する必要があります。

オーバーサンプリングはデータセットに依存する観測を導入し、これは統計と機械学習の両方で行われた独立性の仮定に違反するため、オーバーサンプリングには賛成しません。


2

私は最近のトピックで答えました:

私たちがしているのは、異なる比率のサンプルを選ぶことです。前述の例では、「YES」の場合は1000件、たとえば「NO」の場合は9000件になります。このアプローチは、より安定したモデルを提供します。ただし、実際のサンプル(1,000,000行のサンプル)でテストする必要があります。

より安定したアプローチを提供するだけでなく、リフトに関する措置に関する限り、モデルは一般的に優れています。

「統計のオーバーサンプリング」として検索できます。最初の結果はかなり良いです:http : //www.statssa.gov.za/isi2009/ScientificProgramme/IPMS/1621.pdf


1

@Kayの答えに追加する1番目のソリューション戦略:合成マイノリティオーバーサンプリング(SMOTE)は、通常、私の経験からのアンダーまたはオーバーサンプリングよりも優れています。多変量予測子空間にプロットされたデータポイントを使用してマイノリティクラスの合成サンプルを作成し、そのスペース上の隣接するポイント間の中間点をほぼ取り込んで新しい合成ポイントを作成し、両方のクラスサイズのバランスを取ります。(中点、アルゴリズムの詳細はここではわかりません

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