Slide 1

Slide 1 text

qeMLパッケージの紹介 R研究集会2023 (2023/12/16) @bob3bob3

Slide 2

Slide 2 text

qeMLパッケージとは? ● caret、mlr3、tidymodelsと同じような、機械 学習に統一的なインターフェイスを提供する ラッパー。 ● 「qe」は「quick and easy」。 ● とにかくシンプルで「 one liner」で機械学習を 事項できるのが売り。

Slide 3

Slide 3 text

作者 Norman Matloff The Art of R Programming (2011) の著者。

Slide 4

Slide 4 text

実行例 library(qeML) # メジャーリーガーのデータセット。ポジション、身長、体重、年齢 data(mlb1) # 体重を推定するモデル # 決定木、ランダムフォレスト、勾配ブースティング mlb1_rpart <- mlb1 |> qeRpart("Weight") mlb1_rf <- mlb1 |> qeRFranger("Weight") mlb1_gb <- mlb1 |> qeGBoost("Weight")

Slide 5

Slide 5 text

実行例 # 推定 new_data <- data.frame(Position='Catcher', Height=73, Age=28) mlb1_rpart |> predict(new_data) mlb1_rf |> predict(new_data) mlb1_gb |> predict(new_data) # これだけ! # 簡単だね!

Slide 6

Slide 6 text

Enjoy?

Slide 7

Slide 7 text

いやいや、まてまて ● バリデーションは? ● ハイパーパラメーターのチューニングは?

Slide 8

Slide 8 text

バリデーションは勝手にやってくれる # testデータでのMAE mlb1_rpart$testAcc mlb1_rf$testAcc mlb1_gb$testAcc data.frame( name = c("rpart", "rf", "gb"), MAE = list(mlb1_rpart, mlb1_rf, mlb1_gb) |> map_dbl(\(x) pluck(x, "testAcc")) ) |> arrange(MAE) # name MAE # 1 rf 13.23741 # 2 gb 13.74169 # 3 rpart 14.24358

Slide 9

Slide 9 text

チューニングもできる # ランダムフォレストのグリッドサーチ例 qs_ft_rf <- mlb1 |> qeFT( "Weight", "qeRFranger", pars = list(nTree= seq(100, 1000, 250), minNodeSize= seq(10, 30, 10)), nTst = 100, nXval = 10, showProgress=TRUE ) qs_ft_rf$outdf |> slice_min(meanAcc) # nTree minNodeSize meanAcc CI bonfCI # 1 350 10 8.326976 8.531146 8.653432

Slide 10

Slide 10 text

その他の機能 ● 次元縮約、次元削減 ● 並列化 ● 欠損補完 ● モデルの比較 ● Quick Start, ML Overviewなど親切なビネットがたくさん! ● データセットも山盛り

Slide 11

Slide 11 text

……ただし ● まだまだ開発中で発展途上。 ● ドキュメントも書きかけという感じ。 ● 実装されている手法がcaret、tidymodelsと比べるとまだ少ない。 ● 実装が不完全な手法もある(xgboost, lightgbmなど) ● バリデーションの評価指標を変更ができない ● Macだとインストールできないらしい(誰か検証して!)

Slide 12

Slide 12 text

Enjoy!