J'ai récemment commencé à apprendre à travailler avec sklearn
et je viens de découvrir ce résultat particulier.
J'ai utilisé l' digits
ensemble de données disponible dans sklearn
pour essayer différents modèles et méthodes d'estimation.
Lorsque j'ai testé un modèle de machine à vecteurs de support sur les données, j'ai découvert qu'il existe deux classes différentes sklearn
pour la classification SVM: SVC
et LinearSVC
, où la première utilise une approche un contre un et l'autre une approche un contre un repos .
Je ne savais pas quel effet cela pouvait avoir sur les résultats, j'ai donc essayé les deux. J'ai fait une estimation de style Monte Carlo où j'ai exécuté les deux modèles 500 fois, chaque fois en divisant l'échantillon de manière aléatoire en un entraînement de 60% et un test de 40% et en calculant l'erreur de la prédiction sur l'ensemble de test.
L'estimateur SVC régulier a produit l'histogramme d'erreurs suivant: Alors que l'estimateur SVC linéaire a produit l'histogramme suivant:
Qu'est-ce qui pourrait expliquer une telle différence? Pourquoi le modèle linéaire a-t-il la plus grande précision la plupart du temps?
Et, corrélativement, qu'est-ce qui pourrait être à l'origine de la forte polarisation des résultats? Soit une précision proche de 1, soit une précision proche de 0, rien entre les deux.
À titre de comparaison, une classification par arbre de décision a produit un taux d'erreur beaucoup plus normalement distribué avec une précision d'environ 0,85.
Similar to SVC with parameter kernel=’linear’, but implemented in terms of liblinear rather than libsvm, so it has more flexibility in the choice of penalties and loss functions and should scale better (to large numbers of samples).