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?

bjou
fonte

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.

Matt Krause
fonte
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.


fonte