Di recente ho iniziato a imparare a lavorare con sklearn
e ho appena riscontrato questo risultato peculiare.
Ho usato il digits
set di dati disponibile sklearn
per provare diversi modelli e metodi di stima.
Quando ho testato un modello di Support Vector Machine sui dati, ho scoperto che ci sono due diverse classi sklearn
per la classificazione SVM: SVC
e LinearSVC
, dove il primo utilizza un approccio uno contro uno e l'altro utilizza un approccio uno contro riposo .
Non sapevo quale effetto potesse avere sui risultati, quindi ho provato entrambi. Ho fatto una stima in stile Monte Carlo in cui ho eseguito entrambi i modelli 500 volte, dividendo ogni volta il campione casualmente in 60% di allenamento e 40% di test e calcolando l'errore della previsione sul set di test.
Lo stimatore SVC regolare ha prodotto il seguente istogramma di errori: Mentre lo stimatore SVC lineare ha prodotto il seguente istogramma:
Cosa potrebbe spiegare una differenza così netta? Perché il modello lineare ha una precisione così elevata la maggior parte delle volte?
E, di conseguenza, cosa potrebbe causare la forte polarizzazione nei risultati? Un'accuratezza prossima a 1 o un'accuratezza vicina a 0, niente in mezzo.
Per fare un confronto, una classificazione dell'albero decisionale ha prodotto un tasso di errore distribuito molto più normalmente con una precisione di circa .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).