2016-04-06 2 views
1

Я использую xgboost в R, чтобы построить классификационную модель на обучающем наборе данных train. train имеет следующие атрибуты.разница между sparse.model.matrix и as.matrix

  1. она имеет всю числовую Характеристику
  2. нет недостающих значений.
  3. нет категориальных/текстовых/факторных переменных.
  4. TARGET - целевая переменная, принимающая значения 1/0.

xgb.train требует передачи данных в определенном формате, поэтому я попытался выполнить два способа получения формата, требуемого xgb.train.

1.

y <- train$TARGET 
train <- sparse.model.matrix(TARGET ~ ., data = train) ##has 76000 rows and 307 columns 
xgtrain <- xgb.DMatrix(data=train, label=y) 

2.

y <- train$TARGET 
train$TARGET <- NULL 
x = as.matrix(train) 
x = matrix(as.numeric(x),nrow(x),ncol(x)) ##has 76000 rows and 307 columns 
xgtrain = xgb.DMatrix(x, label = y) 

Теперь, когда я забил тестовый набор, используя модель, построенную этими 2 xgtrain методы создания, я получаю разные результаты/ППК. Я проверял, что это не проблема с рандомизацией, так как я смог воспроизвести баллы, если я запускаю 1-й метод или 2-й метод дважды/трижды. Что-то происходит по-разному в двух методах, которые я не смог выяснить. Может кто-нибудь, пожалуйста, помогите мне определить эту разницу?

Вопрос другими словами. Что делает sparse.model.matrix по-разному от as.matrix, когда предоставленные им данные имеют только числовые функции без отсутствующих значений и без категориальных переменных?

ответ

1

с использованием формулы (в sparse.model.matrix) добавляет перехват ваших данных (например, столбец со всеми 1). Итак, у вас есть две матрицы, и, следовательно, разные результаты. Чтобы избежать этого использования:

train = sparse.model.matrix(TARGET~.-1,data = train) 

Кроме того, это, вероятно, не очень хорошая идея, чтобы переопределить набор данных с моделью данных матрицы (обозначения как «поезд»)

+0

, но когда я проверяю столбцы, используя Ncol (поезд) до и после, он становится таким же. Зачем? – user3664020

+0

@ user3664020 В первом примере матрица все еще имеет столбец «Цель», во втором примере вы удаляете этот столбец и добавляете перехват к матрице. – amit

 Смежные вопросы

  • Нет связанных вопросов^_^