Pergunta

A implementação do OpenCV SVM exige um parâmetro rotulado como "Tipo SVM", que deve ser usado na estrutura CVSVMParams usada no treinamento do SVM. Toda a explicação que posso encontrar é:

// SVM type
enum { C_SVC=100, NU_SVC=101, ONE_CLASS=102, EPS_SVR=103, NU_SVR=104 };

Alguém sabe o que esses valores diferentes representam?

Foi útil?

Solução

No geral:

  • Classificação SVM Tipo 1 (também conhecida como classificação C-SVM)
  • CLASSIFICAÇÃO SVM TIPO 2 (também conhecida como classificação NU-SVM)
  • Regressão SVM tipo 1 (também conhecida como regressão Epsilon-SVM)
  • Regressão SVM tipo 2 (também conhecida como regressão NU-SVM)

Detalhes podem ser encontrados na página Svm

Outras dicas

São formulações diferentes de SVM. No coração do SVM está um problema de otimização matemática. Esse problema pode ser declarado de maneiras diferentes.

O C-SVM usa C como o parâmetro de troca entre o tamanho da margem e o número de pontos de treinamento que são classificados incorretamente. C é apenas um número, o intervalo útil depende do conjunto de dados e pode variar de muito pequeno (como 10-5) a muito grande (como 10^5), dependendo dos seus dados.

O NU-SVM usa Nu em vez de C. nu é aproximadamente uma porcentagem de pontos de treinamento que acabarão como vetores de suporte. Quanto mais vetores de suporte, mais ampla sua margem, mais pontos de treinamento serão classificados incorretamente. A NU varia de 0,1 a 0,8 - a 0,1 aproximadamente 10% dos pontos de treinamento serão vetores de suporte, em 0,8, mais como 80%. Eu digo aproximadamente porque está apenas correlacionado dessa maneira - não é exato.

Epsilon-SVR e NU-SVR usam SVM para regressão. Em vez de fazer a classificação binária, encontrando um hiperplano de margem máxima, o conceito é usado para encontrar um hipertube que melhor se ajuste aos dados para usá -los para prever modelos futuros. Eles diferem na maneira como são parametrizados (como Nu-SVM e C-SVM diferem).

O SVM de uma classe é detecção de novidade. Em vez de classificação binária, ou prever um valor, você dá ao SVM um conjunto de treinamento e tenta treinar um modelo para envolver esse conjunto para que uma instância futura possa ser classificada como parte da classe ou fora da classe (romance ou ponto fora da curva).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top