Я только что наткнулся на пакет purrr, и я думаю, что это поможет мне немного с точки зрения того, что я хочу сделать - Я просто не могу собрать это вместе.совет по использованию dplyr :: do vs purrr: map, tidy :: nest, для прогнозов
Я думаю, что это будет по почте, но перейдет в общий прецедент. Я думаю, что многие другие сталкиваются с такой надеждой, что это тоже полезно для них.
Это то, что я стремлюсь к:
- С одной большой набор данных нескольких моделей выполняющиеся на каждом из различных подгрупп.
- Имеют ли эти модели доступными, поэтому я могу изучить - для коэффициентов, точности и т. Д.
- Из этого списка сохраненных моделей для каждой из разных групп можно применить соответствующую модель к соответствующей группе тестовых наборов.
grouping_vals = c("cyl", "vs") library(purrr) library(dplyr) set.seed(1) train=mtcars noise = sample(1:5,32, replace=TRUE) test = mtcars %>% mutate(hp = hp * noise) # just so dataset isn't identical models = train %>% group_by_(grouping_vals) %>% do(linear_model1 = lm(mpg ~hp, data=.), linear_model2 = lm(mpg ~., data=.) )
- Я получил это далеко, но я не знаю, как «карта» соответствующие модели к набору данных «тест» для соответствующих сгруппированных значений.
- Теперь я также могу попытаться получить остатки от обучения linear_model1 или linear_model2 с данными обучения для соответствующих групп.
модели $ linear_model1 [[2]] $ остатки покажут остатки для 2-й группы модели1. Я просто не знаю, как переместить все модели $ linear_model1 $ остатков в набор данных поезда.
Мое понимание заключается в том, что функция tidyr nest() выполняет ту же самую функцию, что и при создании моего do() создания моделей.
models_with_nest = train %>%
group_by_(grouping_vals) %>%
nest() %>%
mutate(linear_model2 = purrr::map(data, ~lm(mpg~., data=.)),
linear_model1 = purrr::map(data, ~lm(mpg~ hp+disp, data=.))
)
Опять же просто искать способ легко быть в состоянии «карта» эти остатки/подготовки прогнозов в тренировочном наборе данных и применить затем применить соответствующую модель невидимому тестового набора данных, как один я создал выше.
Надеюсь, это не сбивает с толку, так как я вижу много обещаний здесь, я просто не могу понять, как это сделать.
Я полагаю, что это задача, которую тонна людей хотела бы сделать в этом более автоматизированном виде, но вместо этого это то, что люди делают очень медленно и шаг за шагом.
Пакет Брума в 'augment' полезно для добавления остатки в наборе данных, используемые для соответствия модели. Для создания прогнозов с помощью тестового набора данных вы можете использовать 'прогноз' в' map', используя аргумент 'newdata'. Если вы еще этого не видели, вас может также заинтересовать этот [разговор Хэдли Уикхэма] (https://www.youtube.com/watch?v=rz3_FDVt9eg), который проходит пример установки многих моделей с dplyr/tidyr/purrr/метла. – aosmith
Да, я думал о Венике, но большинство моделей, которые я запускаю, похоже, не соответствуют этому - это был простой пример, но я думал, что он будет запущен с использованием Neural Networks, SVM, Random Forest и т. Д. – runningbirds
Вы читали http : //r4ds.had.co.nz/many-models.html? – hadley