J'essaie de résoudre le problème de classification en utilisant Matlab GPTIPS cadre. J'ai réussi à construire une représentation de données et une fonction de condition physique raisonnables jusqu'à présent et j'ai obtenu une précision moyenne par classe de près de 65%.Algorithme génétique pour la classification
Ce que je besoin est maintenant une aide à deux difficultés:
Mes données est biaisée. Fondamentalement, je résous problème de classification binaire et seulement 20% des données appartiennent à la classe 1, tandis que les autres 80% appartiennent à la classe 0. J'ai utilisé la précision de la prédiction comme ma fonction de fitness, mais c'était vraiment mauvais. Le mieux que j'ai maintenant
Fitness = 0,5 * (+ PositivePredictiveValue NegativePredictiveValue) - const * ComplexityOfSolution
S'il vous plaît, advize, comment puis-je améliorer ma fonction de faire la correction pour le biais de données.
- Le deuxième problème est le sur-ajustement. J'ai divisé mes données en trois parties: formation (70%), tests (20%), validation (10%). J'entraîne chaque chromosome sur l'ensemble d'entraînement, puis j'évalue sa fonction de remise en forme sur l'ensemble de test. Cette routine me permet d'atteindre la forme physique de 0,82 sur mes données de test pour le meilleur individu dans la population. Mais le résultat de la même personne sur les données de validation n'est que de 60%. J'ai ajouté un contrôle de validation pour le meilleur individu chaque fois avant que la nouvelle population soit générée. Ensuite, je compare la forme physique sur le jeu de validation avec la condition physique sur l'ensemble de test. Si la différence est supérieure à 5%, j'augmente la pénalité pour la complexité de la solution dans ma fonction de fitness. Mais ça n'a pas aidé. Je pourrais aussi essayer d'évaluer tous les individus avec un jeu de validation à chaque génération, et simplement supprimer ceux qui sont surajustés. Mais alors, je ne vois aucune différence entre mes données de test et de validation. Que peut-on faire d'autre ici?
MISE À JOUR:
Pour ma deuxième question que j'ai trouvé grand article "Experiments on Controlling Overtting in Genetic Programming" Avec quelques articles idées d'auteurs sur le traitement des overfitting en GP, il a revue impressionnante avec beaucoup de références à de nombreux approches à la question. Maintenant j'ai beaucoup de nouvelles idées que je peux essayer pour mon problème. Malheureusement, je n'arrive toujours pas à trouver quoi que ce soit sur la sélection d'une fonction de remise en forme qui tiendra compte des proportions de classes déséquilibrées dans mes données.
Merci pour votre réponse! Oui, j'ai essayé presque tous les algorithmes courants (RF, CART, BayesNet, NN, kNN, SVM et autres). Je n'ai pas réussi à les faire travailler. Qu'est-ce que je fais maintenant est la construction d'un ensemble d'arbres GP, où le résultat de chaque arbre représente une nouvelle fonctionnalité. Ensuite, j'applique la classification kNN simple dans ce nouvel espace de fonctionnalités. Jusqu'à présent, j'ai obtenu jusqu'à 0,70 sur les données de validation. Et maintenant, j'ajoute la réduction de l'ensemble de données en utilisant des ensembles de données de prototypes k-nn. Espérons que cela accélèrera le cycle général de recherche GP et supprimera également un peu de bruit des données. – GrayR
Aussi, désolé pour erreur dans mon message original 65% n'est pas la précision, son (PPV + NPV)/2, en fait je classe "0" avec une précision de 85-90% et "1" avec 50-55%. Je vais certainement regarder plus dans la pénalité de complexité. En fait, j'ai dû l'ajouter pour appliquer des modèles plus simples à un moment donné, mais peut-être que votre approche plus directe sera meilleure. Ce qui me dérange le plus en ce moment, c'est le suralimentation, parce que cela m'arrête trop tôt dans l'évolution des populations. Est-il possible de supprimer les individus surutilisés, ou le jeu de validation ne peut être touché jusqu'à la fin? – GrayR
Je vais accepter cette réponse en raison de conseils avant Pareto. Actuellement, cela m'a permis d'augmenter ma condition physique de 0,65 à 0,75. D'autres techniques (j'ai essayé environ 5 méthodes différentes pour traiter le surapprentissage) tirées de différents articles n'ont pas donné une telle amélioration notable. – GrayR