2017-04-11 2 views
0

J'ai un code simple qui utilise rfe pour effectuer une sélection de caractéristiques sur différentes périodes de mes données. J'utilise les rfeControl et rfe appels de fonction suivants:Dans R, la fonction RFE du package caret sélectionne plus de fonctionnalités que la taille autorisée

control <- rfeControl(functions=rfFuncs, method="cv", number=10) 
results <- rfe(feature_selection_data 
       , feature_selection_target$value 
       , sizes = c(1:12) 
       , rfeControl = control) 

Chaque fois que cela va insérer les valeurs dans une liste:

include <- predictors(results) 
include_list[[row]] <- include 

D'une certaine façon, même si je définir la taille à un maximum de 12, en 2 sur mes 20 périodes de temps, la sélection de caractéristiques aboutit à 65 fonctionnalités (ce qui correspond au nombre total d'entités dans l'ensemble de données initial).

Je suis nouveau à l'aide de cette fonction, je ne sais pas ce que je fais mal ici, toute aide est appréciée!

Merci!

Répondre

0

Si vous regardez la description de l'algorithme RFE (http://topepo.github.io/caret/recursive-feature-elimination.html), vous verrez qu'il est nécessaire d'inclure toutes les fonctions dans la première itération.

Votre prochaine question sera probablement de savoir comment sélectionner ensuite les modèles sous-optimaux qui ont moins de fonctionnalités. Une réponse peut être trouvée ici (bien que ce n'est pas trop utile): Access all models produced by rfe in caret

Je suggère le réglage de la fonction de classement pour permettre des ensembles de fonctionnalités qui ne sont pas optimales en termes d'erreur, mais qui sont plus petits (voir: http://topepo.github.io/caret/recursive-feature-elimination.html#the-selectsize-function).