R каретка — применить центрирование по группе

#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) . Группирующая переменная похожа на почтовый индекс.