Simple multidimensionnelle d'ajustement de la courbe
J'ai un tas de données, généralement sous la forme
a, b, c, ..., y
où y = f(a, b, c...)
La plupart d'entre eux sont trois et quatre variables, et ont 10k - 10M enregistrements. Mon hypothèse générale est qu'ils sont algébriques dans la nature, quelque chose comme:
y = P1 a^E1 + P2 b^E2 + P3 c^E3
Malheureusement, ma dernière analyse statistique de la classe était il y a 20 ans. Quelle est la manière la plus simple d'obtenir une bonne approximation de f? Les outils Open source avec un très faible courbe d'apprentissage (c'est à dire quelque chose où je pourrais obtenir une bonne approximation dans une heure ou deux) serait l'idéal. Merci!
- S'agissant du titre, ce qui est simple sur multidimensionnelle d'ajustement de la courbe? 🙂
- prz.rzeszow.pl/~janand/Theory_of_LSM.pdf
- Orthogonale de la distance de régression peut être utilisée pour le problème.
Vous devez vous connecter pour publier un commentaire.
Dans le cas où c'est utile, voici un Numpy/Scipy (Python) modèle à faire ce que vous voulez:
Si vous voulez vraiment comprendre ce qu'il se passe, cependant, vous allez avoir à investir le temps à l'échelle de la courbe d'apprentissage pour certains outil ou de l'environnement de programmation - je ne pense vraiment pas qu'il y a moyen de contourner cela. Les gens ne généralement pas d'écrire des outils spécialisés pour faire des choses comme 3-terme de puissance des régressions exclusivement.
Il y a un outil pour le montage 1D et 2D courbes à zunzun.com, mais je ne pense pas qu'il va au-delà de deux variables. De même, Matlab ne supporte pas plus de deux dimensions de montage (pour autant que je sais) et c'est certainement pas gratuit.
Sinon, vous pourriez être en mesure de trouver une partie de votre solution dans le Numérique Recettes.
Mais comme les autres affiches indiqué, vous aurez probablement besoin d'au moins une idée de base de votre modèle de fonction (qui, espérons-le, linéaire ou peut être linéarisée, auquel cas, vous allez avoir un plus large éventail de solutions à votre disposition)
Les bases de données de montage impliquer en supposant une forme générale d'une solution, de deviner certaines valeurs initiales pour les constantes, et puis en itérant à minimiser l'erreur de l'deviné solution de trouver une solution spécifique, généralement dans la méthode des moindres carrés sens.
Regarder dans R ou Octave pour des outils open source. Ils sont tous deux capables de moindres carrés analyse, avec plusieurs tutoriels juste une recherche Google à l'écart.
Edit: Octave code pour estimer les coefficients d'un polynôme d'ordre 2
Sur ma machine, j'obtiens:
Savez-vous à quelle puissance vous souhaitez limiter votre polynôme?
Si il n'y a pas de limite, alors vous pouvez toujours obtenir une correspondance exacte pour N points en l'agençant à un polynôme qui a N coefficients. Pour ce faire, vous plug N différents points dans votre équation, produisant N équations et N inconnues (les coefficients), que vous pouvez ensuite utiliser soit simple algèbre lycée ou une matrice pour résoudre les inconnues.
Si vous avez une deviner la forme de f,[*] vous avez besoin d'un minimiseur de trouver les paramètres optimaux. Les outils de Scottie T suggère serait, comme le ferait RACINE, et beaucoup d'autres.
Si vous n'avez pas la moindre idée de ce formulaire f peut prendre vous êtes dans le pétrin en effet.
[*] Qui est, vous savez que
f = f(x,y,z,w,...;p1,p2,p3...)
où la
p
s sont les paramètres et les coordonnées sontx
,y
...Réponse courte: il n'est pas si simple. Envisager une approche non paramétrique sur les données des sous-ensembles.
Il y a 2 principales questions que vous devez décider à ce sujet (1) avez-vous fait des soins sur les paramètres de la fonction, c'est à dire votre P1, E1, ..., ou seriez-vous d'accord avec une simple estimation de la moyenne de la fonction (2) avez-vous vraiment besoin d'estimer la fonction de toutes les données?
La première chose que je vais mentionner est que votre fonction non-linéaire (dans les paramètres à estimer), de sorte que les moindres carrés ordinaires ne fonctionnent pas. Imaginons que vous avez spécifié une fonction linéaire. Si vous souhaitez toujours avoir un problème avec les 10M valeurs. La régression linéaire peut être effectuée de manière efficace à l'aide de factorisation QR, mais vous êtes toujours à gauche avec un O(p * n^2) l'algorithme, où p est le nombre de paramètres que vous essayez d'estimer. Si vous souhaitez estimer le non-linéaire moyenne de la fonction, il devient beaucoup pire.
La seule façon que vous allez être en mesure d'estimer quoi que ce soit dans une telle un grand ensemble de données est d'utiliser un sous-ensemble pour réaliser l'estimation. En gros, vous choisissez au hasard un sous-ensemble et de l'utiliser pour estimer la fonction.
Si vous n'avez pas de soins sur les valeurs de ce paramètre, et vous voulez juste pour estimer la moyenne de la fonction vous serez probablement mieux d'utiliser un non-paramétriques d'estimation de la technique.
J'espère que cela aide.
leif