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.

OriginalL'auteur Munichong | 2013-12-09