La machine vectorielle de support peut-elle être utilisée dans les grandes données?

13

Avec les connaissances limitées que j'ai sur SVM, c'est bon pour une matrice de données courte et grasse (beaucoup de fonctionnalités et pas trop d'instances), mais pas pour les big data.X

Je comprends qu'une raison est que la matrice du noyau est une matrice où, est le nombre d'instances dans les données. Si nous disons, 100K données, la matrice du noyau aura éléments, et peut prendre ~ 80G de mémoires.Kn×nnKdixdix

Y a-t-il une modification de SVM qui peut être utilisée dans de grandes données? (Par exemple, sur une échelle de 100K à 1M de points de données?)

Haitao Du
la source
Cela aiderait les répondants potentiels si vous discutiez de l’objectif du SVM au-delà des «grandes données». Cela dit et sans rien savoir de votre requête, y a-t-il une raison pour laquelle un SVM ne peut pas être exploité dans un algorithme de division et de conquête?
Mike Hunter
Pourquoi utilisez-vous le SVM? Pourriez-vous utiliser une autre méthode?
tom

Réponses:

12

Comme vous le mentionnez, le stockage de la matrice du noyau nécessite une mémoire qui évolue de manière quadratique avec le nombre de points de données. Le temps de formation pour les algorithmes SVM traditionnels évolue également de manière superlinéaire avec le nombre de points de données. Donc, ces algorithmes ne sont pas réalisables pour les grands ensembles de données.

Une astuce possible consiste à reformuler un SVM noyaué en un SVM linéaire. Chaque élément de la matrice du noyau représente le produit scalaire entre les points de données et après les avoir (éventuellement de manière non linéaire) dans un espace caractéristique: . La cartographie de l'espace des fonctionnalitésKjejXjeXjKjej=Φ(Xje)Φ(Xj)Φest défini implicitement par la fonction noyau, et les SVM noyés ne calculent pas explicitement les représentations de l'espace des fonctionnalités. Ceci est efficace sur le plan des calculs pour les ensembles de données de petite à moyenne taille, car l'espace d'entité peut être de dimension très élevée, voire infinie. Mais, comme ci-dessus, cela devient impossible pour les grands ensembles de données. Au lieu de cela, nous pouvons explicitement mapper les données de manière non linéaire dans l'espace d'entités, puis former efficacement un SVM linéaire sur les représentations de l'espace d'entités. Le mappage de l'espace des fonctionnalités peut être construit pour approximer une fonction de noyau donnée, mais utilise moins de dimensions que le mappage de l'espace des fonctionnalités «complet». Pour les grands ensembles de données, cela peut toujours nous donner des représentations d'espace d'entités riches, mais avec beaucoup moins de dimensions que les points de données.

Une approche de l'approximation du noyau utilise l'approximation de Nyström (Williams et Seeger 2001). C'est une façon d'approximer les valeurs propres / vecteurs propres d'une grande matrice en utilisant une sous-matrice plus petite. Une autre approche utilise des caractéristiques aléatoires et est parfois appelée «éviers de cuisine aléatoires» (Rahimi et Recht 2007).

Une autre astuce pour entraîner les SVM sur de grands ensembles de données consiste à approximer le problème d'optimisation avec un ensemble de sous-problèmes plus petits. Par exemple, l'utilisation d'une descente de gradient stochastique sur le problème primaire est une approche (parmi tant d'autres). Beaucoup de travail a été fait sur le front de l'optimisation. Menon (2009) donne une bonne enquête.

Les références

Williams et Seeger (2001). Utilisation de la méthode Nystroem pour accélérer les machines du noyau.

Rahimi et Recht (2007). Fonctionnalités aléatoires pour les machines à noyau à grande échelle.

Menon (2009) . Machines à vecteurs de support à grande échelle: algorithmes et théorie.

user20160
la source