Важность функции для моделей машинного обучения в пакете (Caret) - PullRequest
0 голосов
/ 17 июня 2020

У меня вопрос относительно функции важности функций в пакете Caret.

У меня есть набор данных, в котором больше числовых c и факторных функций. Я использовал команду ниже, чтобы узнать важность функции модели. Это дает мне важность каждого (sub_feature) для факторных переменных. Однако мне просто нужна важность самой функции без go подробно для каждого фактора функции.

gbmImp <- caret :: varImp (xgb1, scale = TRUE) </p>

1 Ответ

1 голос
/ 18 июня 2020

Я создам несколько примеров данных, поскольку у нас нет никаких данных по вашему вопросу:

library(caret)

# example data
df <- data.frame("x" = rnorm(100),
                 "fac" = as.factor(sample(c(rep("A", 30), rep("B", 35), rep("C", 35)))),
                 "y" = as.numeric((rpois(100, 4))))
# model
model <- train(y ~ ., method = "glm", data = df)
# feature importance
varImp(model, scale = TRUE)

Это возвращает важность функции, которую вы не хотите указывать в своем вопросе:

# glm variable importance
#
#      Overall
# facB  100.00
# facC   13.08
# x       0.00

Вы можете преобразовать факторные переменные в numeri c и сделать то же самое:

# make the factor variable numeric
trans_df <- transform(df, fac = as.numeric(fac))
# model
trans_model <- train(y ~ ., method = "glm", data = trans_df)
# feature importance
varImp(trans_model, scale = TRUE)

Это возвращает важность для «общей» функции:

# glm variable importance
# 
#     Overall
# x       100
# fac       0

Однако, Я не знаю, приводит ли операция as.numeric() к факторной переменной к другой важности функции, когда мы запускаем varImp(trans_model, scale = TRUE).

Кроме того, проверьте этот поток SO if вы обнаружите, что указанные c факторные / символьные переменные являются проблемными c при преобразовании в числа c.

...