J'utilise RandomForestClassifier implémenté dans python package sklearn pour construire un modèle de classification binaire. Ce qui suit est le résultat de validations croisées:
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
J'utilise la fonction "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 sur-ajustement se produit ici. Existe-t-il des paramètres fournis par sklearn qui peuvent être utilisés pour résoudre ce problème? J'ai trouvé quelques paramètres ici , par exemple min_samples_split et min_sample_leaf, mais je ne comprends pas très bien comment les régler.
Merci d'avance!
Je serais d'accord avec @Falcon w.r.t. la taille du jeu de données. Il est probable que le principal problème soit la petite taille de l'ensemble de données. Si possible, la meilleure chose que vous puissiez faire est d'obtenir plus de données, plus il y a de données (généralement), moins elles sont susceptibles de s'ajuster, car les modèles aléatoires qui semblent prédictifs commencent à se noyer à mesure que la taille de l'ensemble de données augmente.
Cela dit, je regarderais les paramètres suivants:
Notez que lorsque vous faites ce travail, soyez scientifique. Utilisez 3 jeux de données, un jeu de formation, un jeu de données de "développement" distinct pour ajuster vos paramètres et un jeu de test qui teste le modèle final, avec les paramètres optimaux. Ne modifiez qu'un paramètre à la fois et évaluez le résultat. Ou expérimentez l'algorithme sklearn gridsearch pour rechercher à travers ces paramètres en une seule fois.