Recentemente, comecei a aprender a trabalhar sklearn
e acabei de encontrar esse resultado peculiar.
Usei o digits
conjunto de dados disponível sklearn
para experimentar diferentes modelos e métodos de estimativa.
Quando testei um modelo de máquina de vetor de suporte nos dados, descobri que existem duas classes diferentes sklearn
para a classificação SVM: SVC
e LinearSVC
, onde o primeiro usa a abordagem um contra um eo outro usa a abordagem um contra o resto .
Eu não sabia que efeito isso poderia ter nos resultados, então tentei os dois. Fiz uma estimativa no estilo Monte Carlo, onde executei os dois modelos 500 vezes, dividindo a amostra aleatoriamente em 60% de treinamento e 40% de teste e calculando o erro da previsão no conjunto de testes.
O estimador SVC regular produziu o seguinte histograma de erros: Enquanto o estimador SVC linear produziu o seguinte histograma:
O que poderia explicar uma diferença tão gritante? Por que o modelo linear tem uma precisão tão maior na maioria das vezes?
E, relacionado, o que poderia estar causando a forte polarização nos resultados? Precisão próxima de 1 ou precisão próxima de 0, nada no meio.
Para comparação, uma classificação em árvore de decisão produziu uma taxa de erro muito mais normalmente distribuída com uma precisão de cerca de 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).