tidymodels/parsnip

A tidy unified interface to models

parsnip とは何か?

parsnip は、統計モデルおよび機械学習モデルの指定と適合に tidy かつ 統一的 な方法を提供する R パッケージです。randomForest::randomForest()、ranger::ranger()、sparklyr::ml_random_forest() のような関数のわずかに異なるシグネチャを学ぶ必要がなくなります。代わりに、一貫したモデルの定義を一度だけ記述し、その後 parsnip にどの下位実装(エンジン)を使用するかを指定するだけです。


なぜ重要なのか

  • 一貫した構文 – rand_forest() の呼び出しは、後で ranger、spark、または他のサポートされているバックエンドで実行するかどうかに関わらず、同じように動作します。
  • 責任の分離 – まずモデル(タイプ、モード、ハイパーパラメータ)を 記述 し、その後データに 適合 します。これは、tidymodels エコシステム全体で使われている「モデル定義 → エンジン → 適合」のワークフローに一致しています。
  • エンジン間の移植性 – ローカルの R 実装から分散処理の Spark エンジンに切り替えるのは、set_engine() の変更だけで済みます。
  • コードの洗練 – 引数名が統一されています(trees、mtry など)ので、各パッケージの癖を覚える必要がありません。

コアコンセプト(README に記載)

コンセプト 説明
モデルタイプ 使用したいアルゴリズム、例:rand_forest、logistic_reg、svm_rbf など
モード 予測対象:regression、classification、probability など
エンジン 実際のモデルを実行する具体的なソフトウェア(ranger、spark、glmnet など)
仕様 rand_forest(mtry = 10, trees = 2000) のような関数で作成される tidy オブジェクト
適合 fit(spec, formula, data) は仕様を訓練済みモデルオブジェクトに変換します

クイックスタート例(README から)

library(parsnip)

# 1. モデルを定義(タイプ + ハイパーパラメータ)
rf_spec <- rand_forest(mtry = 10, trees = 2000) |
  set_engine("ranger", importance = "impurity") |
  set_mode("regression")

# 2. データに適合
set.seed(192)
rf_fit <- rf_spec |>
  fit(mpg ~ ., data = mtcars)

print(rf_fit)

出力は、内部的に ranger の結果を含む parsnip モデルオブジェクトを示しており、通常の森林統計(木の数、OOB誤差、R² など)も含まれます。


インストール方法

  • tidymodels サイズ全体をインストール:install.packages("tidymodels")
  • 本パッケージのみをインストール:install.packages("parsnip")
  • 最新の開発版を取得:pak::pak("tidymodels/parsnip")

詳細情報 / ヘルプの入手先

  • ドキュメントサイト:https://parsnip.tidymodels.org/
  • モデル一覧(parsnip でサポートされるすべてのモデル):https://www.tidymodels.org/find/parsnip/
  • コミュニティ:RStudio Community フォーラム(タグ tidymodels)
  • 貢献方法:README にリンクされた貢献者コード of conduct およびガイドラインに従ってください。

まとめ

R を使っており、各パッケージごとにコードを書き直さずに多数の統計的・機械学習アルゴリズムを試したい場合、parsnip は下位エンジンの癖を抽象化した、洗練された tidy インターフェースを提供します。これは tidymodels エコシステムの中心的な要素であり、安定したライフサイクル、CRAN 配布、CI テストを経て積極的にメンテナンスされています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト