順序付けされていないカテゴリカル予測子変数のレベル数を減らす


11

SVM、ランダムフォレスト、その他の分類器などの分類器をトレーニングしたい。データセットの特徴の1つは、1000レベルのカテゴリ変数です。この変数のレベル数を減らす最善の方法は何ですか。Rで呼び出された関数があるcombine.levels()Hmiscのまれなレベルを組み合わせたパッケージが、私は他の提案を探していました。


カテゴリー変数は順不同ですか?おおよそ何件ありますか?カテゴリー変数全体の度数分布は何ですか?
Jeromy Anglim、

レベルは順序付けされていません。約10,000の観測があります。頻度分布は次のとおりです。観測値の約11%にレベルAが表示されます。レベルBは8%で表示されます。レベルcは5%で表示されます。これらのレベルの約15は、データセット内の観測値の50%をカバーしています。
sabunime、

回答:


9

これを行うための最善の方法は、実行しているタスクによって大きく異なります。そのため、タスクに依存しない方法で何が最善になるかを言うことは不可能です。

レベルが序数であれば、2つの簡単な方法があります。

  1. それらをビンに入れます。たとえば、0 =(0 250)、1 =(251 500)などです。制限を選択して、各ビンのアイテム数を等しくすることができます。
  2. レベルの対数変換を行うこともできます。これにより範囲が縮小されます。

レベルが序数でない場合は、データセット内の他の機能/変数に基づいてレベルをクラスター化し、以前のレベルをクラスターIDに置き換えることができます。これを行う方法は、クラスタリングアルゴリズムと同じくらい多くあり、フィールドは広く開かれています。私がそれを読んだとき、これは何combine.levels()をしているかです。kmeans()またはを使用して同様に行うことができますprcomp()。(その後、新しいデータポイントのクラスターを予測するように分類子をトレーニングすることができます/すべきです。)


3
カテゴリ変数を変量効果として扱う以外に、これを処理する本当に良い方法を知りません。変数に2次(リッジ)ペナルティプロセスを使用することで、これをエミュレートできます。私の回帰モデリング戦略の 本とコースノートがこれに入ります。
フランクハレル2018年

1
@FrankHarrell 2つのアプローチが思い浮かびます:POlytomous変数潜在クラス分析は1つ(cran.r-project.org/web/packages/poLCA/poLCA.pdf)、対応分析は別(例、statmethods.net / advstats / ca。 html)。
マイクハンター
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.