1
resposta

Dúvida com o LinearSVC

Entendi que é preciso usar o LinearSVC porque o OneVsRest tem suporte para ele. Mas fiquei com dúvida sobre como ele funciona por baixo dos panos. É da mesma forma que o MultinomialNB?

1 resposta

Olá, Lucas! Tudo bom com você? Espero que sim!

Primeiro, desculpe a demora em te responder.

O LinearSVC faz parte de um conjunto de modelos de máquina de vetor de suporte, do inglês Support Vector Machine (SVM), que é um modelo de aprendizado de máquina supervisionado que soluciona problemas de classificação de grupos. Exemplificando, imagine uma situação com 2 grupos distintos e queremos um classificador que, dadas as coordenadas, ele classifique qual grupo pertence um objeto. Dados distribuídos no plot:

Alt: Gráfico de eixos x e y sem escala de fundo branco. mais próximo ao eixo vertical, y, estão seis elementos de círculo preenchidos com a cor vermelha, mais distante do eixo y estão sete elementos de triângulo preenchidos com a cor verde.

O SVM coleta os pontos de cada variável e gera um hiperplano que melhor vai separar os dois grupos.

Alt: Gráfico de eixos x e y sem escala de fundo branco. Mais próximo ao eixo vertical, y, estão seis elementos de círculo preenchidos com a cor vermelha, mais distante do eixo y estão sete elementos de triângulo preenchidos com a cor verde. Entre esses dois conjuntos, há uma linha cinza que vai desde a parte superior da figura até a inferior, próxima a ela existe uma legenda na parte superior da figura com a palavra “hiperplano” e uma seta preta que aponta a palavra para a reta cinza

Podemos notar que a reta cinza é o limiar de separação entre o grupo azul e verde, e assim, tudo que está na parte direita a partir da reta cinza são objetos bola-vermelho e tudo que está na esquerda são triângulo-verde. Note que ela realiza uma separação linear entre os grupos, mas existem outros tipos de separação, como a não linear, que é um conteúdo um pouco mais avançado.

Aprofundando mais na classificação, como explica a própria documentação, o LinearSVC é um SVM com kernel definido como linear e sua classificação se dá por uma estratégia multiclasse que compara um contra o resto (em inglês, One-Vs-Rest Classifier), ajustando o classificador por classes, de modo que, para cada classificador, a classe é ajustada em relação a todas as outras classes. Se quiser saber mais sobre o One-Vs-Rest Classifier vou deixar a explicação do funcionamento na documentação do SKlearn. Já a função de decisão do LinearSVC tem a formulação matemática baseada no conceito de Hinge Loss, conforme explica a documentação.

O algoritmo MultinomialNB implementa o algoritmo Naive Bayes que se baseia no teorema de Bayes com a superposição ingênua entre cada par de características dado o valor da variável de classe, para saber mais sobre esse método, você pode ver o guia da documentação do método MultinomialNB. Então, MultinomialNB e Linear SVC são duas formas de classificação distintas, principalmente se olharmos por debaixo dos panos.

Se tiver mais dúvidas, você pode consultar o guia da documentação para modelos SVM. OBS: Infelizmente todos os links para a documentação estão em inglês, então, caso tenha dificuldade em relação a este idioma, indico que tente utilizar o tradutor do navegador, para conseguir efetuar a leitura em português, mas qualquer dúvida ou dificuldade estarei à disposição

Eu espero ter te ajudado! Qualquer outra dúvida estarei disposta a ajudar ;-)

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software