Je travaille sur un projet d'apprentissage automatique où j'essaie d'adapter une courbe sur les données. Malheureusement, la date a un vecteur de fonctionnalité quelque peu élevé. Donc, je ne peux pas vraiment les tracer sur un espace 2D ou 3D pour deviner à quoi ressemble la forme des données.
Donc, à part le hit et le trial, existe-t-il un moyen mathématique de trouver le degré de polynôme qui pourrait le mieux correspondre à mes données.
Je veux dire que je sais que je peux rechercher une erreur du moindre carré pour chaque degré, puis choisir celle avec l'erreur minimale, mais ce sera alors un double problème d'optimisation car la première boucle d'optimisation consisterait à trouver un ensemble de poids pour la courbe qui correspond aux données, tandis que la deuxième boucle serait utilisée pour vérifier le degré. Aucune suggestion?
Réponses:
Désolé si c'est trop élémentaire, je voulais juste rendre cette réponse aussi autonome que possible. En fait, vous ne pouvez pas faire ce que vous décrivez: le meilleur polynôme de degré correspondra toujours au moins aussi bien que le meilleur polynôme de degré , puisque l'ensemble des polynômes de degré comprend tous les degrés polynômes (il suffit de définir ). Au fur et à mesure que vous augmentez , à un certain point, vous pourrez trouver un polynôme qui correspond parfaitement aux données (c'est-à-dire sans erreur).k+1 k k+1 k ak+1=0 k
Ce n'est généralement pas une solution très attrayante car il est difficile d'imaginer un processus qui devrait être décrit par exemple par un polynôme à un million de degrés, et il est presque certain que ce type de modèle sera plus complexe qu'il n'est nécessaire pour décrire correctement les données. . Ce phénomène est appelé surapprentissage , et un bon exemple est cette image Wikipedia. Les données sont clairement proches du linéaire, mais il est possible (mais pas souhaitable) d'obtenir une erreur plus faible avec un modèle plus complexe.
En général, l'objectif est de minimiser l'erreur qui se produirait sur les nouvelles données du même modèle sous-jacent, plutôt que sur l'ensemble actuel de données. Souvent, il n'est pas possible ou pratique d'obtenir simplement plus de données, donc généralement on utilise une forme de validation croisée pour trouver le modèle qui généralise le mieux les données invisibles. Il existe de nombreuses formes de validation croisée, et vous pouvez les lire dans l'article Wikipedia ou dans de nombreuses réponses sur CrossValidated (ha!). Mais en fait, ils peuvent tous être réduits à: ajuster un modèle sur certaines de vos données et l'utiliser pour prédire les valeurs pour le reste de vos données. Faites cela à plusieurs reprises et choisissez le modèle (dans ce cas, le degré de polynôme) qui vous donne les meilleures performances en moyenne.
la source
L'une des façons de résoudre ce problème de "recherche" consiste à commencer par un algorithme méta-heuristique comme la programmation génétique et une fois que le programme est capable de créer une fonction "proche" (d'une forme physique décente), commencez par les algorithmes de régression traditionnels d'apprentissage automatique. du degré identifié par GP. Vous devrez toujours effectuer des validations croisées pour ajuster votre modèle polynomial à n degrés. Peu de choses dont vous devez vous assurer lors de l'exécution de GP est de ne pas fournir de fonctions qui ne devraient pas être utilisées, sinon GP a tendance à créer des modèles complexes imitant l'arbre de décision + linéaire + quadratique, etc.
la source