J'ai un gros problème de données avec un grand ensemble de données (prenez par exemple 50 millions de lignes et 200 colonnes). L'ensemble de données comprend environ 100 colonnes numériques et 100 colonnes catégorielles et une colonne de réponse qui représente un problème de classe binaire. La cardinalité de chacune des colonnes catégorielles est inférieure à 50.
Je veux savoir a priori si je dois opter pour des méthodes d'apprentissage en profondeur ou des méthodes basées sur des arbres d'ensemble (par exemple le boost de gradient, l'adaboost ou les forêts aléatoires). Existe-t-il une analyse exploratoire des données ou d'autres techniques qui peuvent m'aider à choisir une méthode plutôt qu'une autre?
Réponses:
Pourquoi vous limiter à ces deux approches? Parce qu'ils sont cool? Je commencerais toujours par un classificateur / régresseur linéaire simple. Donc, dans ce cas, une SVM linéaire ou une régression logistique, de préférence avec une implémentation d'algorithme qui peut tirer parti de la rareté en raison de la taille des données. Il faudra beaucoup de temps pour exécuter un algorithme DL sur cet ensemble de données, et je n'essaierais normalement que l'apprentissage en profondeur sur des problèmes spécialisés où il y a une structure hiérarchique dans les données, telles que des images ou du texte. C'est exagéré pour beaucoup de problèmes d'apprentissage plus simples, et cela prend beaucoup de temps et d'expertise pour apprendre et les algorithmes DL sont également très lents à former. De plus, ce n'est pas parce que vous avez 50 millions de lignes que vous devez utiliser l'ensemble de données pour obtenir de bons résultats. Selon les données, vous pouvez obtenir de bons résultats avec un échantillon de quelques 100 000 lignes ou quelques millions. Je commencerais simplement, avec un petit échantillon et un classificateur linéaire, et deviendrais plus compliqué à partir de là si les résultats ne sont pas satisfaisants. Au moins de cette façon, vous obtiendrez une référence. Nous avons souvent trouvé des modèles linéaires simples pour réaliser des modèles plus sophistiqués sur la plupart des tâches, vous devez donc toujours commencer par là.
la source
En plus d'autres réponses (et il y a un bon lien dans les commentaires), cela dépend du problème ou du type de questions auxquelles vous souhaitez répondre. Comme je ne peux que le suggérer sur la base de ma propre expérience, alors dans le cas d'une tâche de classification, les méthodes possibles peuvent être sévèrement limitées en fonction de l'équilibre des classes dans l'ensemble de données.
Une fois que vous avez atteint un déséquilibre de classe supérieur à environ 1:10, la plupart des méthodes de classification cessent de fonctionner. Vous vous retrouverez avec des méthodes basées sur une forêt aléatoire et peut-être des réseaux de neurones (pas encore essayés). Je travaille avec la balance de classe dans la plage de 1: 500 à 1: 1000 et j'ai constaté que ni le sous-échantillonnage ni le suréchantillonnage ne fonctionnent. Heureusement, mon ensemble de données est "seulement" 6 mln d'observations par 200 variables et je suis capable d'exécuter des arbres boostés sur l'ensemble dans un délai raisonnable.
Donc pour répondre directement à votre question:
vous devriez trouver un tas de questions auxquelles vous voudriez répondre et en cas de classification, vérifiez les soldes de classe des variables cibles.
vous devez vérifier la distribution (pas au sens mathématique) des valeurs manquantes dans toutes vos données et documenter ce que vous trouvez. Certaines méthodes ML sont très bien avec des valeurs manquantes tandis que d'autres ne le sont pas et vous devez examiner l'imputation des données (qui a son propre ensemble de règles, de directives et de problèmes).
la source
De mon point de vue, pour 5 millions d'instances, vous avez besoin de beaucoup d'arbres pour obtenir une bonne limite de généralisation (un bon modèle en termes simples). Si ce n'est pas un problème, allez-y, même la réponse exacte dépend de la nature de votre problème. GBT est une bonne méthode, surtout si vous avez des types d'entités mixtes comme catégorique, numérique et autres. De plus, par rapport aux réseaux neuronaux, le nombre d'hyperparamètres à régler est inférieur. Par conséquent, il est plus rapide d'avoir un meilleur modèle de réglage. Une autre chose est l'alternative de la formation parallèle. Vous pouvez entraîner plusieurs arbres en même temps avec un bon processeur. Si vous n'êtes pas satisfait des résultats, optez pour les réseaux neuronaux, car cela signifie que votre modèle devrait être plus étendu et devrait apprendre des informations d'ordre supérieur grâce à vos données. C'est la raison des NN par rapport aux autres algorithmes d'apprentissage.
la source
Dans la lignée de ce que @Simon a déjà dit:
Pour votre problème, le compromis effort / avantage ne semble pas être en faveur du deep learning. DL serait une exagération
la source
Lorsque vous disposez d'un tel ensemble de données, vous pouvez jouer avec n'importe laquelle des techniques de modélisation statistique et d'apprentissage automatique, ce qui est fortement encouragé. Comme d'autres l'ont suggéré, je recommanderais également de prendre quelques millions d'échantillons aléatoires à partir des données et de jouer avec. Puisqu'il s'agit d'un problème de classification, je suivrais d'abord des techniques de classification simples, puis j'utiliserais plus tard des techniques plus complexes. La régression logistique est idéale pour commencer.
Je voulais ajouter que les modèles génératifs doivent également être testés. Le classificateur Naive Bayes est l'un des classificateurs probabilistes les plus simples et il surpasse de nombreuses méthodes complexes comme les machines à vecteurs de support sur de nombreuses tâches. Vous pouvez regarder cette mise en oeuvre simple du Nouveau - Brunswick et ce lien pour la comparaison du Nouveau - Brunswick à la régression logistique.
On peut construire un classifieur Naive bayes (NB) comme modèle de base, puis opter pour n'importe quelle technique d'apprentissage automatique comme les machines à vecteurs de support (SVM) ou les perceptrons multicouches (MLP). Un compromis ici est que le NB est moins cher en calcul que le MLP, donc une meilleure performance du MLP est souhaitée.
Pour en venir à votre requête exacte: l'apprentissage en profondeur et le renforcement de l'arbre de gradient sont des techniques très puissantes qui peuvent modéliser tout type de relation dans les données. Mais que se passe-t-il si dans votre cas une simple régression logistique ou NB donne la précision souhaitée. Il est donc toujours préférable d'essayer d'abord les techniques simples et d'avoir des performances de base. Ensuite, on peut opter pour les modèles complexes et comparer avec la ligne de base.
la source