J'ai remarqué que l'interpolation spline avec un degré supérieur à 3 (tout au-delà des splines cubiques) a une erreur d'interpolation très élevée, donc la prédiction est pour la plupart horrible. Je suis tombé sur diverses notes de cours, diapositives et vidéos Youtube qui indiquent simplement que les splines cubiques (3ème degré) sont optimales et que tout ce qui est au-delà est une mauvaise idée. Ces sources ne mentionnent cependant jamais pourquoi c'est le cas.
Quelqu'un peut-il m'expliquer pourquoi c'est le cas et peut-être me donner un titre / lien vers un journal / document de conférence qui explique cela ou peut-être même en donner une preuve.
interpolation
goocreations
la source
la source
Réponses:
Il n'y a pas une telle preuve car ce n'est pas toujours vrai. C'est une règle de base, car je vous garantis que vous pourriez trouver une situation - un nombre infini de situations en fait - où des splines d'ordre supérieur feraient mieux que des splines cubiques. L'ordre de spline optimal pour une situation donnée est exactement le même ordre que le système que vous essayez de modéliser. Si l'ordre est le même et que vos points de données sont exempts d'erreurs (jamais le cas, bien sûr, sauf pour des problèmes théoriques), alors vous devriez pouvoir modéliser parfaitement le système.
La raison pour laquelle ils recommandent de ne pas aller plus haut que les splines cubiques est que le sur- ajustement est vraiment, vraiment mauvais. Le sur-ajustement peut considérablement amplifier les erreurs, tandis que le "sous-ajustement" (en choisissant une méthode spline avec un ordre inférieur à l'ordre du système que vous modélisez) introduit un filtrage passe-bas qui n'est pas si mal ou parfois même bénéfique.
la source
Voici un aperçu approximatif (qui peut être correct ou non). La spline est une interpolation polynomiale, c'est-à-dire que chaque section de la courbe entre les points de support voisins est un polynôme. Un polynôme d'ordre N a N + 1 coefficients (degrés de liberté) et peut donc satisfaire 4 conditions aux limites par section. Le choix des conditions aux limites détermine le type d'interpolation. Pour une spline qui frappe exactement les points de support et crée une première et une seconde dérivées continues.
Pour les splines d'ordre supérieur, vous pouvez également obtenir des dérivées d'ordre supérieur pour qu'elles soient continues, mais cela a tendance à ajouter beaucoup de contenu haute fréquence à des transitions plus nettes et entraîne souvent une "sonnerie" ou une oscillation excessive. Les mots originaux "spline" proviennent d'une règle flexible que les gens utilisaient pour effectuer des interpolations "mécaniques". Je pense que vous pouvez réellement montrer en analysant la mécanique des règles que la spline cubique correspond à ce comportement.
Comme pour la plupart des choses, cela dépend de votre application et de ce que vous voulez faire. Une alternative intéressante aux splines cubiques sont les interpolations hermitiennes qui peuvent garantir la monotonie et s'assurer que l'interpolation ne oscille jamais en dehors des points d'appui. Depuis la fonction d'aide de MATLAB
la source
Il existe plusieurs types de splines, avec des objectifs contradictoires:
Pour quelques points de données, vous pouvez souhaiter interpoler exactement; mais pour des milliers de points, voire une douzaine avec du bruit, une interpolation exacte se tortillera. La plupart des ajusteurs de cannelures ont des paramètres pour comparer la proximité de l'ajustement par rapport à la douceur globale. Voici un tracé de splines de degré 1 (linéaire par morceaux, connectez les points) avec données = ligne + bruit. Vous voyez que l'ajustement exact des données zigzague en haut et en bas, tandis que le lissage maximum donne une ligne droite:
Il existe des splines pour différents travaux, en fonction des données d'entrée et des nouveaux points intermédiaires: des dizaines / millions de points, le niveau de bruit, la dispersion / sur une grille, 1d 2d 3d ... Sur une grille régulière en 3d par exemple, un la spline de degré regardera voisins de chaque point de requête: 1 (voisin le plus proche), 8 (trilinéaire), 27, 64 ... Pouvez-vous vous permettre 64? Avez-vous besoin de 64? Ça dépend.ré (d+1)3
(Très brièvement, les splines B sont lisses; les splines
Catmull-Rom interpolent, par exemple des images de films; des
mélanges comme 1/3 B + 2/3 CR sont utiles entre les deux.)
Comment le degré polynomial affecte-t-il la ondulation? Voir le phénomène de Runge .
Sur dépassement en 1d 2d 3d ... voir (ahem) cette question sur math.stackexchange.
Sur les dangers de l'extrapolation avec des splines au-delà du linéaire, voir ceci sur SO.
Voir aussi stackoverflow.com/questions/tagged/spline .
la source
Une autre façon de voir les choses est de remarquer que les images et les ensembles de données les plus intéressants sont «lisses» dans une certaine mesure. L'interpolation du bruit gaussien, par exemple, devrait mieux fonctionner avec des splines d'ordre supérieur.
la source