Recientemente comencé a aprender a trabajar sklearn
y acabo de encontrar este resultado peculiar.
Utilicé el digits
conjunto de datos disponible sklearn
para probar diferentes modelos y métodos de estimación.
Cuando probé un modelo de máquina de vectores de soporte en los datos, descubrí que hay dos clases diferentes sklearn
para la clasificación SVM: SVC
y LinearSVC
, donde el primero usa el enfoque uno contra uno y el otro usa el enfoque uno contra el resto .
No sabía qué efecto podría tener en los resultados, así que probé ambos. Hice una estimación al estilo de Monte Carlo donde ejecuté ambos modelos 500 veces, cada vez dividiendo la muestra aleatoriamente en 60% de entrenamiento y 40% de prueba y calculando el error de la predicción en el conjunto de prueba.
El estimador SVC regular produjo el siguiente histograma de errores: mientras que el estimador SVC lineal produjo el siguiente histograma:
¿Qué podría explicar una diferencia tan marcada? ¿Por qué el modelo lineal tiene una precisión tan alta la mayor parte del tiempo?
Y, en relación, ¿qué podría estar causando la fuerte polarización en los resultados? O una precisión cercana a 1 o una precisión cercana a 0, nada intermedio.
A modo de comparación, una clasificación de árbol de decisión produjo una tasa de error mucho más distribuida normalmente con una precisión de alrededor de .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).