J'ai un ensemble de données pour lequel j'essaie de prédire les variables cibles.
Col1 Col2 Col3 Col4 Col5
1 2 23 11 1
2 22 12 14 1
22 11 43 38 3
14 22 25 19 3
12 42 11 14 1
22 11 43 38 2
1 2 23 11 4
2 22 12 14 2
22 11 43 38 3
J'ai fourni un échantillon de données, mais le mien a des milliers d'enregistrements répartis de la même manière. Ici, Col1, Col2, Col3, Col4 sont mes fonctionnalités et Col5 est la variable cible. Par conséquent, la prédiction devrait être 1, 2, 3 ou 4 car ce sont mes valeurs pour la variable cible. J'ai essayé d'utiliser des algorithmes tels que la forêt aléatoire, l'arbre de décision, etc. pour les prédictions.
Ici, si vous voyez, les valeurs 1,2 et 3 se produisent plus de fois par rapport à 4. Par conséquent, tout en prédisant, mon modèle est plus biaisé vers 1 2 et 3 alors que je reçois seulement moins de prédictions pour 4 (je n'ai eu que 1 prédite pour policy4 sur des milliers d'enregistrements lorsque j'ai vu la matrice de confusion).
Afin de généraliser mon modèle, j'ai supprimé au hasard un pourcentage égal de données appartenant aux valeurs 1,2 et 3. J'ai groupé par chaque valeur dans Col5, puis supprimé un certain pourcentage, de sorte que j'ai réduit le nombre d'enregistrements. Maintenant, je pouvais voir une certaine augmentation du pourcentage de précision et également une augmentation raisonnable des prévisions pour la valeur 4 dans la matrice de confusion.
Est-ce la bonne approche à traiter (retirer les données au hasard des groupes sur lesquels le modèle est biaisé)?
J'ai essayé des algorithmes python intégrés comme Adaboost, des techniques GradientBoost utilisant sklearn. J'ai lu que ces algorithmes sont pour gérer la classe de déséquilibre. Mais je n'ai pas réussi à améliorer ma précision, plutôt en supprimant au hasard les données, où j'ai pu voir quelques améliorations.
Cette réduction est-elle une technique de sous-échantillonnage et est-ce la bonne approche pour le sous-échantillonnage?
Existe-t-il des packages prédéfinis dans sklearn ou une logique que je peux implémenter en python pour y parvenir, si ma suppression aléatoire est incorrecte?
J'ai également appris la technique SMOTE, qui traite du suréchantillonnage. Dois-je essayer ceci pour la valeur 4? Et pouvons-nous le faire en utilisant des packages intégrés en python? Ce serait formidable si quelqu'un m'aide dans cette situation.