Data Mining: Wie soll ich vorgehen, um das funktionale Formular zu finden?

34

Ich bin gespannt auf wiederholbare Verfahren , die verwendet werden können , die funktionale Form der Funktion zu entdecken , y = f(A, B, C) + error_termwo meine einzige Eingabe eine Reihe von Beobachtungen ist ( y, A, Bund C). Bitte beachten Sie, dass die Funktionsform funbekannt ist.

Betrachten Sie den folgenden Datensatz:

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

In diesem Beispiel nehmen wir an, dass wir das wissen FF = f(AA, BB, CC, DD, EE) + error term, aber wir sind uns nicht sicher über die funktionale Form von f(...).

Welches Verfahren / welche Methoden würden Sie anwenden, um die funktionale Form von zu finden f(...)?

(Bonuspunkt: Was ist Ihre beste Vermutung bei der Festlegung der foben genannten Daten? :-) Und ja, es gibt eine "richtige" Antwort, die R^2über 0,99 hinausgeht.)

knorv
quelle
1
@OP: Die folgenden Kommentare von IrishStat erinnern mich daran, dass Sie ohne etwas Wissen darüber, wie Ihre unabhängigen Variablen miteinander und / oder mit der abhängigen Variablen zusammenhängen, theoretisch "den Bach hinauf ohne Paddel" fahren müssen. Wenn zum Beispiel FF"Verbrennungsausbeute" und AAdie Menge an Kraftstoff und BBdie Menge an Sauerstoff wären, würden Sie nach einem zusammenwirkenden Begriff von AAundBB
Pete,
@Pete: Interaktive Begriffe sind absolut möglich. Ich hoffe, ich habe das nicht ausgeschlossen, indem ich meine Frage falsch formuliert habe.
knorv
2
@Pete: Das ist kein Problem (und ich würde es sogar als realistisch in einem realen Umfeld bezeichnen), siehe meine Antwort unten.
vonjd
3
Pete: Aus der unendlichen Anzahl von Funktionen, die zu den Daten passen, R^2 >= 0.99möchte man diejenige mit dem besten Verhältnis von Leistung zu Komplexität finden (und natürlich nicht in die Stichprobe passen). Entschuldigung, dass ich diese
Erklärung
1
Auch jetzt , dass die Frage ist recht gut beantwortet, wäre es abkühlen zu wissen , ob die Daten wurden durch eine der vorgeschlagenen Funktionen unten erzeugt.
Naught101

Antworten:

29

Um die am besten passende funktionale Form (so genannte Freiform oder symbolische Regression) für die Daten zu finden, probieren Sie dieses Tool aus - meines Wissens ist dies die beste verfügbare (zumindest bin ich sehr aufgeregt darüber) ... und ihre frei :-)

http://creativemachines.cornell.edu/eureqa

EDIT : Ich habe es mit Eureqa ausprobiert und ich würde gehen für:

mit R 2 = 0,99988

AA+AA2+BBCC
R2=0.99988

Ich würde es als perfekte Passform bezeichnen (Eureqa bietet andere, besser passende Lösungen, aber diese sind auch etwas komplizierter. Eureqa favorisiert diese, daher habe ich diese ausgewählt) - und Eureqa hat alles in ein paar Sekunden für mich erledigt ein normaler Laptop ;-)

vonjd
quelle
6
Nur als Referenz: Eureqa verwendet die genetische Programmierung , um Lösungen für das symbolische Regressionsproblem zu finden.
Thies Heidecke
10
+1 Beeindruckende Leistung für ein sinnloses, automatisches Werkzeug!
whuber
1
@vonjd, der Link sagt jetzt "kostenlose 30-Tage-Testversion". Würdest du eine kostenlose Alternative kennen?
Denis
3
@denis: Sie können dieses R-Paket ausprobieren : cran.r-project.org/web/packages/rgp/index.html - aber es ist nicht so ausgefeilt wie die oben genannte Software (noch nicht?)
vonjd
3
Eureqa ist für akademische / gemeinnützige Organisationen noch kostenlos
Inverse
25

allein ist kein gutes Maß für die Anpassungsgüte, aber lassen Sie uns hier nicht darauf eingehen, außer zu beobachten, dassSparsamkeitbei der Modellierung geschätzt wird.R2

Zu diesem Zweck ist zu beachten, dass Standardtechniken für explorative Datenanalyse (EDA) und Regression (jedoch nicht schrittweise oder andere automatisierte Verfahren) die Verwendung eines linearen Modells im Formular empfehlen

f=ein+bc+einbc+Konstante+Error

Mit OLS wird ein über 0,99 erreicht. Ermutigt durch ein solches Ergebnis ist man versucht , beide Seiten und Regress Quadratur f auf a , b * c , a * b * c , und alle ihre Quadrate und Produkte. Dies ergibt sofort ein ModellR2feinbceinbc

f=ein2+bc+Konstante+Error

mit einer Wurzel-MSE von unter 34 und einem bereinigten von 0,9999R2 . Die geschätzten Koeffizienten von 1,0112 und 0,988 lassen vermuten, dass die Daten mit der Formel künstlich erzeugt werden können

f=ein2+bc+50

plus ein wenig normalverteilter Fehler von SD ungefähr gleich 50.

Bearbeiten

Als Antwort auf die Hinweise von @knorv setzte ich die Analyse fort. Zu diesem Zweck habe ich die bisher erfolgreichen Techniken angewendet und mit der Prüfung der Streudiagramm-Matrizen der Residuen gegen die ursprünglichen Variablen begonnen. Sicher genug, gibt es eine klare Anzeige der Korrelation zwischen war und den Residuen (obwohl OLS Regression von f gegen eine , eine 2 , und b * c hat nicht zeigen eine „signifikante“ war). In diesem Sinne untersuchte ich alle Korrelationen zwischen den quadratischen Termen a 2 , , e 2 , a einfeinein2bceinein2,,e2,einb,einc,,deb2

b2

Auf jeden Fall ist eine verbesserte Passform gegeben durch

f=ein+ein2+bc-b2/100+30.5+Error

0


einb2

Übrigens, mit robuster Regression kann ich das Modell anpassen

f=1.0103ein2+0,99493bc-0,007b2+46,78+Error

mit einer restlichen SD von 27,4 und allen Residuen zwischen -51 und +47: im Wesentlichen so gut wie die vorherige Anpassung, jedoch mit einer Variablen weniger. In diesem Sinne ist es eher sparsam, aber weniger sparsam in dem Sinne, dass ich die Koeffizienten nicht auf "nette" Werte gerundet habe. Dies ist jedoch die Form, die ich normalerweise in einer Regressionsanalyse bevorzuge, wenn keine strengen Theorien darüber vorliegen, welche Arten von Werten die Koeffizienten haben sollten und welche Variablen einbezogen werden sollten.

R2

whuber
quelle
1
Gute Arbeit! Bisher scheint dies die beste Antwort zu sein.
Zach
@whuber: Gute Arbeit - du kommst näher! :-) Es ist wahr, dass die Daten künstlich mit einer Formel plus einem Fehlerbegriff erzeugt wurden. Aber die Formel ist nicht genau die, die Sie gefunden haben - Sie verpassen ein paar Begriffe. Aber du bist nah dran und führst gerade :-)
knorv
4
@whuber Ich habe bereits meine +1 gegeben, aber ich möchte hinzufügen, dass dies sehr lehrreich ist, um die Herangehensweise an ein solches Problem zu lesen. Du bist das Kopfgeld in jeder Hinsicht wert.
chl
1
@bill Ich habe es schon früh versucht. Ich vertraue darauf, dass meine Erklärung Platz für Ihren Vorschlag bietet sowie für die beiden, die ich beigefügt habe. Es gibt mehr als eine richtige Antwort. Ich setzte die Analyse fort und bezog diese zusätzlichen Terme ein, da klar war, dass es Muster in den Residuen gibt und deren Berücksichtigung die Residuenvarianz wesentlich verringert. (Ich gebe jedoch zu, dass ich sehr wenig Zeit und Aufmerksamkeit darauf verwendet habe: Die Gesamtzeit für die erste Analyse, einschließlich des Schreibens der Antwort, betrug 17 Minuten. Mehr Zeit bedeutet häufig mehr Einsicht ...)
whuber
1
@naught Es wäre interessant, mit einer so langen Formel zu beginnen und ein elastisches Netz (oder einen ähnlichen Algorithmus zur Eliminierung von Variablen) anzuwenden. Ich vermute, dass der Erfolg eines solchen Ansatzes davon abhängt, dass die Anzahl der Funktionen relativ klein gehalten und die richtigen Funktionen hinzugefügt werden - das klingt eher nach Glück und gutem Rätsel als nach einer grundsätzlichen Untersuchung. Aber wenn es zum Erfolg führt, eine große Anzahl von funktionalen Formen blindlings auf das Problem zu werfen, wäre dies wissenswert.
whuber
5

Ihre Frage muss verfeinert werden, da die Funktion fmit ziemlicher Sicherheit nicht eindeutig durch die Beispieldaten definiert ist. Es gibt viele verschiedene Funktionen, die die gleichen Daten erzeugen können.

Davon abgesehen kann die Varianzanalyse (ANOVA) oder eine "Sensitivitätsstudie" viel darüber aussagen, wie sich Ihre Eingaben (AA..EE) auf Ihre Ausgabe (FF) auswirken.

Ich habe gerade eine schnelle ANOVA und fand ein recht gutes Modell: FF = 101*A + 47*B + 49*C - 4484. Die Funktion scheint nicht linear von DD oder EE abhängig zu sein. Natürlich könnten wir das Modell weiterentwickeln und quadratische und gemischte Terme hinzufügen. Schließlich haben Sie ein perfektes Modell, das über die Daten passt und keinen prädiktiven Wert hat. :)

Pete
quelle
@Pete Wie du sagtest, du könntest quadratische, kubische, quartische ... und Mischungsbegriffe hinzufügen, aber das wäre nur Unsinn. Es gibt Unsinn und es gibt unsinnigen Unsinn, aber der unsinnigste Unsinn ist "statistischer Unsinn".
IrishStat
2
@IrishStat Es ist im Allgemeinen kein Unsinn, eine Mischung und Terme höherer Ordnung hinzuzufügen. nur schlimm, wenn es ohne Zurückhaltung und ohne Rücksicht auf die Theorie gemacht wird
Pete
2
@Pete. Richtig! Das Fehlen einer bereits existierenden Theorie macht es albern.
IrishStat
@Pete: Welche R ^ 2 bekommst du für dein Modell?
knorv
@knorv: Ich erinnere mich nicht genau, aber es war> 0,90. Als die Punkte über die Regressionsgerade gezeichnet wurden, schienen sie ein kleines "S" / kubische Form zu haben, daher schätze ich, dass die Funktion "f" eine mathematische Schöpfung war, bei der jemand 100A + 50 (B + C) + höhere Ordnung eingab Begriffe mit D & E.
Pete
3

Im Allgemeinen gibt es beim maschinellen Lernen kein kostenloses Mittagessen:

Insbesondere wenn der Algorithmus A den Algorithmus B bei einigen Kostenfunktionen übertrifft, muss es grob gesagt genau so viele andere Funktionen geben, bei denen B den Algorithmus A übertrifft

/ edit: auch eine radiale SVM mit C = 4 und Sigma = 0,206 ergibt leicht ein R2 von 0,99. Das Extrahieren der tatsächlichen Gleichung, die zum Ableiten dieses Datensatzes verwendet wird, bleibt der Klasse als Übung überlassen. Code ist in 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)
Zach
quelle
-2

Alle Modelle sind falsch, aber einige sind nützlich: 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)

Wobei ZZ (T) = 0 FÜR T = 1,10 = 1 ANDERWEITIG

Es scheint eine "verzögerte Beziehung" zwischen Y und AA und eine erklärte Verschiebung des Mittelwerts für die Beobachtungen 11-25 zu geben.

Seltsame Ergebnisse, wenn es sich nicht um chronologische oder räumliche Daten handelt.

IrishStat
quelle
@IrishStats Was ist "GEP Box"?
Knorv
IrishStat: Die Daten sind nicht chronologisch. Die Reihenfolge der Beobachtungen spielt also keine Rolle. Die Verschiebung des Mittelwerts für die Beobachtungen Nr. 11-25 ist lediglich ein Nebeneffekt auf die Art und Weise, wie ich den Datensatz abgerufen habe.
knorv
1
@IrishStat: Ich meinte, dass ich gerade die Datensätze in einer bestimmten Reihenfolge abgerufen habe (denke nach ORDER BY). Die Zeilen haben keine inhärente Sonderreihenfolge. So können Sie sie sicher neu anordnen, ohne Informationen zu verlieren. Entschuldigung, wenn ich Sie verwirrt habe :-)
knorv
1
IrishStat: Der Datensatz ist ungeordnet. Der AA(T-1)Ausdruck in Ihrer Gleichung macht in diesem Zusammenhang keinen Sinn.
Naught101
2
AA(T-1)R2
-3

r Quadrat von 97,2

Schätzung / Diagnoseprüfung für Variable YY
X1 AAS
X2 BB
X3 BBS
X4 CC

Anzahl der Reste (R) = n 25
Anzahl der Freiheitsgrade = nm 20
Restmittel = Summe R / n -.141873E-05
Summe der Quadrate = Summe R 2 .775723E + 07
Varianz = SOS / (n) 310289.
Bereinigt Varianz = SOS / (nm) 387861.
Standardabweichung RMSE = SQRT (Adj Var) 622.785
Standardfehler des Mittelwerts = Standardabweichung / (nm) 139.259
Mittelwert / Standardfehler = Mittelwert / SEM -.101877E-07
Mittlere absolute Abweichung = Summe (ABS®) / n 455,684
AIC-Wert (Verwendet var) = nln + 2m 326,131
SBC-Wert (Verwendet var) = nln + m * lnn 332,226
BIC-Wert (Verwendet var) = siehe Seite 153 340,388
R-Quadrat = .972211
Durbin-Watson-Statistik = [- A (T -1)] ** 2 / A
2 1,76580

**
MODELLKOMPONENTE LAG COEFF STANDARD PT
# (BOP) FEHLERWERT WERT

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

EINGANGSSERIE X1 AAS AA QUADRATISCH

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

EINGANGSSERIE X2 BB BB WIE GEGEBEN

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

EINGANGSSERIE X3 BBS BB QUADRATISCH

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

EINGANGSSERIE X4 CC CC WIE GEGEBEN

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

 Restgrundstück

IrishStat
quelle