2014-11-22 2 views
0

Я заметил, что pred() будет создавать прогнозы только для полных случаев. Я включил medianImpute в опциях Preprocess, например, следующее:Предпочтение препроцесса R каретка и прогнозирование

train(outcome ~ ., 
     data = df, 
     method = "rf", 
     tuneLength = 5, 
     preProcess = c("YeoJohnson", "center", "scale", "medianImpute"), 
     metric = 'ROC', 
     trControl = train_ctrl) 
} 

Означает ли это, что я должен делать вменения для недостающих значений перед тренировкой набора? Если нет, я не могу создать прогноз для всех случаев в тестовом наборе. Я прочитал в книге доктора Куна, что предварительная обработка должна происходить во время перекрестной проверки ... Спасибо!

ответ

4

Если вы используете medianImpute, то это обязательно должно произойти до тренировочного набора, даже если вы примете набор тестов medianImpute, результаты будут неправильными.

Рассмотрим следующий крайний случай в качестве примера:

Вы имеете только одну независимую переменную X, которая constists чисел от 1 до 100. Представьте себе крайний случай разделения набора данных в набор тест на 50% и 50 %, с номерами от 1 до 50, находящимися в тестовом наборе и номерами от 51 до 100 в тренировочном наборе.

> median(1:50) #test set median 
[1] 25.5 
> median(51:100) #training set median 
[1] 75.5 

Использование вашего кода (функции поезда в карете), отсутствующие значения в наборе тренировок будут заменены на 75.5. Это создаст три основные проблемы:

  1. Вы не можете использовать тот же метод (medianImpute) для тестового набора, так как отсутствующие значения в тестовом наборе будет заменен 25.5
  2. Вы не можете вручную заменить отсутствующие значения в тестовый набор с 75,5, потому что значение 75,5 намного превышает максимальное значение тестового набора, и вы резко перекосите его.
  3. Функциональный поезд пакета caret попытается найти наилучшие параметры для вашей модели (настройки). Замена отсутствующих значений на 75,5, когда медиана полного набора данных (правильное значение для ввода недостающих данных) равна 50,5, будет настраивать модель с неправильными значениями параметров.

Поэтому самое лучшее, что нужно сделать, это объяснить недостающие данные перед тем создания обучающего множества в.

Надеюсь, это поможет!

+0

Спасибо, Лискандер. Это имеет большой смысл, поскольку я использую medianImpute. – user2300643

+0

Это относится и к преобразованиям? – user2300643

+0

Это зависит от трансформации. Если преобразование основано на среднем значении и дисперсии, например, тогда да. – LyzandeR

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