●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 件のコメント:
コメントを投稿