Je recherche une alternative aux arbres de classification qui pourrait donner un meilleur pouvoir prédictif.
Les données dont je traite ont des facteurs à la fois pour les variables explicatives et expliquées.
Je me souviens avoir rencontré des forêts aléatoires et des réseaux de neurones dans ce contexte, bien que jamais essayé auparavant, existe-t-il un autre bon candidat pour une telle tâche de modélisation (en R, évidemment)?
r
machine-learning
classification
cart
Tal Galili
la source
la source
Réponses:
Je pense qu'il vaudrait la peine d'essayer Random Forests ( randomForest ); certaines références ont été fournies en réponse à des questions connexes: sélection des fonctionnalités pour le modèle «final» lors de la validation croisée dans l'apprentissage automatique ; Les modèles CART peuvent-ils être rendus robustes? . Le suralimentation / l'ensachage les rendent plus stables qu'un seul chariot qui est connu pour être très sensible aux petites perturbations. Certains auteurs ont fait valoir qu'il fonctionnait aussi bien que les SVM ou les boosters de dégradés pénalisés (voir, par exemple, Cutler et al., 2009). Je pense qu'ils surpassent certainement les NN.
Boulesteix et Strobl fournit un bon aperçu de plusieurs classificateurs dans la sélection optimale des classificateurs et le biais négatif dans l'estimation du taux d'erreur: une étude empirique sur la prédiction à haute dimension (BMC MRM 2009 9: 85). J'ai entendu parler d'une autre bonne étude lors de la IVe réunion EAM , qui devrait être examinée dans Statistics in Medicine ,
J'aime aussi le package caret : il est bien documenté et permet de comparer la précision prédictive de différents classificateurs sur le même ensemble de données. Il prend en charge la gestion des échantillons de formation / test, la précision du calcul, etc. dans quelques fonctions conviviales.
Le package glmnet , de Friedman et coll., Implémente le GLM pénalisé (voir la revue dans le Journal of Statistical Software ), donc vous restez dans un cadre de modélisation bien connu.
Sinon, vous pouvez également rechercher des classificateurs basés sur des règles d'association (voir la vue des tâches CRAN sur l' apprentissage automatique ou les 10 meilleurs algorithmes d'exploration de données pour une introduction en douceur à certains d'entre eux).
Je voudrais mentionner une autre approche intéressante que je prévois de réimplémenter dans R (en fait, c'est le code Matlab) qui est l'analyse de correspondance discriminante d'Hervé Abdi. Bien qu'initialement développé pour faire face à des études sur de petits échantillons avec de nombreuses variables explicatives (éventuellement regroupées en blocs cohérents), il semble combiner efficacement l'AD classique avec les techniques de réduction des données.
Les références
la source
Il est important de garder à l'esprit qu'il n'y a pas d'algorithme unique qui soit toujours meilleur que les autres. Comme indiqué par Wolpert et Macready, "deux algorithmes sont équivalents lorsque leurs performances sont moyennées pour tous les problèmes possibles". (Voir Wikipedia pour plus de détails.)
Pour une application donnée, la «meilleure» est généralement celle qui est la plus proche de votre application en termes d'hypothèses qu'elle fait, de types de données qu'elle peut traiter, d'hypothèses qu'elle peut représenter, etc.
C'est donc une bonne idée de caractériser vos données selon des critères tels que:
En y répondant, vous pouvez éliminer certains algorithmes et en identifier d'autres comme potentiellement pertinents, puis vous retrouver avec un petit ensemble de méthodes candidates que vous avez intelligemment choisies comme susceptibles d'être utiles.
Désolé de ne pas vous donner une réponse simple, mais j'espère que cela vous aidera quand même!
la source
Pour la classification multi-classes, les machines à vecteurs de support sont également un bon choix. J'utilise généralement le package R kernlab pour cela.
Voir le document JSS suivant pour une bonne discussion: http://www.jstatsoft.org/v15/i09/
la source
kernlab
àe1071
.Comme déjà mentionné, les forêts aléatoires sont une «mise à niveau» naturelle et, de nos jours, les SVM sont généralement la technique recommandée à utiliser.
Je veux ajouter que le plus souvent, le passage à SVM donne des résultats très décevants. Le fait est que, alors que les techniques comme les arbres aléatoires sont presque triviales à utiliser, les SVM sont un peu plus compliqués.
J'ai trouvé ce document précieux lorsque j'ai utilisé SVM pour la première fois (Un guide pratique pour prendre en charge la classification des vecteurs) http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf
Dans R, vous pouvez utiliser le package e1071 pour SVM, il est lié à la bibliothèque de facto standard (dans les logiciels libres au moins!) LibSVM.
la source
Cela vaut la peine de jeter un œil aux classificateurs Naive Bayes . Dans R, vous pouvez effectuer une classification Naive Bayes dans les packages e1071 et klaR .
la source