Data mining: Comment dois-je m'y prendre pour trouver la forme fonctionnelle?


34

Je suis curieux de savoir les procédures reproductibles qui peuvent être utilisées pour découvrir la forme fonctionnelle de la fonction y = f(A, B, C) + error_termoù mon entrée est seulement un ensemble d'observations ( y, A, Bet C). Veuillez noter que la forme fonctionnelle de fest inconnue.

Considérez le jeu de données suivant:

AA BB CC DD EE FF
== == == == == == ==
98 11 66 84 67 10500
71 44 48 12 47 7250
54 28 90 73 95 5463
34 95 15 45 75 2581
56 37 0 79 43 3221
68 79 1 65 9 4721
53 2 90 10 18 3095
38 75 41 97 40 4558
29 99 46 28 96 5336
22 63 27 43 4 2196
4 5 89 78 39 492
10 28 39 59 64 1178
11 59 56 25 5 3418
10 4 79 98 24 431
86 36 84 14 67 10526
80 46 29 96 7 7793
67 71 12 43 3 5411
14 63 2 9 52 368
99 62 56 81 26 13334
56 4 72 65 33 3495
51 40 62 11 52 5178
29 77 80 2 54 7001
42 32 4 17 72 1926
44 45 30 25 5 3360
6 3 65 16 87 288

Dans cet exemple, supposons que nous le sachions FF = f(AA, BB, CC, DD, EE) + error term, mais nous ne sommes pas sûrs de la forme fonctionnelle de f(...).

Quelle procédure / quelles méthodes utiliseriez-vous pour arriver à trouver la forme fonctionnelle de f(...)?

(Point bonus: Quelle est votre meilleure estimation de la définition des fdonnées ci-dessus? :-) Et oui, il existe une réponse "correcte" donnant un résultat R^2supérieur à 0,99.)


1
Les commentaires de @OP: IrishStat ci-dessous me rappellent que, sans une certaine connaissance de la relation entre vos variables indépendantes et / ou de la variable dépendante, en théorie, vous êtes "dans le ruisseau sans pagaie". Par exemple, si FFétait "rendement de combustion" et AAétait la quantité de carburant, et BBétait la quantité d'oxygène, vous rechercheriez un terme d'interaction de AAetBB
Pete

@Pete: Les termes en interaction sont absolument possibles. J'espère que je n'ai pas exclu cela en formulant ma question de manière incorrecte.
knorv

2
@Pete: Ce n'est pas un problème (et j'appellerais même cela réaliste dans un contexte réel), voyez juste ma réponse ci-dessous.
vonjd

3
Pete: Parmi le nombre infini de fonctions qui cadreront les données, R^2 >= 0.99on voudrait trouver celle qui présente le meilleur rapport performances / complexité (et bien sûr, mal ajustée). Désolé de ne pas avoir écrit cette explicité, je pensais que c'était évident :-)
knorv

1
De plus, maintenant que la question est raisonnablement bien posée, il serait intéressant de savoir si les données ont été générées par l'une des fonctions suggérées ci-dessous.
naught101

Réponses:


29

Pour trouver la forme fonctionnelle la mieux adaptée (dite forme libre ou régression symbolique) pour les données, essayez cet outil - à ma connaissance, il s'agit de la meilleure possible (du moins, j'en suis très enthousiaste) ... et de ses libre :-)

http://creativemachines.cornell.edu/eureqa

EDIT : Je lui ai donné un coup de feu avec Eureqa et je voudrais aller pour:

avec R 2 = 0,99988

UNEUNE+UNEUNE2+BB*CC
R2=0,99988

J'appellerais cela un ajustement parfait (Eureqa donne d'autres solutions plus adaptées, mais elles sont aussi un peu plus compliquées. Eureqa est favorable à celui-ci, j'ai donc choisi celui-ci) - et Eureqa a tout fait pour moi quelques secondes après un ordinateur portable normal ;-)


6
Juste pour référence, Eureqa utilise la programmation génétique pour trouver des solutions au problème de la régression symbolique.
Thiès Heidecke

10
+1 Une performance impressionnante pour un outil automatique stupide!
whuber

1
@vonjd, le lien dit maintenant "essai gratuit de 30 jours". Connaissez-vous une alternative gratuite?
denis

3
@denis: Vous pouvez essayer ce paquet R: cran.r-project.org/web/packages/rgp/index.html - mais il n'est pas aussi sophistiqué que le logiciel susmentionné (pas encore?)
vonjd

3
Eureqa reste gratuit pour les organisations universitaires / à but non lucratif
Inverse

25

seul n'est pas une bonne mesure de la qualité de l'ajustement, mais n'entrons pas dans cela ici sauf pour observer que laparcimonieest valorisée dans la modélisation.R2

À cette fin, notez que les techniques standard d' analyse de données exploratoires (EDA) et de régression (mais pas par étapes ou par d'autres procédures automatisées) suggèrent d'utiliser un modèle linéaire sous la forme

F=une+b*c+une*b*c+constant+Erreur

En utilisant OLS, cela n'obtenir un ci - dessus 0,99. Encouragé par un tel résultat, on est tenté de concilier les deux côtés et la régression f sur un , b * c , a * b * c , et tous leurs carrés et produits. Cela produit immédiatement un modèleR2Funeb*cune*b*c

F=une2+b*c+constant+Erreur

avec un MSE de racine de moins de 34 et un ajustement de 0,9999R2 . Les coefficients estimés de 1,0112 et 0,988 suggèrent que les données peuvent être générées artificiellement avec la formule

F=une2+b*c+50

plus une petite erreur normalement distribuée du SD approximativement égale à 50.

modifier

En réponse aux remarques de @ knorv, j'ai poursuivi l'analyse. Pour ce faire, j'ai utilisé les techniques qui avaient fait leurs preuves jusqu'à présent, en commençant par inspecter les matrices de diagramme de dispersion des résidus par rapport aux variables d'origine. Effectivement, il y avait une indication claire de la corrélation entre et les résidus (même si la régression MCO de f contre a , a 2 et b c n'indiquait pas que a était "significatif"). Poursuivant dans cette veine , j'ai exploré toutes les corrélations entre les termes du second degré a 2 , ... , e 2 , un *uneFuneune2b*cune et les nouveaux résidus et ont trouvé une relation minuscule mais très significative avec b 2 . "Très significatif" signifie que toute cette surveillance a consisté à examiner une vingtaine de variables différentes. Mon critère d'importance pour cette expédition de pêche était donc d'environ 0,05 / 20 = 0,0025: tout ce qui serait moins rigoureux pourrait facilement être un artefact de la recherche de crises.une2,,e2,une*b,une*c,,*eb2

b2

Quoi qu’il en soit, un meilleur ajustement est donné par

F=une+une2+b*c-b2/100+30,5+Erreur

0


uneb2

BTW, en utilisant la régression robuste, je peux adapter le modèle

F=1,0103une2+0,99493b*c-0,007b2+46,78+Erreur

avec un SD résiduel de 27,4 et tous les résidus entre -51 et +47: essentiellement aussi bon que l'ajustement précédent mais avec une variable de moins. C'est plus parcimonieux dans ce sens, mais moins parcimonieux dans le sens où je n'ai pas arrondi les coefficients à des valeurs "sympas". Néanmoins, c'est la forme que je privilégierais habituellement dans une analyse de régression en l'absence de théories rigoureuses sur les types de valeurs que les coefficients devraient avoir et les variables à inclure.

R2


1
Bon travail! Jusqu'à présent, cela semble être la meilleure réponse.
Zach

@whuber: Beau travail - vous vous en approchez! :-) Il est vrai que les données ont été générées artificiellement avec une formule plus un terme d'erreur. Mais la formule n'est pas exactement celle que vous avez trouvée - vous ratez quelques termes. Mais vous êtes proches et vous êtes actuellement en tête :-)
knorv

4
@whuber j'ai déjà donné mon +1, mais j'aimerais ajouter que c'est très instructif de lire son approche d'un tel problème. Vous valez la prime de quelque manière que ce soit.
chl

1
@ Bill j'ai essayé, au début. J'espère que mon explication laisse de la place pour votre proposition ainsi que pour les deux que j'ai incluses. Il y a plus d'une bonne réponse. J'ai poursuivi l'analyse en incluant ces termes supplémentaires, car il était clair qu'il existait des tendances dans les résidus et que leur comptabilisation réduisait considérablement la variance résiduelle. (J'avouerai cependant que j'ai passé très peu de temps et d'attention à ce sujet: le temps total pour l'analyse initiale, y compris la rédaction de la réponse, était de 17 minutes. Plus de temps se traduit souvent par plus de perspicacité ...)
whuber

1
@naught Il serait intéressant de commencer par une formule aussi longue et d'appliquer un Elastic Net (ou un algorithme similaire d'élimination de variable). Je suppose que le succès d’une telle approche dépendrait du fait que le nombre de fonctions serait relativement petit et qu’elles incluraient les fonctions correctes entre elles - ce qui ressemble davantage à une question de chance et de bonne devinette qu’une enquête de principe. Mais si le fait de résoudre aveuglément un grand nombre de formes fonctionnelles aboutit à un succès, cela vaut la peine de le savoir.
whuber

5

Votre question doit être affinée, car la fonction fn'est certainement pas définie de manière unique par les données de l'échantillon. Il existe de nombreuses fonctions différentes qui pourraient générer les mêmes données.

Cela dit, une analyse de variance (ANOVA) ou une "étude de sensibilité" peut vous en dire beaucoup sur la manière dont vos entrées (AA..EE) affectent votre sortie (FF).

Je viens de faire une ANOVA rapide et a trouvé un modèle assez bon: FF = 101*A + 47*B + 49*C - 4484. La fonction ne semble pas dépendre de DD ou EE linéairement. Bien sûr, nous pourrions aller plus loin avec le modèle et ajouter des termes quadratiques et mixtes. En fin de compte, vous obtiendrez un modèle parfait qui suraprésente les données et n’a aucune valeur prédictive. :)


@Pete Comme vous l'avez dit, vous pouvez ajouter des termes quadratique, cubique, quartique ... et de mélange, mais ce serait tout simplement absurde. Il y a un non-sens et il y a un non-sens non-sensuel, le plus non-sensicule est un "non-sens statistique".
IrishStat

2
@IrishStat il n'est généralement pas absurde d'ajouter un mélange et des termes d'ordre supérieur; seulement mauvais quand il est fait sans contrainte et sans égard à la théorie
Pete

2
@Pete. Correct! L'absence d'une théorie préexistante le rend stupide.
IrishStat

@Pete: Quel R ^ 2 obtenez-vous pour votre modèle?
knorv

@knorv: Je ne me souviens pas très bien, mais c'était> 0,90. Lorsque nous avons tracé la courbe de régression, les points semblaient avoir un petit "S" / forme cubique, alors je suppose que la fonction "f" était une création mathématique dans laquelle une personne tapait 100A + 50 (B + C) + ordre supérieur conditions impliquant D & E.
Pete

3

En gros, il n'y a pas de repas gratuit dans l'apprentissage automatique:

En particulier, si l'algorithme A surpasse l'algorithme B sur certaines fonctions de coût, alors, en gros, il doit exister exactement autant de fonctions où B surperforme A

/ edit: aussi, une SVM radiale avec C = 4 et sigma = 0,206 donne facilement un R2 de 0,99. L'extraction de l'équation utilisée pour dériver cet ensemble de données est laissée à la classe comme exercice. Le code est en R.

setwd("~/wherever")
library('caret')
Data <- read.csv("CV.csv", header=TRUE)
FL <- as.formula("FF ~ AA+BB+CC+DD+EE")
model <- train(FL,data=Data,method='svmRadial',tuneGrid = expand.grid(.C=4,.sigma=0.206))
R2( predict(model, Data), Data$FF)

-2

Tous les modèles sont faux mais certains sont utiles: GEPBox

Y (T) = - 4709,7
+ 102,60 * AA (T) - 17,0707 * AA (T-1)
+ 62,4994 * BB (T) + 41,7453 * CC (T) + 965,70 * ZZ (T)

où ZZ (T) = 0 POUR T = 1,10 = 1 AUTREMENT

Il semble exister une "relation décalée" entre Y et AA ET un décalage expliqué de la moyenne pour les observations 11-25.

Résultats curieux s'il ne s'agit pas de données chronologiques ou spatiales.


@IrishStats Qu'est-ce que "GEP Box"?
knorv

IrishStat: Les données ne sont pas chronologiques. Donc, l'ordre des observations n'a pas d'importance. Le décalage de la moyenne pour les observations 11 à 25 est simplement un effet secondaire sur la façon dont j'ai récupéré le jeu de données.
knorv

1
@IrishStat: Je voulais dire que je venais juste de récupérer les enregistrements dans un certain ordre (réfléchir ORDER BY). Les lignes n'ont pas d'ordre spécial inhérent. Vous pouvez donc les réorganiser en toute sécurité sans perdre aucune information. Désolé si je vous ai confus :-)
knorv

1
IrishStat: Le jeu de données n'est pas ordonné. Le AA(T-1)terme dans votre équation n’a aucun sens dans ce contexte.
naught101

2
AA(T-1)R2

-3

r carré de 97,2

Vérification du diagnostic / estimation pour YY
X1 AAS
X2 BB
X3 BBS
X4 CC

Nombre de résidus (R) = n 25
Nombre de degrés de liberté = nm 20
Moyenne résiduelle = Somme R / n -.141873E-05
Somme des carrés = Somme R 2,775723E + 07
Variance = SOS / (n) 310289.
Ajusté Variance = SOS / (nm) 387861.
Ecart type RMSE = SQRT (Adj Var) 622.785
Erreur type de la moyenne = Dev standard (nm) 139.259
Moyenne / son erreur type = Moyenne / SEM -.101877E-07
Déviation absolue moyenne = Somme (ABS (R)) / n 455,684
Valeur AIC (Utilisations var) = nln + 2m 326.131
Valeur SBC (Utilisations var) = nln + m * lnn 332,226
Valeur BIC (Uses var) = voir Wei p153 340.388
R Carré = .972211
Statistique de Durbin-Watson = [- A (T-1)] ** 2 / A
2 1.76580

**
MODÈLE COMPOSANT LAG COEFF STANDARD PT
# (BOP) VALEUR D'ERREUR

1CONSTANT                         -.381E+04   466.       .0000    -8.18

ENTRÉE SÉRIE X1, AA AA CARRÉ

2Omega (input) -Factor #  1    0   .983       .410E-01   .0000    23.98

ENTRÉE SÉRIE X2 BB BB COMME DONNÉ

3Omega (input) -Factor #  2    0   108.       14.9       .0000     7.27

ENTRÉE SÉRIE X3 BBS BB SQUARED

4Omega (input) -Factor #  3    0  -.577       .147       .0008    -3.93

ENTRÉE SÉRIE X4 CC CC COMME DONNÉ

5Omega (input) -Factor #  4    0   49.9       4.67       .0000    10.67

 TERRAIN résiduel

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.