与えられた応答変数に関する最適なビニング


11

与えられた応答(ターゲット)バイナリ変数に関して、パラメーターとして間隔の最大数を持つ連続変数の最適なビニング方法(離散化)を探しています。

例:「height」(数値連続)および「has_back_pains」(バイナリ)変数を持つ人々の一連の観察結果があります。高さを最大3つの間隔(グループ)に離散化して、背中の痛みを持つ人々の比率を変えて、アルゴリズムがグループ間の差を最大化するようにします(たとえば、各間隔には少なくともx個の観測値があるという制限があります)。

この問題の明らかな解決策は、決定木(単純な1変数モデル)を使用することですが、Rで「最大分岐数」をパラメーターとして持つ関数を見つけることができません。それらすべてが変数を分割します。 2 gropus(<= x and> x)に。SASマイナーには「最大ブランチ」パラメーターがありますが、私は非商用ソリューションを探しています。

一部の変数には一意の値がわずかしかありません(離散変数として扱うこともできます)が、それらを同様に少数の間隔に離散化したいと考えています。

私の問題に最も近い解決策は、Rのsmbinningパッケージ(パーティパッケージのctree関数に依存)に実装されていますが、2つの欠点があります。間隔の数を設定することはできません(ただし、変更することで回避策を見つけることができます) pパラメータ)。データベクトルの一意の値が10未満の場合は機能しません。とにかく、ここで出力例を見ることができます(カットポイントとオッズ列は重要です):

Cutpoint CntRec CntGood CntBad CntCumRec CntCumGood CntCumBad PctRec BadRate   Odds  LnOdds     WoE     IV
1   <= 272   9081     169   8912      9081        169      8912 0.1874  0.9814 0.0190 -3.9653 -0.6527 0.0596
2   <= 311   8541     246   8295     17622        415     17207 0.1762  0.9712 0.0297 -3.5181 -0.2055 0.0068
3   <= 335   2986     163   2823     20608        578     20030 0.0616  0.9454 0.0577 -2.8518  0.4608 0.0163
4  Missing  27852    1125  26727     48460       1703     46757 0.5747  0.9596 0.0421 -3.1679  0.1447 0.0129
5    Total  48460    1703  46757        NA         NA        NA 1.0000  0.9649 0.0364 -3.3126  0.0000 0.0956

ああ、私はビニングによって情報が失われることと、より良い方法があることを十分に承知していますが、これをデータの視覚化に使用し、それらの変数を因子として扱います。


SPSSにはOptimal Binningコマンドがあります。グーグルSPSS Algorithms Optimal Binning
ttnphns 2015

あなたがこの記事見てきたstackoverflow.com/questions/7018954/...を、情報価値の使用に言及したが、それは= 1 IVによって何を意味するかクリアしていない、またはことを取得する方法を説明していない
アダム

回答:


6

この本を読んでいる間、ここで(Nagarajanは、2103年には、[1])、私はこの貴重な情報に出くわした私は臆面もなくここに引用していますということ:

  • データに関する事前知識を使用する。間隔の境界は、特定の汚染物質(不在、危険、致命的)または年齢クラス(子供、大人、高齢者)の濃度など、著しく異なる実際のシナリオに対応するように、変数ごとに定義されます。

  • ネットワークの構造を学習する前にヒューリスティックを使用します。いくつかの例は、Sturges、Freedman-Diaconis、またはScottルールです(Venables and Ripley、2002)。

  • 精度と情報の損失のバランスを取るために間隔の数とその境界を選択する(KohaviおよびSahami、1996)。これも、一度に1つの変数であり、ネットワーク構造が学習される前です。変数のペアを考慮した同様のアプローチがHartemink(2001)に示されています。

  • 改善が行われなくなるまで繰り返し学習と離散化を実行する(Friedman and Goldszmidt、1996)。

これらの戦略は、元のデータの離散表現の精度と変換の計算効率の間のさまざまなトレードオフを表しています。

この情報は、パッケージを直接使用するのではなく、使用したいビニング方法を正当化する場合に提供されます。

[1]:Nagarajan R.(2013)、
Rのベイジアンネットワーク、システム生物学
スプリンガーのアプリケーション


3

Rの情報パッケージを試してください 。https //cran.r-project.org/web/packages/Information/Information.pdf https://cran.r-project.org/web/packages/Information/vignettes/Information-vignette .html

情報パッケージには、WoEとIVを計算する機能があり(ビンの数は柔軟なパラメーターで、デフォルトは10です)、データ探索やビニングに便利な手段です。ただし、出力にはオッズは含まれません。ゼロを個別のビンとして指定することはできません(私のタスクでは、ゼロは多くの場合、それ自体が有効なビンです)。また、smbinningのような情報パッケージから出力を取得するのもよいでしょう。ただし、Informationパッケージの便利な機能はまだ使用できないと言われていますが、WoEおよびIV(woe、klaR)用の他のRパッケージは、Informationパッケージほど有用な手段ではありませんでした。 2〜3回試行した後、それらを実行できませんでした。dscretization / binningのタスクでは、Informationとsmbinningパッケージがうまく連携し、

実際のビニングでは、cut()関数の代わりにdata.tableを使用しました。以下の私の投稿へのリンクを参照してください。最初の質問の一番下に一般的なコードが含まれています。https//stackoverflow.com/questions/34939845/binning-variables-in-a-dataframe-with-input-bin-data- from-another-dataframe

それが役に立てば幸い。


@ kjetil、kjetil b halvorsen、あなたは正しい。情報パッケージには、WoEとIVを計算する機能があり(ビンの数は柔軟なパラメーターで、デフォルトは10です)、データ探索とビニングの結果として便利です。ただし、出力にはオッズは含まれません。また、個別のビンとしてゼロを指定することはできません(私のタスクでは、ゼロは多くの場合、それ自体が有効なビンです)。WoEとIV(woe、klaR)用の他のRパッケージは、Informationパッケージほど有用な楽器の印象を与えませんでした。したがって、情報パッケージとsmbinningパッケージは、組み合わせとしてうまく機能します。
Akonza 2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.