cucumber flesh

Rを中心としたデータ分析・統計解析らへんの話題をしていくだけ

Fukuoka.R#15でtidymodelsについての発表を行いました

先週末(2019年8月31日)に開催されたFukuoka.R#15 へ参加・発表してきました。Fukuoka.Rはその名の通り、九州・博多を中心として活動するRコミュニティです。私は茨城県つくば市に住んでいるので、会場のLINE Fukuokaまでは直線距離でおよそ928km離れた場所からの参加というわけです。いやはや遠い。遠いですが、参加してよかったと思える会でした。

以下、簡単にですが内容の振り返りと当日の発表では言えなかったことを書きます。

発表内容

tidymodelsによるモデル構築と運用」という題での発表です。

speakerdeck.com

tidymodelsに含まれるパッケージについて言及した日本語を記事をしばしば見かけるようになりました。私自身もいくつか記事を書いています。

blog.hoxo-m.com

blog.hoxo-m.com

しかしtidymodelsの全容、包括的な話題を扱っている日本語の情報は限られています。そこで今回は、モデルの構築から運用に至るまでの手順をパッケージの利用方法とともに紹介する形式としました。具体的には{rsample}で対象データの分割、リサンプリング、{recipes}でデータ前処理、特徴量の用意、{parsnip}でのモデル実行、最後に{yardstick}による性能評価です。

スライド資料なので、言葉足らずな面があるかと思います。 テキストと合わせた内容は id:dropout009 さんの記事 (その1,その2)を読んでおけばOKかなと感じる部分もあります。資料作成時も大変参考となりました。

今回は30分の枠でした。Tokyo.Rでは20分の枠が一般的なのでちょっと長めですね。たっぷりと話すことができました(その分詰め込みすぎて余裕がなくなってしまったという本末転倒な反省も)。tidymodelsはパイプフレンドリーで関数や操作性に一貫性があり、またパッケージがタスクに応じて分割されているので紹介もしやすかったです。

発表から除外したもの

最後の方は説明が複雑になる、時間も足りないということもあり、駆け足で説明不足になってしまいました。また、運用をタイトルに入れていたので{drake}{butcher}の紹介をと考えていましたが明らかに時間が足りない、それよりは他の説明に時間を割こうとして除外しました。そのため、こちらで簡単に補足させていただきます。

{drake}はtidymodelsの支配下にないパッケージであり、モデルとは関係しません。しかしモデル構築の作業をワークフロー化することで、再現性を確保、手間を減らすことが期待できます。おすすめです。

blog.hoxo-m.com

また当初、{butcher}を組みこもうとしていましたが結局除外してしまいました。このパッケージはモデルオブジェクトのサイズを減少させるのに効果的です。というのもモデル構築の過程でオブジェクトサイズが増大することがあるためです。関数の環境内で余分なオブジェクトを生成しているとそれが影響する感じでしょうか(よくわかっていない部分があります…)。{butcher}パッケージの名前は肉屋の従業員。その名の通り、余分なデータを捌きます。{butcher}を利用すると先のオブジェクトサイズが減少します。やや物騒な名前の関数を使います。こちらは{parsnip}が対応するエンジンについて対応しており、すでにCRANに登録されています。

今回のテーマはtidymodelsでしたが、今Rで機械学習モデルを実行するには他の選択肢がいくつかあります。この比較についても発表時は行えませんでした。以前tweetで発信した情報がありますのでこちらをご覧ください。

また会いましょう!