Comment appliquer correctement la validation croisée dans le contexte de la sélection des paramètres d'apprentissage pour les machines à vecteurs de support?


9

Le merveilleux paquet libsvm fournit une interface python et un fichier "easy.py" qui recherche automatiquement les paramètres d'apprentissage (coût et gamma) qui maximisent la précision du classificateur. Dans un ensemble de paramètres d'apprentissage candidat donné, la précision est opérationnalisée par la validation croisée, mais j'ai l'impression que cela sape l'objectif de la validation croisée. Autrement dit, dans la mesure où les paramètres d'apprentissage eux-mêmes peuvent être choisis d'une manière qui pourrait entraîner un surajustement des données, je pense qu'une approche plus appropriée consisterait à appliquer la validation croisée au niveau de la recherche elle-même: effectuer la recherche sur un ensemble de données d'apprentissage, puis évaluer la précision ultime de SVM résultant des paramètres d'apprentissage finalement choisis par évaluation dans un ensemble de données de test distinct. Ou est-ce que je manque quelque chose ici?

Réponses:


10

Si vous apprenez les hyper-paramètres dans les données d'entraînement complètes, puis effectuez une validation croisée, vous obtiendrez une estimation de performance biaisée de manière optimiste, car les données de test dans chaque pli auront déjà été utilisées pour définir les hyper-paramètres, de sorte que l'hyper- les paramètres sélectionnés sont sélectionnés en partie parce qu'ils correspondent aux données de l'ensemble de test. Le biais optimiste ainsi introduit peut être d'une ampleur inattendue. Voir Cawley et Talbot, «Sur le sur-ajustement dans la sélection du modèle et les biais de sélection ultérieurs dans l'évaluation des performances», JMLR 11 (juillet): 2079-2107, 2010.(En particulier la section 5.3). La meilleure chose à faire est une validation croisée imbriquée. L'idée de base est que vous effectuez une validation croisée de toute la méthode utilisée pour générer le modèle, alors traitez la sélection du modèle (choix des hyper-paramètres) comme faisant simplement partie de la procédure d'ajustement du modèle (où les paramètres sont déterminés) et vous ne pouvez pas aller trop mal.

Si vous utilisez la validation croisée sur l'ensemble de formation pour déterminer les hyper-paramètres, puis évaluez les performances d'un modèle formé à l'aide de ces paramètres sur l'ensemble de l'ensemble de formation, à l'aide d'un ensemble de test distinct, cela est également très bien (à condition que vous ayez suffisamment de données pour un ajustement fiable du modèle et une estimation des performances à l'aide de partitions disjointes).


Belle référence!
Andrew

Dans le deuxième paragraphe, comment incorporeriez-vous également la sélection des fonctionnalités? Serait-il acceptable de: i) faire une optimisation hyperparamétrique comme vous l'avez dit ci-dessus (obtenir des hyperparamètres optimaux) ii) exécuter la sélection des fonctionnalités dans un autre cycle de validation croisée pour obtenir un ensemble de prédicteurs supérieurs (la sélection des fonctionnalités est exécutée sur les données d'apprentissage partitionnées en un ensemble de sous-formation et de validation utilisant la méthode de rééchantillonnage utilisée dans l'optimisation hyperparamétrique). iii) former un modèle avec le paramètre hyper supérieur et le prédicteur supérieur définis sur des données d'entraînement complètes. Testez sur un ensemble de test séparé.
sma

pour être un peu plus clair sur ii) exécuter la sélection des fonctionnalités dans un autre cycle de validation croisée pour obtenir un ensemble de prédicteurs supérieurs (les données de formation sont divisées en sous-formation et ensemble de validation via la méthode de rééchantillonnage utilisée dans l'optimisation hyperparamétrique. puis la sélection des fonctionnalités est exécutée sur données de sous-formation).
sma

Sinon, pourrait-on faire la sélection des fonctionnalités d'abord via la validation croisée pour obtenir le jeu de fonctionnalités supérieur, puis effectuer le réglage hyperparamétrique des modèles d'intérêt en utilisant le jeu de fonctionnalités supérieur (comme ci-dessus dans la validation croisée)? Ensuite, entraînez les modèles avec leurs paramètres hyper optimaux sur des données d'entraînement complètes avec uniquement l'ensemble de fonctionnalités supérieur déjà déterminé, et testez sur un ensemble de test séparé?
sma

0

Je ne pense pas que la validation croisée soit utilisée à mauvais escient dans le cas de LIBSVM car elle est effectuée au niveau des données de test. Tout ce qu'il fait est une validation croisée k-fold et rechercher le meilleur paramètre pour le noyau RBF. Faites-moi savoir que vous n'êtes pas d'accord.


La sélection des hyperparamètres ne doit en aucun cas impliquer les données de test, car cela conduira à une estimation de performance biaisée de manière optimiste. Essentiellement, le choix des hyper-paramètres doit être traité comme une partie intégrante de l'ajustement du SVM, de sorte que la procédure de test doit également tester l'erreur due à la sélection des hyper-paramètres, voir mon article auquel je fais référence dans ma réponse à la question (c'est un accès libre).
Dikran Marsupial
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.