У меня есть набор данных с 15 000 наблюдений и 35 переменных. Некоторые из этих переменных имеют реальные жизненные зависимости (например, если одна поднимется, другая будет затронута). Я хочу предсказать один из них в зависимости от других.
Для этого я хотел извлечь наиболее важные из них с помощью выбора функций. Тем не менее, Борута и другие методы (Случайный лес -варимплот) не в состоянии выбрать функции. Он показывает одну переменную как очень важную, а все остальные как важные. Это ошибка, так как некоторые не связанные переменные были введены в набор данных для целей тестирования.
Что нужно сделать, чтобы отсеять нерелевантные переменные, когда Boruta не делает это с конфигурацией по умолчанию
Я удалил записи с NA из набора данных и удалил выбросы с расстоянием повара> 4 x среднее значение расстояния повара.
Я запустил алгоритм боруты с p-значением 0,01 и 0,001. Я добавил паразитные переменные, такие как: реальные несвязанные переменные, простая тригонометрическая функция и случайная выборка. Первые два считались «важными», тогда как последний считался неуместным.
# Boruta search
library(Boruta)
boruta_output <- Boruta( ToPredict ~ ., data=na.omit(SampleData), doTrace=2, pValue=0.01) # perform Boruta search
boruta_signif <- names(boruta_output$finalDecision[boruta_output$finalDecision %in% c("Confirmed", "Tentative")]) # collect Confirmed and Tentative variables
#Random forest search
library(party)
library(randomForest)
rfModel <- randomForest(ToPredict ~ . , data= SampleData, importance=TRUE, control=RandomForest_unbiased(mtry=2,ntree=50)) # fit the random forest
varImpPlot(cf1Test,sort = TRUE, type=1)
#trigonometric function to test Boruta - was then classified as important.
x <- seq(0, 2*pi, length.out = 13984)
y <- jitter(sin(x) + cos(x + x), amount = 0.2)
Я ожидал четкого разделения важности хотя бы некоторых переменных, а несвязанные переменные были бы классифицированы как «не важные». Но только одна из известных критических переменных оказалась очень важной, а несвязанные переменные были классифицированы как важные, даже простая тригонометрическая функция.
Не смог ли я рассмотреть что-то, что сделало бы модель Борута / случайный лес непригодной для этой задачи?
Любая помощь будет принята с благодарностью,
Прекрасного дня,