一方でAN6U5は非常に良い答えを与えている、私は今後の参考のためにいくつかのポイントを追加したいです。One Hot Encoding(OHE)とLabel Encodingを検討する場合、どのモデルを構築しようとしているかを理解する必要があります。つまり、検討するモデルの2つのカテゴリは次のとおりです。
- ツリーベースのモデル:勾配ブースト決定木とランダムフォレスト。
- 非ツリーベースのモデル:線形、kNNまたはニューラルネットワークベース。
ツリーベースのモデルを構築する際に、OHEをいつ適用し、ラベルエンコーディングをいつ適用するかを考えてみましょう。
OHEは次の場合に適用されます。
- ラベルエンコーディングで互いに近い値が、閉じていないターゲット値に対応する場合(非線形データ)。
- カテゴリー機能が順序(dog、cat、mouse)ではない場合。
次の場合にラベルエンコーディングを適用します。
- カテゴリの特徴は序数です(Jr. kg、Sr。kg、小学校、高校など)。
- 類似したカテゴリに近いラベルを割り当てるラベルエンコーダーを思い付くことができる場合:これにより、房の尖りが少なくなり、実行時間が短縮されます。
- データセット内のカテゴリフィーチャの数が膨大な場合:膨大な数の値を使用してカテゴリフィーチャをワンホットエンコードすると、(1)メモリ消費が大きくなり、(2)モデルで非カテゴリフィーチャがほとんど使用されない場合があります。スパース行列を使用する場合、最初のケースに対処できます。2番目のケースは、機能のサブセットのみを使用してツリーを構築する場合に発生する可能性があります。たとえば、9つの数値フィーチャと100の一意の値を持つ1つのカテゴリがあり、そのカテゴリフィーチャをワンホットエンコードした場合、109のフィーチャが取得されます。ツリーが機能のサブセットのみで構築されている場合、最初の9つの数値機能はほとんど使用されません。この場合、このサブセットのサイズを制御するパラメーターを増やすことができます。xgboostでは、sklearnのRandom Forest max_featuresではcolsample_bytreeと呼ばれます。
@ AN6U5が示唆するように、OHEを続行したい場合は、PCAをOHEと組み合わせることができます。
非ツリーベースのモデルを構築する際に、OHEとラベルエンコーディングをいつ適用するかを検討します。
ラベルエンコーディングを適用するには、ラベルエンコーディングを効果的に使用するために、機能とターゲット間の依存関係が線形でなければなりません。
同様に、依存関係が非線形である場合、同じためにOHEを使用することができます。
注:説明の一部は、コースラのデータサイエンスコンペティションに勝つ方法から参照されています。