Pourquoi svm n'est-il pas aussi bon que l'arbre de décision sur les mêmes données?


9

Je suis nouveau dans l'apprentissage automatique et j'essaie d'utiliser scikit-learn (sklearn) pour résoudre un problème de classification. Les deux DecisionTree et SVM peuvent former un classificateur à ce problème.

J'utilise sklearn.ensemble.RandomForestClassifieret sklearn.svm.SVCpour ajuster les mêmes données de formation (environ 500 000 entrées avec 50 fonctionnalités par entrée). Le RandomForestClassifier sort avec un classificateur en environ une minute. Le SVC utilise plus de 24 heures et continue de fonctionner.

Pourquoi le SVC fonctionne-t-il si inefficacement? L'ensemble de données est-il trop volumineux pour SVC ? SVC est-il inapproprié pour un tel problème?

Réponses:


13

Les possibilités incluent l'utilisation d'un noyau inapproprié (par exemple un noyau linéaire pour un problème non linéaire), un mauvais choix du noyau et des hyper-paramètres de régularisation. Bonne sélection de modèle (le choix du réglage du noyau et de l'hyper-paramètre est la clé pour obtenir de bonnes performances des SVM, ils ne peuvent donner de bons résultats que s'ils sont utilisés correctement).

Les SVM prennent souvent beaucoup de temps à s'entraîner, cela est particulièrement vrai lorsque le choix du noyau et en particulier du paramètre de régularisation signifie que presque toutes les données finissent comme vecteurs de support (la rareté des SVM est un sous-produit pratique, rien de plus).

Enfin, les théorèmes du déjeuner gratuit disent qu'il n'y a pas de supériorité a priori pour un système de classificateur par rapport aux autres, donc le meilleur classificateur pour une tâche particulière est lui-même dépendant de la tâche. Cependant, il existe une théorie plus convaincante pour le SVM qui suggère qu'il est susceptible d'être un meilleur choix que de nombreuses autres approches pour de nombreux problèmes.


2
1. Comment savoir si un problème est linéaire ou non? Selon les données de formation? 2. Pourriez-vous recommander du matériel sur "comment faire un bon choix de noyau et régler l'hyper-paramètre"?
Java Xu

Il n'est généralement pas possible de savoir avec certitude qu'un problème est linéaire, mais les classificateurs non linéaires surpassant systématiquement les non-linéaires sont une indication claire qu'il s'agit d'une tâche non linéaire.
Dikran Marsupial

Pour ajuster le noyau et les paramètres de régularisation, la validation croisée est une approche raisonnable, en utilisant soit une recherche de grille ou une méthode d'optimisation numérique (j'utilise Nelder Mead simplex). Pour les SVM, la "limite de portée" fournit une approximation utile de l'erreur de validation croisée sans laisser. Notez que vous devez utiliser quelque chose comme la validation croisée imbriquée si vous voulez également une estimation de performance impartiale (voir les réponses aux autres questions que j'ai données).
Dikran Marsupial

1
500k points de données est un problème suffisamment important pour que les SVM du noyau mettent un certain temps à s'entraîner. Cela vaut la peine d'essayer LinearSVM, qui ne prend en charge qu'un classificateur linéaire mais fonctionne beaucoup plus rapidement, ou un classificateur SGD , qui peut être encore plus rapide. Si cela ne fonctionne pas bien, vous pouvez essayer d'utiliser l' approximation du noyau , qui vous permet d'utiliser un classificateur linéaire pour approximer un classificateur non linéaire. Cela dit, les forêts aléatoires sont également un bon algorithme et peuvent être idéales pour vos données.
Dougal

18

Les arbres de décision et les forêts aléatoires sont en fait extrêmement bons classificateurs. Bien que les SVM (Support Vector Machines) soient considérés comme plus complexes, cela ne signifie pas en fait qu'ils fonctionneront mieux.

L'article "An Empirical Comparison of Supervised Learning Algorithms" de Rich Caruana a comparé 10 classificateurs binaires différents, SVM, Neural-Networks, KNN, Logistic Regression, Naive Bayes, Random Forests, Decision Trees, Bagged Decision Trees, Boosted Decision trees and Bootstrapped Decision. Arbres sur onze ensembles de données différents et comparaison des résultats sur 8 mesures de performances différentes.

Ils ont constaté que les arbres de décision boostés arrivaient en premier avec les forêts aléatoires en second, puis les arbres de décision ensachés et ensuite SVM

Les résultats dépendront également du nombre de classes pour lesquelles vous effectuez une classification.


5

"si un problème est linéaire ou non" Dans un problème de classification binaire, si l'ensemble de données peut être séparé par un hyperplan, c'est un problème linéaire.

Si l'ensemble de données n'est pas linéaire séparable, alors que vous essayez un classificateur linéaire pour trouver un tel hyperplan qui n'existe pas du tout, l'algorithme peut sembler fonctionner indéfiniment.

Une suggestion: vous pouvez échantillonner une petite partie de vos données et essayer ces algorithmes pour voir si cela fonctionne dans un petit ensemble de données. Augmentez ensuite l'ensemble de données pour vérifier à quel moment ces problèmes se produisent.

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.