(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.