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.RandomForestClassifier
et sklearn.svm.SVC
pour 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?
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.
la source
"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.
la source