#r #r-caret
#r #r-каретка
Вопрос:
В настоящее время я работаю над проектом, объединяющим машинное обучение и причинно-следственный вывод в R с использованием caret. Мой набор данных содержит переменную, которая распределяет наблюдения по определенным группам. При обучении моделей ML и прогнозировании я хотел бы имитировать поведение оценки с фиксированным эффектом, удалив среднее значение каждой переменной по конкретной группе.
Например, мои данные могут выглядеть так:
DT <- data.table(a = seq(1, 100),
b = seq(101, 200),
c = seq(201, 300),
group = rep(seq(1,10), 10))
Я знаю, что могу использовать встроенный в каретку метод «center» в функции train() для предварительной обработки. Однако мне нужно применить этот шаг предварительной обработки не ко всему набору данных, а к каждому уровню переменной «group» отдельно.
Есть ли простой способ реализовать это поведение, т.Е. Вычислить сгруппированные средние значения в обучающем наборе и использовать эти же средства для применения предварительной обработки центрирования при прогнозировании на отдельном тестовом наборе с использованием каретки?
Любая помощь будет высоко оценена, спасибо.
Комментарии:
1. что произойдет, если в наборе тестов есть группы, отсутствующие в наборе поездов? Что представляет собой группа в вашем случае?
2. Этого не должно произойти, поскольку я использую каретки
createDataPartition
для разделения выборки на обучение и тестирование на основе групповой переменной, так что это выглядит примерно такcreateDataPartition(DT$group, list=F)
. Группирующая переменная похожа на почтовый индекс.