J'ai lu certains articles sur la sélection des fonctionnalités et la validation croisée, mais j'ai encore des questions sur la bonne procédure.
Supposons que j'ai un ensemble de données avec 10 fonctionnalités et que je souhaite sélectionner les meilleures fonctionnalités. Supposons également que j'utilise un classificateur de voisin le plus proche. Puis-je effectuer une recherche exhaustive en utilisant la validation croisée pour estimer le taux d'erreur comme guide pour choisir les meilleures fonctionnalités? Quelque chose comme le pseudo-code suivant
for i=1:( 2^10 -1)
error(i)= crossval(1-nn, selected_fetures(i))
end
i=find(erro(i)==min(error(i));
selected_fetures= selected_features(i);
Ce que j'essaie d'expliquer dans ce pseudo-code, c'est que j'exécute la validation croisée pour toutes les combinaisons possibles de fonctionnalités et que je choisis la combinaison qui donne l'erreur minimale.
Je pense que cette procédure est correcte car j'effectue une recherche exhaustive. Le choix des fonctionnalités n'était pas basé sur l'ensemble des données, mais sur l'erreur moyenne sur chaque partition. Suis-je sur-équiper le modèle avec une telle sélection de fonctionnalités?
la source
Je pense que c'est une procédure valide pour la sélection des fonctionnalités qui n'est pas plus sujette à un sur-ajustement que les autres procédures de sélection des fonctionnalités. Le problème avec cette procédure est qu'elle a une grande complexité de calcul et peut à peine être utilisée pour de vrais ensembles de données.
la source
Je pense que si vous sélectionnez une fonctionnalité à l'intérieur de chaque pli de la validation croisée, tout ira bien. Comme l'indiquent les affiches ci-dessus, vous pourrez vous équiper de n'importe quel modèle en utilisant les fonctionnalités sélectionnées obtenues à partir de la procédure décrite ci-dessus. En effet, toutes les données ont eu une certaine influence sur la routine de sélection des fonctionnalités.
la source