SVM de uma classe vs. SVM exemplar


16

Entendo que os SVMs de uma classe (OSVMs) foram propostos com a ausência de dados negativos em mente e que eles procuram encontrar limites de decisão que separem um conjunto positivo e algum ponto de ancoragem negativo, dizem a origem.

Um trabalho em 2011 propõe SVMs exemplares (ESVMs) que treinam um "classificador único por categoria" que afirma ser diferente de OSVMs, pois ESVMs não "exigem o mapeamento dos exemplos em um espaço de recurso comum sobre o qual um kernel de similaridade pode ser computado ". Não entendo direito o que isso significa e como as ESVMs diferem das OSVMs. E então, como eles diferem? E como essa computação de kernel de similaridade é evitada nos ESVMs?

Respostas:


20

(Você pode consultar a "tabela" abaixo primeiro)

Vamos começar com as máquinas de vetores de suporte "clássicas". Eles aprendem a discriminar entre duas categorias. Você coleta alguns exemplos da categoria A, alguns da categoria B e os passa para o algoritmo de treinamento SVM, que encontra a linha / plano / hiperplano que melhor separa A de B. Isso funciona - e geralmente funciona muito bem - quando você deseja distinguir entre classes bem definidas e mutuamente exclusivas: homens versus mulheres, as letras do alfabeto e assim por diante.

No entanto, suponha que você queira identificar "A" s. Você pode tratar isso como um problema de classificação: Como faço para distinguir "A" s de "não-A" s. É bastante fácil reunir um conjunto de treinamento composto por fotos de cães, mas o que deve incluir no conjunto de treinamento de não cães? Como existe um número infinito de coisas que não são cães, pode ser difícil construir um conjunto abrangente e ainda representativo de todas as coisas não caninas. Em vez disso, você pode considerar o uso de um classificador de uma classe. O classificador tradicional de duas classes localiza um (hiper) plano que separa A de B. O SVM de uma classe encontra a linha / plano / hiperplano que separa todos os pontos da classe (os "A" s) da origem ;

O "sistema" do Ensemble SVM é na verdade uma coleção de muitas "subunidades" do SVM de duas classes. Cada subunidade é treinada usando um únicoexemplo positivo para uma classe e uma enorme coleção de exemplos negativos para a outra. Assim, em vez de discriminar exemplos de cães versus não-cães (SVM padrão de duas classes) ou cães versus origem (SVM de uma classe), cada subunidade discrimina entre cães específicos (por exemplo, "Rex") e muitos não-cães exemplos. Os SVMs de subunidades individuais são treinados para cada exemplo da classe positiva; portanto, você teria um SVM para Rex, outro para Fido, outro para o cão do seu vizinho que late às 6h e assim por diante. As saídas desses SVMs da subunidade são calibradas e combinadas para determinar se um cão, não apenas um dos exemplos específicos, aparece nos dados de teste. Eu acho que você também pode pensar nas sub-redes individuais como SVMs de uma classe, onde o espaço de coordenadas é alterado para que o único exemplo positivo esteja na origem.

Em resumo, as principais diferenças são:

Dados de treinamento

  • SVM de duas classes: exemplos positivos e negativos
  • Uma classe SVM: apenas exemplos positivos
  • Conjunto "sistema" SVM: exemplos positivos e negativos. Cada subunidade é treinada em um único exemplo positivo e em muitos exemplos negativos.

Número de Máquinas

  • SVM de duas classes: um
  • Uma classe SVM: uma
  • Conjunto "sistema" SVM: muitos (uma máquina de subunidade por exemplo positivo)

Exemplos por classe (por máquina)

  • SVM de duas classes: muitos / muitos
  • Uma classe SVM: muitas / uma (fixada na origem)
  • Conjunto "sistema" SVM: muitos / muitos
  • "Subunidade" do ensemble SVM: um / muitos

Pós-processamento

  • SVM de duas classes: não é necessário
  • Uma classe SVM: não é necessário
  • Ensemble SVM: necessário fundir a saída de cada SVM em uma previsão em nível de classe.

Postscript: Você perguntou o que eles querem dizer com "[outras abordagens] exigem o mapeamento dos exemplos em um espaço de recurso comum sobre o qual um kernel de similaridade pode ser computado". Eu acho que eles querem dizer que um SVM tradicional de duas classes opera sob a suposição de que todos os membros da classe são de alguma forma semelhantes, e então você deseja encontrar um kernel que coloque grandes dinamarqueses e dachsunds próximos um do outro, mas longe de todo o resto. Por outro lado, o sistema SVM do conjunto evita isso chamando algo de cão, se for suficientemente dinamarquês ou dachsund ou poodle, sem se preocupar com a relação entre esses exemplos.


Obrigado pela resposta excelente e abrangente. Só para esclarecer, em alguns lugares você realmente quer dizer "Conjunto" de SVMs exemplares, mas em outros, apenas SVM "exemplar"? Eu acho que para ser justo, deve-se comparar com (1) uma OSVM ÚNICA com uma ESVM ÚNICA ou (2) ENSEMBLE de OSVMs com ENSEMBLE de ESVMs.
— bjou

Espero que não seja muito fora de tópico perguntar como isso generaliza para várias classes? Se eu tenho gatos, cães e pássaros, isso faz com que a esvm exija um SVM de "elemento" para fido versus cada gato E um SVM de "elemento" para fido versus cada pássaro? Se eu tivesse 10 pontos de dados para cada uma das 3 categorias, isso significaria que eu tenho 20 SVMs de elementos por "cão" ou um conjunto composto por 200 elementos? E se eu tiver 300 pontos de dados e 20 dimensões, ou 50k pontos de dados e 50k dimensões. Se eu estivesse criando uma floresta aleatória de SVMs, poderia usar subconjuntos aleatórios para reduzir o impacto da "maldição da dimenionalidade"?
— EngrStudent - Restabelecer Monica

@ bjou, eu estava um pouco desleixado com a terminologia ESVM, então voltei e limpei. Eu acho que você poderia pensar em uma "subunidade" do sistema ESVM como uma OSVM, exceto que o sistema de coordenadas foi centrado novamente para que o exemplo positivo esteja na origem.
— 228138 Matt Krause #

1
@EngrStudent, na verdade generaliza muito bem. No artigo, eles usam a tarefa VOC de Pascal, que possui ~ 20 categorias. Para estender nosso exemplo animal, você teria uma subunidade para "Fido" vs. (todos os pássaros, gatos e peixes), outra subunidade para "Rex" vs. todos os não-cães, e assim por diante para cada cão. Para os pássaros, você treinaria "Piu-Piu" vs. (todos os gatos, cães, peixes), "Polly" vs. todos os não-pássaros, e assim por diante. Também haveria uma subunidade para cada exemplo de gato e peixe, treinada contra todos os não gatos e não peixes, respectivamente. Você acaba com 1 SVM por exemplo rotulado, independentemente do número de classes.
— Matt Krause

Parece um primo de reforço (no sentido de árvores com gradiente). O conjunto, seu erro de saída é ponderado ou uniformemente ponderado?
— EngrStudent - Reinstate Monica

2

Em resumo, o modelo ESVM é um conjunto de SVMs treinados para distinguir cada elemento do conjunto de treinamento de todo o resto, enquanto o OSVM é um conjunto de SVMs treinados para distinguir cada subconjunto de elementos de treinamento que pertencem a uma classe. Portanto, se você tiver 300 exemplos de gatos e 300 cães no conjunto de treinamento, a ESVM criará 600 SVMs, cada um para um animal de estimação, enquanto a OSVM criará dois SVMs (primeiro para todos os gatos, segundo para todos os cães).

Dessa forma, o ESVM não precisa encontrar um espaço no qual toda a classe se agrupe, mas um espaço no qual esse elemento único é mais externo, o que provavelmente é mais simples e leva a uma alta precisão. Diz-se que a lembrança é fornecida pelo conjunto.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.