1. 학습
  2. /
  3. 강의
  4. /
  5. R による Supervised Learning:回帰

Connected

연습 문제

小さな例での vtreat

この演習では、vtreat を使って小さな例のカテゴリ変数を one-hot エンコードします。 vtreat は、カテゴリ変数を指示変数("lev" でコード化)に変換し、数値変数から不適切な値を除去する("clean" でコード化)ための「トリートメントプラン」を作成します。

トリートメントプランを設計するには designTreatmentsZ()(ドキュメント)を使います。

treatplan <- designTreatmentsZ(data, varlist)
  • data: 元の学習用データフレーム
  • varlist: 処理対象の入力変数(文字列)のベクトル

designTreatmentsZ() は、scoreFrame という要素を含むリストを返します。これは、新しい変数の名前と型を含むデータフレームです。

scoreFrame <- treatplan %>% 
            magrittr::use_series(scoreFrame) %>% 
            select(varName, origName, code)
  • varName: 新しく処理された変数の名前
  • origName: 処理後の変数が由来する元の変数名
  • code: 新しい変数のタイプ
    • "clean": NA や NaN を含まない数値変数
    • "lev": 元のカテゴリ変数の特定レベルに対する指示変数

(magrittr::use_series()(ドキュメント)は、パイプ内で使える $ の別名です。)

この演習では、code が "clean" または "lev" のときの varName が必要です。

newvarlist <- scoreFrame %>% 
             filter(code %in% c("clean", "lev") %>%
             magrittr::use_series(varName)

データセットを、すべて数値かつ one-hot エンコード済みの変数に変換するには、prepare()(ドキュメント)を使います。

data.treat <- prepare(treatplan, data, varRestrictions = newvarlist)
  • treatplan: トリートメントプラン
  • data: 処理対象のデータフレーム
  • varRestrictions: 処理後のデータに含めたい変数

dframe データフレームと magrittr パッケージはあらかじめ読み込まれています。

지침

100 XP
  • dframe を表示してください。ここでは、color と size を入力変数、popularity を予測したい目的変数とします。
  • 入力変数名(文字列)からなるベクトル vars を作成します。
  • パッケージ vtreat を読み込みます。
  • designTreatmentsZ() を使って、vars の変数に対するトリートメントプランを作成し、treatplan に代入します。
  • トリートメントプランから scoreFrame を取得して確認し、元の変数から新しい変数への対応を見てみましょう。
    • 必要なのは varName、origName、code の3列だけです。
    • 新しい指示変数の名前は何ですか? 連続変数はどれですか?
  • code が clean または lev のときの varName を含むベクトル newvars を作成し、表示します。
  • prepare() を使って、dframe の one-hot エンコード版(目的変数の列は含めない)である新しいデータフレーム dframe.treat を作成します。
    • それを表示し、dframe と見比べてください。