始める無料で始める

未知のレベル

カテゴリ変数のあるレベルが非常にまれだと、学習データに現れないことがあります。そのレアなレベルが将来のデータに現れると、下流のモデルはどのように扱えばよいか分からない場合があります。このような「未知のレベル」が現れると、model.matrixcaret::dummyVars を使ったワンホットエンコードは正しく機能しません。

vtreat はワンホットエンコードのための model.matrix の「より安全な」代替手段で、未知のレベルを安全に扱えます。vtreat はデータ中の欠損値(カテゴリ変数・連続変数の両方)も処理します。

この演習では、学習データには存在しなかったカテゴリ値を vtreat がどのように扱うかを確認します。 前の演習で作成した処理計画 treatplan と変数集合 newvars は引き続き利用できます。 dframe と、新しいデータフレーム testframe があらかじめ読み込まれています。

この演習はコースの一部です

R による Supervised Learning:回帰

コースを見る

演習の手順

  • dframetestframe を表示します。
    • 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 = ___))
コードを編集して実行