Je travaille avec scikit-learn sur la construction de modèles prédictifs avec les SVM. J'ai un ensemble de données avec environ 5000 exemples et environ 700 fonctionnalités. Je suis 5 fois la validation croisée avec une recherche de grille 18 x 17 sur mon ensemble d'entraînement, puis en utilisant les paramètres optimaux pour mon ensemble de test. les passages prennent beaucoup plus de temps que prévu et j'ai remarqué ce qui suit:Implémentation SVM, les scikits apprennent à réduire le temps d'exécution, le plus rapide svm
1) Certaines itérations d'entraînement SVM semblent prendre seulement une minute, tandis que d'autres peuvent durer jusqu'à 15 minutes. Est-ce prévu avec des données et des paramètres différents (C et gamma, j'utilise le noyau rbf
)?
2) J'essaie d'utiliser python 64 bits sur Windows pour profiter de la mémoire supplémentaire, mais tous mes processus python semblent atteindre 1 Go dans mon gestionnaire de tâches, je ne sais pas si cela a quelque chose à voir avec le temps d'exécution.
3) J'utilisais 32 bits avant et fonctionnant sur à peu près le même jeu de données, et je me souviens (même si je n'ai pas économisé les résultats), il était un peu plus rapide. J'ai utilisé une version tierce de scikit-learn pour les fenêtres 64 bits, donc je ne sais pas s'il vaut mieux essayer ça sur python 32 bits? (source http://www.lfd.uci.edu/~gohlke/pythonlibs/)
Toutes les suggestions sur la façon dont je peux réduire le temps d'exécution seraient grandement appréciées. Je pense que la réduction de l'espace de recherche de ma recherche de grille sera utile, mais comme je ne suis pas sûr de la gamme de paramètres optimaux, j'aimerais la garder aussi grande que possible. S'il y a aussi des implémentations SVM plus rapides, faites-le moi savoir, et je pourrais essayer.
Addendum: Je suis retourné et essayé à nouveau la version 32 bits. C'est beaucoup plus rapide pour une raison quelconque. Il a fallu environ 3 heures pour arriver à l'endroit où la version 64 bits est arrivé en 16 heures. Pourquoi y aurait-il une telle différence?
Merci pour les réponses ogrisel. Ils ont beaucoup de sens. Je ne suis pas sûr sur le problème 32 bits vs 64 bits non plus, mais si j'ai une chance, je vais essayer de faire quelques courses chronométrées. Mes données sont prétraitées (normalisées à 0-1) et j'ai augmenté le cache_size à 4000 pour les scikits (probablement overkill). Je vais certainement essayer de modifier mon code pour qu'il passe d'une grille grossière à une zone plus petite, ce qui contribuera certainement à accélérer mon code. Merci encore. – tomas
@Grisel, que diriez-vous d'un chercheur de grille grossier-puis-fin général? – denis
Je suppose une question supplémentaire, et si vous faites une validation croisée + recherche de grille, comment pouvez-vous utiliser une recherche de grille grossière puis fine? Lorsque vous essayez de faire la moyenne ou quoi que ce soit sur plusieurs passages de validation croisée, l'espace de recherche ne correspond pas lorsque vous utilisez grossier puis bien. Je suis sûr qu'il y a un bon moyen que je ne connais pas/manque. – tomas