Niedawno zacząłem uczyć się pracy sklearn
i właśnie spotkałem się z tym osobliwym rezultatem.
Użyłem digits
dostępnego zestawu danych, sklearn
aby wypróbować różne modele i metody szacowania.
Kiedy testowaliśmy model Pomoc Wektor maszynowego na danych, znalazłem tam są dwie różne klasy w sklearn
klasyfikacji SVM: SVC
a LinearSVC
, gdzie dawne zastosowania jednego przed jednym podejściem i innych zastosowań jedno-przeciw-reszta podejście.
Nie wiedziałem, jaki wpływ może to mieć na wyniki, więc spróbowałem obu. Przeprowadziłem oszacowanie w stylu Monte Carlo, w którym testowałem oba modele 500 razy, za każdym razem losowo dzieląc próbkę na 60% treningu i 40% testu i obliczając błąd prognozy na zestawie testowym.
Zwykły estymator SVC wygenerował następujący histogram błędów: Podczas gdy liniowy estymator SVC wytworzył następujący histogram:
Co może tłumaczyć tak wyraźną różnicę? Dlaczego model liniowy ma większą dokładność przez większość czasu?
I w związku z tym, co może powodować surową polaryzację wyników? Albo dokładność bliska 1, albo dokładność bliska 0, nic pomiędzy.
Dla porównania, klasyfikacja drzewa decyzyjnego dała znacznie bardziej normalnie rozproszony poziom błędu z dokładnością około 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).