2016-08-23 2 views
1

Je fais une régression multinomiale avec glmnet dans matlab, et j'ai un ensemble de données d'environ 6-10 Go, en fonction de la taille de l'ensemble de test. Je suis capable de le charger dans la mémoire, mais il semble que glmnetmex est incapable de gérer tout le jeu de données pour des tailles d'entraînement plus grandes (comme en laisser une). Je suppose qu'il devrait y avoir un moyen de grouper les entrées à glmnetmex, mais je n'arrive pas à le trouver dans la documentation. Existe-t-il ou avez-vous des recommandations sur la marche à suivre? Je vais bien utiliser la version R à la place si elle a une façon d'aborder cette questionensemble de données surdimensionné par lot glmnet

+0

Attendez, utilisez-vous R ou Matlab? –

+0

J'utilise matlab, mais sous le capot, glmnetmex est Fortran. Si la version matlab ou R de glmnet peut gérer cela, j'utilise l'une ou l'autre des implémentations (de préférence matlab). Je vais clarifier cela dans la question. –

Répondre

0

Etre capable d'alimenter des lots à une méthode nécessite deux choses:

  • Capacité d'initialiser l'algorithme d'apprentissage avec un ajustement précédent
  • Possibilité d'exécuter l'algorithme d'apprentissage pour un nombre limité d'itérations

glmnet a ce dernier mais, malheureusement, pas le premier. Je pense que vous avez plusieurs options pour aborder le problème:

  • Trouvez une meilleure machine. Vous pouvez envisager d'utiliser l'un des services cloud, si vos ressources financières le permettent.
  • Creusez dans le code glmnet. Les packages MATLAB et R sont des wrappers pour l'optimiseur réel, qui est écrit en FORTRAN. Les deux wrappers font une nouvelle initialisation des variables du modèle avant de les passer au solveur FORTRAN. Vous pouvez essayer de le modifier pour utiliser un modèle pré-calculé.
  • Vous pouvez envisager de construire un prédicteur d'ensemble, où vous formez un modèle distinct glmnet sur chaque lot et utilisez un schéma de vote pondéré (où chaque prédicteur est pondéré par sa performance de validation croisée) pour effectuer des prédictions finales.
  • J'ai un R package qui fournit un cadre de régularisation plus général, mais il peut également être utilisé pour former des modèles de filets élastiques standard comme avec glmnet. Mon paquet vous permet d'initialiser l'entraînement avec un modèle pré-calculé, ainsi que d'exécuter un entraînement pour un nombre fixe d'itérations. L'inconvénient est que j'ai seulement un solveur binomial, pas un multinomial. Donc, vous devrez le pirater avec un système un contre un ou un contre un. Enfin, si vous n'êtes pas attaché aux modèles linéaires, il existe de nombreuses autres méthodes d'apprentissage qui permettent un dosage facile des entrées. Les cadres d'apprentissage en profondeur et de réseau neuronal sont actuellement parmi les plus populaires.