二値分類を超えて
もちろん、二値分類は特殊なケースのひとつにすぎません。ターゲットエンコーディングはあらゆる種類の目的変数に適用できます。
- 二値分類 では、通常はターゲットの平均によるエンコーディングを用います
- 回帰 では、平均の代わりに中央値や四分位点などを用いることができます
- 多クラス分類 では、クラス数 N に対して、one-vs-all 方式で各カテゴリのターゲット平均を用いた特徴量を N 個作成します
あなたが作成した mean_target_encoding() 関数は、上記のどの目的変数タイプにも利用できます。今回は、Kaggle の House Prices コンペティションを例に、回帰問題に適用してみましょう。
目標は、カテゴリカル特徴量 "RoofStyle" を平均ターゲットエンコーディングで変換することです。train と test の各 DataFrame はワークスペースにすでに用意されています。
この演習はコースの一部です
Pythonで挑むKaggleコンペティション
演習の手順
mean_target_encoding()の呼び出しで不足しているパラメータをすべて指定してください。目的変数名は"SalePrice"、ハイパーパラメータ \(\alpha\) は 10 に設定します。trainとtestパラメータには、学習用とテスト用の各 DataFrame を渡すことを思い出してください。targetとcategoricalパラメータには、目的変数名とエンコード対象の特徴量名を指定します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Create mean target encoded feature
train['RoofStyle_enc'], test['RoofStyle_enc'] = mean_target_encoding(train=train,
test=____,
target='____',
categorical='____',
alpha=____)
# Look at the encoding
print(test[['RoofStyle', 'RoofStyle_enc']].drop_duplicates())