mlrパッケージによる予測モデルの構築・評価
これは,R Advent Calendar 2014 6日目の記事です.
本記事では,Rで機械学習の予測モデルの構築・評価を統一的なフレームワークで実行するmlrパッケージについて入門的な説明を行います.
mlrパッケージとは
mlrパッケージは,Michael Lang氏によって開発されており,機械学習の予測モデルを構築し評価する統一的なフレームワークを提供する.use!R 2014でも発表が行われている.
基本的な流れ
kernlabパッケージに収録されているspamデータセットに対して,メールがスパムかどうかを判定するための学習器を作成してみよう.ここでは,カーネルSVMを使用して10-foldのクロスバリデーションを実行してみる.
> install.packages("mlr") > library(mlr) > install.packages("kernlab") > library(kernlab) > data(spam) > # spamデータセットに対して目的変数をtypeとしたクラス分類タスクの作成 > task <- makeClassifTask(id="spam", data=spam, target="type") > # カーネルSVMの学習器の作成 > learner <- makeLearner("classif.ksvm") > # 10-foldクロスバリデーションを実行するためのデータセットの作成 > rdesc <- makeResampleDesc(method="CV", iters=10) > # 学習の実行 > r <- resample(learner=learner, task=task, rdesc)
以下,各機能について概要的な説明を行う.
実行可能なタスク
下表のように,5つのタスクが提供されている.
関数名 | タスク |
---|---|
makeClassifTask | クラス分類 |
makeClusterTask | クラスタリング |
makeCostSensTask | コスト考慮型学習 |
makeRegrTask | 回帰 |
makeSurvTask | 生存時間分析 |
リサンプリング方法
リサンプリング方法は,以下の6つが利用できる.カッコ内は,makeResampleDesc関数のmethod引数に指定する文字列を表している.
- クロスバリデーション("CV")
- 1つ抜きクロスバリデーション("LOOCV")
- 繰り返しクロスバリデーション("RepCV")
- Out-of-bagブートストラップ("Bootstrap")
- サプサンプリング("Subsample")
- ホールドアウト検定("Holdout")
ハイパーパラメータの最適化
ハイパーパラメータの最適化は,makeParamSet関数により探索するパラメータの範囲を指定することにより実行する.
> library(mlr) > library(kernlab) > data(spam) > task <- makeClassifTask(id="spam", data=spam, target="type") > learner <- makeLearner("classif.ksvm") > rdesc <- makeResampleDesc(method="CV", iters=10) > par.set <- makeParamSet( + makeDiscreteParam("C", values=2^(-2:2)), + makeDiscreteParam("sigma", values=2^(-2:2)) > ) > ctrl <- makeTuneControlGrid() > res <- tuneParams("classif.ksvm", task=task, resampling=rdesc, par.set=par.set, control=ctrl)
属性選択
一般的に,属性選択はフィルタ法,ラッパ法の2つに大別される.フィルタ法は,学習器を構築することなく各属性の重要度を定量化するアプローチである.一方で,ラッパ法は,学習器を構築しながら書く属性の重要度を定量化する.
mlrパッケージでは,ラッパ法については以下のように4つの属性選択のアルゴリズムが提供されている.
関数名 | タスク |
---|---|
makeFeatSelControlExhaustive | Exhaustive search |
makeFeatSelControlGA | 遺伝的アルゴリズム |
makeFeatSelControlRandom | ランダム探索 |
makeFeatSelControlSequential | 決定論的な前方/後方探索 |
並列計算
クロスバリデーションやグリッドサーチによるハイパーパラメータの最適化などの処理は,並列計算が可能である.