Более низкая точность прогноза при использовании предварительной обработки в train () - PullRequest
0 голосов
/ 10 февраля 2019

Я новичок в R и машинном обучении, поэтому, пожалуйста, извините за основной вопрос ...

Я экспериментирую с набором данных "spam" в библиотеке kernlab.И используя функции из библиотеки карет.

Цель:

Предсказать «тип» для 58 оставшихся переменных в «спаме»

Я пробовал два разных способа предварительной обработки:

PRE-ОБРАБОТКИ ДАННЫХ ДО train()

# preprocess all 57 predictors, leave out response variable #58
preproc = preProcess(trainset[-58], method = "BoxCox")

preprocTrain = predict(preproc, trainset[,-58])
preprocTrain$type = trainset$type

preprocTest = predict(preproc, testset[,-58])
preprocTest$type = testset$type

set.seed(123)
fit2 = train(type~., data=preprocTrain, method = "glm")
predict2 = predict(fit2, newdata = preprocTest)
confmat2 = confusionMatrix(predict2, preprocTest$type)

fit2$results
confmat2$overall

ПРИМЕЧАНИЕ:

fit2 Accuracy = 0.93 and confmat2 Accuracy = 0.92

И затем, ИСПОЛЬЗУЯ preProcess WITHIN train()

set.seed(123)
fit3 = train(type~., data=trainset, method="glm", preProcess = "BoxCox")

Predict using pre-processed test set from before

predict3 = predict(fit3, newdata = preprocTest)
confmat3 = confusionMatrix(predict3, preprocTest$type)

fit3$results
confmat3$overall

Now, fit3 Accuracy = 0.93 НО confmat3 Accuracy = 0.75

Пожалуйста, помогите мне понять, почему это резкое падение?Разве точность confmat3 не должна совпадать с точностью confmat2?В чем разница?Также во втором прогнозе я получаю следующее предупреждение:

Warning messages:
1: In predict.BoxCoxTrans(object$bc[[i]], newdata[, i]) :
  newdata should have values 0
2: In predict.BoxCoxTrans(object$bc[[i]], newdata[, i]) :
  newdata should have values 0

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...