2014-09-08 4 views
3

J'utilise la bibliothèque scikit-learn pour python pour un problème de classification. J'ai utilisé RandomForestClassifier et un SVM (classe SVC). Cependant, alors que la RF atteint environ 66% de précision et 68% de rappel, le SVM n'atteint que 45% chacun.SVM de mauvaises performances par rapport à Random Forest

J'ai fait un GridSearch pour les paramètres C et gamma pour le RBF-SVM et également considéré comme mise à l'échelle et la normalisation à l'avance. Cependant, je pense que l'écart entre RF et SVM est encore trop important. Que dois-je envisager de mieux pour obtenir une performance SVM adéquate?

Je pensais qu'il devrait être possible d'obtenir au moins des résultats égaux. (Tous les scores sont obtenus par validation croisée sur les mêmes ensembles de test et d'entraînement.)

+5

Pourquoi pensez-vous que cela devrait aussi bien fonctionner? – EdChum

+0

Eh bien, je pensais que l'espace modèle du SVM et du RF devrait être plus ou moins similaire et donc il devrait y avoir des modèles similaires donnant des résultats similaires ... –

+4

Il n'y a aucune garantie que la performance entre les 2 modèles sera la même , le fait que vous ayez essayé d'optimiser les params et effectué la mise à l'échelle et la normalisation ne garantit pas qu'ils devraient tous les deux fonctionner aussi bien. Vous pouvez essayer le [exemple] (http://scikit-learn.org/stable/auto_examples/plot_classifier_comparison.html) sur votre ensemble de données et voir par vous-même, vous trouverez finalement qu'il n'y a pas de règle absolue ou de garantie que tout le modèle sera ** toujours ** le meilleur – EdChum

Répondre

4

Comme EdChum l'a dit dans les commentaires, il n'y a aucune règle ou garantie qu'un modèle fonctionne toujours mieux. Le modèle SVM avec le noyau RBF suppose que la limite de décision optimale est lisse et invariante par rotation (une fois que vous avez corrigé une mise à l'échelle spécifique qui n'est pas invariante par rotation).

La forêt aléatoire ne fait pas l'hypothèse de lissage (c'est une fonction de prédiction constante par morceaux) et favorise les limites de décision alignées sur l'axe.

Les hypothèses formulées par le modèle RF pourraient mieux correspondre à la tâche.

BTW, merci pour avoir la grille recherché C et gamma et vérifié l'impact de la normalisation de la fonction avant de demander sur stackoverflow :)

Modifier pour obtenir un peu plus de perspicacité, il pourrait être intéressant de tracer la learning curves pour la 2 modèles. Il se peut que la régularisation du modèle SVM et la bande passante du noyau ne permettent pas de gérer un surajustement suffisant, alors que la nature de l'ensemble de RF fonctionne mieux pour cette taille de jeu de données. L'écart pourrait se rapprocher si vous aviez plus de données. Le tracé des courbes d'apprentissage est un bon moyen de vérifier comment votre modèle bénéficierait de plus d'échantillons.

Questions connexes