未知のレベル
カテゴリ変数のあるレベルが非常にまれだと、学習データに現れないことがあります。そのレアなレベルが将来のデータに現れると、下流のモデルはどのように扱えばよいか分からない場合があります。このような「未知のレベル」が現れると、model.matrix や caret::dummyVars を使ったワンホットエンコードは正しく機能しません。
vtreat はワンホットエンコードのための model.matrix の「より安全な」代替手段で、未知のレベルを安全に扱えます。vtreat はデータ中の欠損値(カテゴリ変数・連続変数の両方)も処理します。
この演習では、学習データには存在しなかったカテゴリ値を vtreat がどのように扱うかを確認します。
前の演習で作成した処理計画 treatplan と変数集合 newvars は引き続き利用できます。
dframe と、新しいデータフレーム testframe があらかじめ読み込まれています。
この演習はコースの一部です
R による Supervised Learning:回帰
演習の手順
dframeとtestframeを表示します。testframeに、dframeにはなかった色はありますか?
prepare()を呼び出して、testframe(目的変数なし)のワンホットエンコード版を作成し、testframe.treatという名前で保存して表示します。varRestriction引数を使って、newvarsに含まれる変数のみに制限します。- 黄色の行はどのようにエンコードされていますか?
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# treatplan is available
summary(treatplan)
# newvars is available
newvars
# Print dframe and testframe
___
___
# Use prepare() to one-hot-encode testframe
(testframe.treat <- ___(___, ___, varRestriction = ___))