В R, для категориальных данных с N уникальными категориями, почему sparse.model.matrix () не производит однократное кодирование с N столбцами? - PullRequest
0 голосов
/ 07 июня 2018

Это действительно вопрос из двух частей, но я не хотел делать заголовок слишком длинным.

Я использую xgboost для некоторых данных, которые являются категоричными, но сначала я должен преобразовать их в разреженную матрицу.Первоначально я использовал вызов библиотеки sparse.model.matrix () из библиотеки Matrix, но обнаружил, что он слишком медленный.Спросив здесь, как эффективно это сделать, я был направлен на ответ Флоделя .

Однако я заметил, что для моих данных итоговое число столбцов в обоих методах не совпадает.Кроме того, я обнаружил, что ответ flodel, кажется, имеет больше смысла для меня, так как число столбцов, сгенерированных посредством ответа flodel, точно соответствует количеству уникальных категорий во всех столбцах в исходном наборе данных (что имеет смысл для одноразового кодирования)), который я вычислил, перебирая столбцы (которые являются факторами) неконвертированного фрейма данных и просто суммируя уровни (df $ column).Количество столбцов, сгенерированных в результате вызова sparse.model.matrix (), на самом деле меньше, поэтому мой первый вопрос:

1) Почему sparse.model.matrix () производит однократное кодирование сменьше, чем ожидаемое количество столбцов для истинного однократного кодирования?

После обучения xgboost с использованием обеих разреженных матриц я получил разные результаты, когда спрашивал xgboost, какие переменные являются наиболее влиятельными (как определено вызовомв xgb.importance ()).Таким образом

2) Какой модели я должен доверять?Тот, который сформирован путем обучения разреженной матрицы, закодированной sparse.model.matrix, или тот, который создан методом Флоделя (что для меня более логично)?

Спасибо.

...