Calcul matriciel
À la suite du concours Heritage Health Prize j'ai constaté que sous R le moteur de calcul matriciel n'était pas rapide (je ne fais pas référence aux calculs des librairies spécialisées) ce qui n'est pas vraiment compatible avec une utilisation professionnelle.
Il existe pourtant des solutions qui permettent de faire du calcul matriciel avec un rapport coût/performance intéressant. J'en ai testé quelques-unes.
Le modèle ensemble est une combinaison de modèles. Il faut déterminer les meilleures combinaisons c'est à dire celles qui permettent de minimiser l'erreur de l'échantillon d'apprentissage et de test.
Pour chaque modèle, nous avons une prévision, le poids de ces prévisions dans l'ensemble modèle est recherché de la façon suivante :
Boucle
Prévision de l'ensemble modèle
(
prévision modèle 1poids de 1+
prévision modèle 2poids de 2+
prévision modèle 3poids de 3+
prévision modèle 4poids de 4
)
/100
Poids de 1+Poids de 2+Poids de 3+Poids de 4 = 100
Le poids de 1,2,3 et 4 varie de 0 à 100, soit près de 156 849 combinaisons.
Pour chacune de ces combinaisons, je calcule l'erreur de l'échantillon d'apprentissage et de test.
Julia : http://julialang.org/
Julia est un nouveau langage qui a été crée par le MIT qui a pour objectif de permettre le calcul matriciel avec un code proche de Matlab et de performance proche du C/Fortran. Il est relativement simple de transcrire du code Matlab en Julia. Inutilisable professionnellement à l'heure actuelle car trop jeune cependant il a un énorme potentiel.
Armadillo : http://arma.sourceforge.net/
Armadillo est une librairie qui permet de faire du calcul matriciel en C++ avec un code proche de Matlab. Elle présente d'excellente performance.
Outil | Logiciel libre | Nombre de processeurs utilisés lors de la boucle | Traitement multiprocesseur | Temps de calcul | Détail du code |
R | X | 1 | Pas disponible | 12h56 | Code R |
Julia | X | 1 | Pas dans le code | 3h11 | Code Julia |
Matlab | 1,5 | X | 1h18 | Code Matlab | |
C++/Armadillo | X | 2 | X | 46 minutes | Code C++ |
Ne disposant pas de la librairie IML je n'ai pas pu réaliser de test sous SAS
Conclusion : Il existe toujours des solutions pour accélérer un traitement.