Новые уровни
Если какой-либо уровень категориальной переменной встречается редко, он может не попасть в обучающие данные. Когда такой редкий уровень появляется в новых данных, модели могут не знать, как с ним работать. В подобных случаях использование model.matrix или caret::dummyVars для унитарного кодирования (one-hot-encoding) может дать некорректный результат.
vtreat — более надёжная альтернатива model.matrix для унитарного кодирования: этот пакет умеет корректно обрабатывать новые уровни, а также пропущенные значения в данных (как в категориальных, так и в непрерывных переменных).
В этом упражнении вы увидите, как vtreat обрабатывает категориальные значения, которые не встречались в обучающей выборке.
План обработки treatplan и набор переменных newvars из предыдущего упражнения по-прежнему доступны.
dframe и новый датафрейм testframe уже загружены.
Это упражнение является частью курса
Обучение с учителем в R: регрессия
Инструкции к упражнению
- Выведите на экран
dframeиtestframe.- Есть ли в
testframeцвета, которые не встречались вdframe?
- Есть ли в
- Вызовите
prepare(), чтобы создать версиюtestframeс унитарным кодированием (без целевой переменной). Назовите еёtestframe.treatи выведите на экран.- Используйте аргумент
varRestriction, чтобы ограничить набор только переменными изnewvars. - Как закодированы строки с жёлтым цветом?
- Используйте аргумент
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# treatplan is available
summary(treatplan)
# newvars is available
newvars
# Print dframe and testframe
___
___
# Use prepare() to one-hot-encode testframe
(testframe.treat <- ___(___, ___, varRestriction = ___))