A máquina de vetores de suporte pode ser usada em grandes dados?

13

Com o conhecimento limitado que tenho sobre SVM, é bom para uma matriz de dados curta e gorda (muitos recursos e poucas instâncias), mas não para big data.X

Entendo que um dos motivos é a Matriz do Kernel é uma matriz que é o número de instâncias nos dados. Se tivermos dito, 100K dados, a matriz do núcleo terá elementos e poderá levar ~ 80G de memória.Kn×nnK1010

Existe alguma modificação do SVM que possa ser usada em grandes dados? (Digamos na escala de 100 mil a 1 milhão de pontos de dados?)

Haitao Du
fonte
Ajudaria os respondentes em potencial se você discutisse o objetivo do SVM além de apenas "grandes dados". Dito isso, e sem saber mais nada sobre sua consulta, existe algum motivo para que um SVM não possa ser alavancado em um algoritmo de divisão e conquista?
Mike Hunter
Para que você está usando o SVM? Você poderia usar um método alternativo?
tom

Respostas:

12

Como você mencionou, o armazenamento da matriz do kernel requer memória escalável quadraticamente com o número de pontos de dados. O tempo de treinamento para os algoritmos SVM tradicionais também é dimensionado de maneira super-linear com o número de pontos de dados. Portanto, esses algoritmos não são viáveis ​​para grandes conjuntos de dados.

Um truque possível é reformular um SVM kernelizado como um SVM linear. Cada elemento da matriz do kernel representa o produto escalar entre os pontos de dados e após o mapeamento (possivelmente não linear) para um espaço de recurso: . O mapeamento de espaço de recursosKijxixjKij=Φ(xi)Φ(xj)Φé definido implicitamente pela função do kernel, e os SVMs kernelizados não calculam explicitamente as representações do espaço de recursos. Isso é computacionalmente eficiente para conjuntos de dados de tamanho pequeno a médio, pois o espaço de recursos pode ser de dimensões muito altas ou mesmo de dimensões infinitas. Mas, como acima, isso se torna inviável para grandes conjuntos de dados. Em vez disso, podemos mapear explicitamente os dados de maneira não linear no espaço de feição, e treinar com eficiência um SVM linear nas representações de espaço de feição. O mapeamento do espaço de recursos pode ser construído para aproximar uma determinada função do kernel, mas usa menos dimensões que o mapeamento do espaço de recursos 'completo'. Para conjuntos de dados grandes, isso ainda pode nos fornecer representações valiosas do espaço de recursos, mas com muito menos dimensões do que pontos de dados.

Uma abordagem para a aproximação do kernel usa a aproximação de Nyström (Williams e Seeger 2001). Essa é uma maneira de aproximar os valores próprios / vetores próprios de uma matriz grande usando uma submatriz menor. Outra abordagem usa recursos aleatórios e às vezes é chamada de “pias de cozinha aleatórias” (Rahimi e Recht 2007).

Outro truque para treinar SVMs em grandes conjuntos de dados é aproximar o problema de otimização com um conjunto de subproblemas menores. Por exemplo, o uso da descida estocástica do gradiente no problema primordial é uma abordagem (entre muitas outras). Muito trabalho foi feito na frente da otimização. Menon (2009) faz uma boa pesquisa.

Referências

Williams e Seeger (2001). Usando o método Nystroem para acelerar máquinas do kernel.

Rahimi e Recht (2007). Recursos aleatórios para máquinas de kernel em larga escala.

Menon (2009) . Máquinas de vetores de suporte em larga escala: algoritmos e teoria.

user20160
fonte