Voici mes données d'entraînement: 200 000 exemples x 10 000 fonctionnalités. Ma matrice de données d'entraînement est donc de - 200 000 x 10 000.
J'ai réussi à enregistrer cela dans un fichier plat sans avoir de problèmes de mémoire en enregistrant chaque ensemble de données un par un (un exemple après l'autre) pendant que je générais les fonctionnalités pour chaque exemple.
Mais maintenant, quand j'utilise Milk , SVM light ou tout autre algorithme d'apprentissage machine, tout essaie de charger toutes les données d'entraînement en mémoire au lieu de les entraîner une par une. Cependant, je n'ai que 8 Go de RAM, donc je ne peux pas procéder de cette façon.
Savez-vous de toute façon que je pourrais former l'algorithme un ensemble de données par un ensemble de données? C'est-à-dire que, à tout instant, je n'ai qu'un seul ensemble de données chargé en mémoire pendant l'entraînement.
la source
Réponses:
Je crois que le terme pour ce type d'apprentissage est un apprentissage hors du noyau . Une suggestion est vowpal wabbit , qui a une bibliothèque R pratique , ainsi que des bibliothèques pour de nombreuses autres langues.
la source
J'appuie chaleureusement la suggestion de Zach. vowpal wabbit est une excellente option, et vous seriez surpris par sa vitesse. Un ensemble de données de 200k par 10k n'est pas considéré comme volumineux par les normes de vowpal wabbit.
vowpal_wabbit (disponible sous forme de source via https://github.com/JohnLangford/vowpal_wabbit , une ancienne version est disponible en tant que package standard dans l'univers Ubuntu) est un apprenant linéaire + bilinéaire en ligne rapide, avec une entrée très flexible. Vous pouvez mélanger des fonctionnalités binaires et numériques. Il n'est pas nécessaire de numéroter les fonctionnalités car les noms de variables fonctionneront "tels quels". Il a une tonne d'options, d'algorithmes, de réductions, de fonctions de perte et une grande flexibilité globale. Vous pouvez rejoindre la liste de diffusion (la trouver via github) et poser n'importe quelle question. La communauté est très compétente et solidaire.
la source
J'ai répondu à une question similaire ici . Le point est que la plupart des algorithmes d'apprentissage automatique / d'exploration de données sont des apprenants par lots, c'est-à-dire qu'ils chargent toutes les données en mémoire. Par conséquent, vous avez besoin d'outils différents pour les très grands ensembles de données que vous avez. Voir également les outils de ces questions.
L'apprentissage en ligne est un moyen de réduire l'empreinte mémoire des algorithmes.
la source