2

特定の変数 (私の場合は生涯) の値に基づいて分割したい大きなデータセットがあり、各分割でロジスティック回帰を実行します。dplyr を使用して複数の回帰モデルを適合する@tchakravarty の回答に従って、次のコードを作成しました。

lifetimemodels = data %>% group_by(lifetime) %>% sample_frac(0.7)%>%
     do(lifeModel = glm(churn ~., x= TRUE, family=binomial(link='logit'), data = .))

私の質問は、残りのデータ (選択されなかった 0.3 の割合) の AUC を計算する際に、結果のロジスティック モデルをどのように使用できるかということです。

よろしくお願いします!

4

1 に答える 1

6

andフレームワークdplyrを使用するようにアプローチを適応させることができます。グループ化/ネスト化、およびリストフレームを作成してワークフローの一部を保存する関数について説明します。tidyrpurrrmutatemap

探しているテスト/トレーニングの分割は、フレームワークmodelr内のモデリングを支援するために構築されたパッケージの一部ですpurrr。具体的にはcross_vmcおよびcross_vkfold関数。

(フレームワークを説明するためだけに)を使用したおもちゃの例mtcars

library(dplyr)
library(tidyr)
library(purrr)
library(modelr)

analysis <- mtcars %>%
  nest(-cyl) %>%
  unnest(map(data, ~crossv_mc(.x, 1, test = 0.3))) %>%
  mutate(model = map(train, ~lm(mpg ~ wt, data = .x))) %>%
  mutate(pred = map2(model, train, predict)) %>%
  mutate(error = map2_dbl(model, test, rmse))

これ:

  1. mtcars がかかります
  2. dataによって呼び出されるリスト フレームにネストするcyl
  3. 各要素にマッピングし、 を使用しておよびリスト列を作成することdataにより、それぞれをトレーニング セットに分離します。crossv_mcunnesttesttrain
  4. lmモデルを各にマップし、trainそれをに保存しますmodel
  5. predict関数をmodelandにマップしtrain、格納しますpred
  6. rmse関数をmodelandセットにマップしtest、エラーに格納します。

私よりもワークフローに精通しているユーザーがおそらくいるので、修正/詳細化してください。

于 2017-01-10T19:53:57.090 に答える