Почему мы упоминаем -1 в функции model.matrix в R? это для одного горячего кодирования или у него есть какая-то другая причина?

#r #machine-learning #one-hot-encoding

#r #машинное обучение #one-hot-encoding

Вопрос:

Почему мы упоминаем -1 в формуле model.matrix функции из stats пакета.

 training_matrix <-model.matrix(Survived ~.-1, data = training)
 

В titanic этом случае используется стандартный набор данных.

Существует также документация, в которой говорится, что одно горячее кодирование может быть выполнено с использованием model.matrix с -1 обозначением, при условии, что мы правильно объявили коэффициенты и числовые значения в наборе данных.

Код выглядит следующим образом

 data_1_matrix <-model.matrix(~.-1, data = data_1)
 

Что -1 именно это делает?

Ответ №1:

Значение -1 гарантирует, что в вашей матрице модели нет константы. Если бы вы использовали

 training_matrix <-model.matrix(Survived ~., data = training)
 

В матрицу модели включен столбец единиц, и одна категория опущена, чтобы гарантировать, что ваша модель не будет страдать от мультиколлинеарности.

Предпочтительнее решать пользователю: если вы используете константу, в вашей модели будет «ссылочный класс». Если вы этого не сделаете, ссылочного класса не существует.

Комментарии:

1. Вы всегда должны включать перехват. Если вам не нравятся контрасты обработки, используйте разные контрасты, но не исключайте перехват.

2. @Roland Можете ли вы уточнить, что вы подразумеваете под термином intercept здесь?

3. @PraveenKumar-M Конечно, перехват — это параметр, соответствующий столбцу единиц в матрице модели.