|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre habitué
![]() Julien Ingénieur d'études / Biostatisticien Inscription : décembre 2009 Messages : 304 ![]() |
Bonjour, je créé un nouveau thread qui se rapproche de celui que j'avais créé juste en dessous http://www.developpez.net/forums/d10...match-prxposn/ .
En résumé j'ai une grosse macro qui fait tout plein de choses et qui, passé un certains nombres de calcul sans souci, se met à me balancer à tout-va le message 'out of memory'. Au niveau des calculs, je précise car je pense que ça a son importance, je fais dans un premier temps tout plein de représentations graphiques et de tests univariées (j'appellerais à l'avenir cet étape: l'étape I), je vide toutes mes tables générées avec un DATASETS. Puis je pars sur les méthodes d'analyses discriminantes et de régressions logistiques. La particularité de mes méthodes multivariées de classification c'est que je les applique à toutes les combinaisons de variables possibles de 1 jusqu'à un 'n' assez grand nombre (le nombre de combinaisons n'est pas suffisamment grand pour que ça soit la (seule..) cause du problème). Mon souci est, pour moi, trés dur à identifier, en effet le problème 'out of memory' intervient qu'à la seconde utilisation des régréssions logistiques (en effet j'ai deux versions: une pour variables continues et qualitatives et une autre pour variables modales et qualitatives). J'ai d'ailleurs procédé à un test, j'ai lancé indépendamment l'étape I, puis je lance (dans la même session SAS) la macro pour l'analyse discrimante sur toutes les combis, aprés celle pour les régressions logistique dans le cas modales + qualitatifs puis celle dans le cas continues + qualitatifs et là intervient à nouveau le problème (sachant que, pour moi, lancer ainsi séparément les différentes macros oblige SAS à remettre à 0 la log et l'output, de même pour les tables stockées). Bref, pour moi, il se passe quelque chose derrière SAS que je n'arrive pas à contrôler, qui remplit la mémoire de SAS et amène mes soucis de 'out of memory'. Sincèrement je vois pas la solution là, surtout que j'ai essayé plusieurs choses (cf mes nombreux threads) où j'ai vidé la bibliothèque WORK, la log et l'output et rien y fait... concernant le thread du lien ci-dessus, je pense pas que les macros-variables soient responsables de mes soucis de 'out of memory', je vais regardé de suite remarque car il me reste plus que ça... Désolé pour le pavé mais je tenais à être assez précis, ce souci est la dernière barrière qu'il me reste avant de finir ma macro et pouvoir passer à une étape "d'embellissement". En vous remerciant par avance. |
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Inscription : septembre 2009 Messages : 60 ![]() |
Hello,
As tu essayé de modifier les paramètres MEMSIZE, SORTSIZE de ton fichier de configuration ? Tu peux visualiser les valeurs de ta configuration avec le code suivant : |
|
|
00
|
|
|
#3 | ||
|
Membre Expert
![]() ![]() Brice BeareParis Inscription : janvier 2011 Messages : 956 ![]() |
Bonjour Julien,
Je ne sais pas comment tu ferais pour interpréter ou retenir un modèle avec toute une batterie de combinaison de variables. à mon avis, ton problème vient du fait que tu as plusieurs proc (car trop de modèles). Tu peux tester ta macro avec une un minimum de variables explicatives et tu seras vite fixer. Bref, je te propose ça: Tu peux faire des noprint à chaque proc logistic, Supprimer les macros programme à chaque boucle Code :
|
||
|
|
00
|
|
|
#4 | |
|
Membre habitué
![]() Julien Ingénieur d'études / Biostatisticien Inscription : décembre 2009 Messages : 304 ![]() |
Bonjour wise2 et Brice! merci de votre intérêt pour mon problème!
Je vais essayer, dés que j'ai un moment, vos syntaxes pour voir si ça me permet d'avancer sur mon problème, je vous tiendrais alors au courant. Concernant ta question Brice: Citation:
L'intérêt étant de pallier aux méthodes de sélection FORWARD, BACKWARD et STEPWISE en forçant les variables. Je travaille dans une boîte qui cherche à identifier et non à modéliser, d'où la simplification de l'usage des régressions logistique. Je vous tiens au courant dés que j'ai testé vos conseils. Encore merci! |
|
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() ![]() Brice BeareParis Inscription : janvier 2011 Messages : 956 ![]() |
Bonjour Julien,
As-tu constaté une différence entre ta méthode de sélection du meilleur modèle avec la méthode automatique en terme de variables explicatives ? |
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Julien Ingénieur d'études / Biostatisticien Inscription : décembre 2009 Messages : 304 ![]() |
Bonne question, je ne me suis pas encore réellement penché sur ça, il le faut en plus, disons que mes soucis 'out of memory' monopolisent toute mon attention dès que je trouve le temps de continuer ma macro.
Je te tiendrais au courant dès que j'aurais fait suffisamment de test. |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() ![]() Brice BeareParis Inscription : janvier 2011 Messages : 956 ![]() |
Je te comprends!
N'oublies pas de réduire le nombre de variables afin de savoir déjà si ça vient de là. |
|
|
00
|
|
|
#8 | ||
|
Membre habitué
![]() Julien Ingénieur d'études / Biostatisticien Inscription : décembre 2009 Messages : 304 ![]() |
Salut, alors j'ai regardé plusieurs choses en fonction de vos commentaires.
Par rapport à ce que m'a proposé wise2, j'ai donc lancé la syntaxe et j'ai les informations suivantes (dés fois que ça parle à quelqu'un, je veux dire si ça semble suffisant pour un automate à grande échelle ou trop peu): Code :
Par rapport à ce que tu m'as dit Brice, alors j'ai vite comparé les sorties de ma table avec les résultats des méthodes de sélection en DISCRIM ET LOGISTIC et il apparait que ma table me sort des combinaisons légèrement plus performantes. Ensuite, en effet il y a un rapport avec le nombre de variables et donc le nombre de combinaison à estimer, sur un test avec 5-6 variables ça passe bien, mais sur celui avec 9-10 ça plante vers la fin du programme. Maintenant j'ai essayé la syntaxe que tu m'as proposé, seulement je n'arrive pas à trouver la bibliothèque où mes macros compilées vont sous Entreprise Guide. En fait moi ce qui m'arrangerait serait de clean ma mémoire (sauf la table que je vais utiliser pour bosser et les 2-3 macros variables dont j'ai besoin) une fois qu'une de mes macros 'multivariée' a finit son boulot... |
||
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() ![]() Brice BeareParis Inscription : janvier 2011 Messages : 956 ![]() |
ODS EXCLUDE ALL t'as éssayé?
|
|
|
00
|
|
|
#10 |
|
Membre du Club
![]() Inscription : septembre 2009 Messages : 60 ![]() |
Hello,
Tes valeurs de MEMSIZE et SORTSIZE sont très faibles (64 Mo !?). Il faudrait que tu modifies ton fichier config avec : -MEMSIZE 1G -SORTSIZE 512M et essayer si ton programme tourne mieux. |
|
|
00
|
|
|
#11 |
|
Membre habitué
![]() Julien Ingénieur d'études / Biostatisticien Inscription : décembre 2009 Messages : 304 ![]() |
En effet Brice, j'ai déjà essayé notamment avec l'aide d'Olivier et Géraldine sur le forum, ça m'a permis de m'affranchir des lags dû à l'impression dans l'output mais pas de mes problèmes 'out of memory'.
Wise2, je vais regarder lundi avec mon administrateur réseau donc, ça me semble être la seule solution immédiate à mon problème, par contre à long terme il me faudra tout de même trouver un moyen de vider complètement la mémoire de ma session SAS en cours entre chaque appel de macro 'multivariée' surtout que je prévois d'automatiser la classification par cluster et sachant qu'il y a 14 méthodes dont la moitié sont paramétrables.... |
|
|
00
|
|
|
#12 |
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 467 ![]() |
Salut.
Une chose qui me traverse l'esprit : est-ce que les "Out of memory" surviennent toujours aux mêmes endroits dans l'exécution de ta macro ? Genre toujours au niveau de la même procédure ? Si oui ça vaudrait sans doute le coup de se pencher sur l'optimisation de cette procédure en particulier (si c'est SORT, avec des options comme TAGSORT et OVERWRITE par exemple) ; du genre faire un KEEP= sur la table lue pour ne charger que les variables réellement nécessaires à cette étape. Pour autant que je sache, "Out of memory" est plutôt un message concernant la RAM, or vider la Work fera gagner de l'espace disque -- ce qui n'est pas forcément une solution (même si, au bout d'un moment, SAS va décharger ce qu'il a en mémoire vive sur du disque). Autre moyen de diagnostiquer l'emplacement du problème : OPTION FULLSTIMER ; te permettra de suivre dans la Log l'utilisation de la mémoire. Bon courage. Olivier |
|
|
00
|
|
|
#13 |
|
Membre habitué
![]() Julien Ingénieur d'études / Biostatisticien Inscription : décembre 2009 Messages : 304 ![]() |
Salut Olivier, merci pour tes infos, surtout pour la syntaxe permettant de suivre l'état de la mémoire notamment!
Actuellement je suis en discussion avec l'admin réseau de ma boîte, donc c'est en cours, en effet je peux pas trop toucher à tout ça sans qu'il ait un oeil dessus également. Concernant mon souci j'ai observé deux variantes. J'ai donc 2 macros, une qui fait analyse discriminante (DA) sur toutes les combinaisons (rappel: merci pour ta macro combinatoire au passage!) et une qui fait la régression logistique (LOG) dans le cas variables continues et/ou variables qualitatives OU variables modales et/ou variables qualitatives. Donc si je lance la macro DA en premier puis les deux versions de la macro LOG, mon message d'erreur arrive lors de la seconde utilisation de la macro LOG (que ça soit dans le premier cas ou le second). Si par contre je lance d'abord LOG puis DA, le message ne vient pas mais on voit clairement SAS ralentir vertigineusement... Code :
"Out of memory" est plutôt un message concernant la RAM
Encore merci à tous les 3 pour votre intérêts à mon problème. |
|
|
00
|
|
|
#14 |
|
Membre habitué
![]() Julien Ingénieur d'études / Biostatisticien Inscription : décembre 2009 Messages : 304 ![]() |
Un p'tit up pour actualiser ma situation vis à vis de mon topic, alors le problème est réglé, il fallait en effet augmenter l'espace de stockage!
Merci à Olivier, Brice et Wise2 pour votre intérêt à mon problème et pour m'avoir permis d'y trouver une solution! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com