Comment puis-je résoudre le surajustement dans la forêt au hasard de Python sklearn?
Je suis en utilisant RandomForestClassifier implémenté en python sklearn paquet de construire un modèle de classification binaire. Ci-dessous est le résultat de la croix validations:
Fold 1 : Train: 164 Test: 40
Train Accuracy: 0.914634146341
Test Accuracy: 0.55
Fold 2 : Train: 163 Test: 41
Train Accuracy: 0.871165644172
Test Accuracy: 0.707317073171
Fold 3 : Train: 163 Test: 41
Train Accuracy: 0.889570552147
Test Accuracy: 0.585365853659
Fold 4 : Train: 163 Test: 41
Train Accuracy: 0.871165644172
Test Accuracy: 0.756097560976
Fold 5 : Train: 163 Test: 41
Train Accuracy: 0.883435582822
Test Accuracy: 0.512195121951
Je suis à l'aide de "Prix" pour prédire la "qualité" qui est une valeur ordinale. Dans chaque validation croisée, il y a 163 exemples de formation et 41 exemples de test.
Apparemment, le surajustement se produit ici. Donc, il y a tous les paramètres fournis par sklearn peut être utilisé pour résoudre ce problème? J'ai trouvé certains paramètres ici, par exemple min_samples_split et min_sample_leaf, mais je ne comprends pas très bien comment les accorder.
Merci d'avance!
Avez-vous essayé d'utiliser ExtraTreesClassifier? Qui aidera si vous avez des facteurs multiples. Si vous êtes seulement de la formation sur un prédicteur et vous avez seulement 200 échantillons, je pense que vous allez toujours avoir un certain degré de surapprentissage.
La variance dans votre test de précision est grande, mais votre exemple est très faible. Dans le cas où vous signifie le surajustement comme la grande différence dans le train/la précision du test, qui est pas surajustement: envisager d'utiliser des voisins les plus proches, vous obtiendrez toujours 0 pour la formation d'erreur. (donc en train de précision n'est pas utile ici).
Dites-vous que vous êtes en essayant de prédire la "qualité" en utilisant uniquement des "Prix"? Si oui, alors une forêt aléatoire n'est pas la meilleure façon. Essayez une régression logistique classificateur.
Si vous avez une multitude de variables X que vous utilisez pour prédire la "qualité" et vous avez déséquilibre des classes (plus classe = 0 de classe = 1 ou vice-versa), puis essayez d'utiliser un StratifiedShuffleSplit lors de la validation croisée.
La variance dans votre test de précision est grande, mais votre exemple est très faible. Dans le cas où vous signifie le surajustement comme la grande différence dans le train/la précision du test, qui est pas surajustement: envisager d'utiliser des voisins les plus proches, vous obtiendrez toujours 0 pour la formation d'erreur. (donc en train de précision n'est pas utile ici).
Dites-vous que vous êtes en essayant de prédire la "qualité" en utilisant uniquement des "Prix"? Si oui, alors une forêt aléatoire n'est pas la meilleure façon. Essayez une régression logistique classificateur.
Si vous avez une multitude de variables X que vous utilisez pour prédire la "qualité" et vous avez déséquilibre des classes (plus classe = 0 de classe = 1 ou vice-versa), puis essayez d'utiliser un StratifiedShuffleSplit lors de la validation croisée.
OriginalL'auteur Munichong | 2013-12-09
Vous devez vous connecter pour publier un commentaire.
Je suis d'accord avec @Falcon w.r.t. la taille du jeu de données. Il est probable que le problème principal est la petite taille de l'ensemble de données. Si possible, la meilleure chose que vous pouvez faire est d'obtenir plus de données, plus les données (généralement) moins il est probable de overfit, comme les modèles aléatoires qui apparaissent prédictive commencez à avoir noyé comme la taille du jeu de données augmente.
Cela dit, je regarde le suivant params:
Remarque lors de l'accomplissement de ce travail scientifique. 3 ensembles de données, un ensemble de formation, un "développement" dataset modifier vos paramètres, et un ensemble de test qui permet de tester le modèle final, avec les paramètres optimaux. Seulement changer un seul paramètre à la fois et d'évaluer le résultat. Ou de l'expérience avec les sklearn gridsearch algorithme de recherche dans l'ensemble de ces paramètres à la fois.
OriginalL'auteur Simon