Я использую LASSO, в котором есть некоторые категориальные предикторы переменных и некоторые непрерывные. У меня есть вопрос о категориальных переменных. Первый шаг, который я понимаю, - разбить каждого из них на пустышки, стандартизировать их для справедливого наказания, а затем регрессировать. Существует несколько вариантов обработки фиктивных переменных:
Включите все манекены, кроме одного, для каждого фактора, оставив его в качестве контрольного уровня. Интерпретация фиктивного коэффициента относится к исключенной категории «ссылка». Перехват - теперь средний ответ для справочной категории.
Сгруппируйте переменные в каждом факторе, чтобы они были либо исключены, либо включены все, кроме одного. Я полагаю, что именно это @Glen_b предлагает здесь :
Обычно да, вы держите все факторы вместе. Есть несколько пакетов R, которые могут сделать это, в том числе glmnet
Включите все уровни, как предложено @Andrew M здесь :
Вы можете также захотеть изменить функцию контрастности по умолчанию, которая по умолчанию исключает один уровень каждого фактора (кодирование лечения). Но из-за лассо-штрафа это больше не требуется для идентификации и фактически усложняет интерпретацию выбранных переменных. Для этого установите
contr.Dummy <- function(contrasts, ...){ conT <- contr.treatment(contrasts=FALSE, ...) conT } options(contrasts=c(ordered='contr.Dummy', unordered='contr.Dummy'))
Теперь, какие бы уровни фактора не были выбраны, вы можете думать, что это означает, что эти конкретные уровни имеют значение, а не все пропущенные уровни. В машинном обучении, я видел это кодирование упоминается как один-горячее кодирование.
Вопросов:
- Какова интерпретация перехвата и коэффициентов при каждом из этих подходов?
- Какие соображения связаны с выбором одного из них?
- Не масштабируем ли мы фиктивные коэффициенты, а затем интерпретируем их как изменение перехода от начального положения к другому?