火曜日, 10月 13, 2020

【メモ】How to Win a Data Science Competition: Learn from Top Kagglers 第1週 その3

 ●categorical featureの取り扱い

Label encoding:tree-based modelでは効果を発揮する。

        しかしnon tree-based modelsでは有効に働かない。

        文字列をアルファベット順で数値に置き換えるのも

        label encoding

        sklearn.preprocessing.LabelEncoder

Order of appearance:出現順序

           pandas.factorize

           sort=Trueを指定するとアルファベット順

           (label encodingと等価)

Frequency encoding:Non tree-based modelsでも有効。

           ただし頻度が等しい値が2つあると、

           両者の区別がつかない。


One-hot encoding:Non tree-based modelsで有効。

          最小値が0、最大値が1なので既に正規化されている。

          ユニークな値が多い(各値の出現回数が1に近いものばかり)

          場合にone-hot encodingをするとほとんどが0な列が

          たくさんできるので、疎行列として扱う必要あり。

          XGBoostやLightGBMは疎行列をそのまま扱える

          (CatBoostは不可らしい

          https://cocon-corporation.com/cocontoco/ensemble-methods_sparse-matrix_memory/#index2)

複数のcategorical featureの相互作用を考慮したい

⇒2つの文字列を連結した変数を作ってからone-hot encoding

⇒linear modelやkNNで有効

0 件のコメント: