Data mining: come devo fare per trovare il modulo funzionale?


34

Sono curioso di sapere procedure ripetibili che possono essere utilizzati per scoprire la forma funzionale della funzione y = f(A, B, C) + error_termin cui il mio unico input è un insieme di osservazioni ( y, A, Be C). Si noti che la forma funzionale di fè sconosciuta.

Considera il seguente set di dati:

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 questo esempio, supponiamo che lo sappiamo FF = f(AA, BB, CC, DD, EE) + error term, ma non siamo sicuri della forma funzionale di f(...).

Quale procedura / quali metodi useresti per arrivare a trovare la forma funzionale di f(...)?

(Punto bonus: qual è la tua ipotesi migliore alla conclusione di aver fdato i dati sopra? :-) E sì, c'è una risposta "corretta" che produrrà un R^2eccesso di 0,99.)


1
@OP: I commenti di IrishStat qui sotto mi ricordano che senza una certa conoscenza di come le tue variabili indipendenti sono correlate tra loro e / o la variabile dipendente, in teoria, ti lascia "su per il fiume senza una paletta". Per esempio, se FFè stata "resa di combustione" e AAfu quantità di carburante, ed BBè stata la quantità di ossigeno, si dovrebbe guardare per una durata di interagire AAeBB
Pete

@Pete: i termini di interazione sono assolutamente possibili. Spero di non averlo escluso inquadrando la mia domanda in modo errato.
Knorv,

2
@Pete: questo non è un problema (e lo definirei anche realistico in un contesto di vita reale), vedi la mia risposta qui sotto.
vonjd,

3
Pete: Tra il numero infinito di funzioni che si adatteranno ai dati, R^2 >= 0.99uno vorrebbe trovare quello con il miglior rapporto prestazioni / complessità (e naturalmente fuori misura). Scusate se non ho scritto quella
chiarezza

1
Inoltre, ora che la domanda ha una risposta ragionevolmente buona, sarebbe bello sapere se i dati sono stati generati da una delle funzioni suggerite di seguito.
naught101

Risposte:


29

Per trovare la forma funzionale più adatta (la cosiddetta regressione a forma libera o simbolica) per i dati, prova questo strumento: a mia conoscenza, questo è il migliore disponibile (almeno sono molto eccitato) ... e il suo gratuito :-)

http://creativemachines.cornell.edu/eureqa

EDIT : ho provato con Eureqa e vorrei scegliere:

R 2 = 0.99988

AA+AA2+BBCC
conR2=0.99988

Lo definirei un adattamento perfetto (Eureqa offre altre soluzioni più adeguate, ma anche queste sono un po 'più complicate. Eureqa preferisce questo, quindi l'ho scelto) - Eureqa ha fatto tutto per me in pochi secondi circa un normale laptop ;-)


6
solo per riferimento, Eureqa sta usando la programmazione genetica per trovare soluzioni al problema della regressione simbolica.
Thies Heidecke,

10
+1 Prestazioni impressionanti per uno strumento insensato e automatico!
whuber

1
@vonjd, il link ora dice "prova gratuita di 30 giorni". Sapresti di un'alternativa gratuita?
denis,

3
@denis: puoi provare questo pacchetto R: cran.r-project.org/web/packages/rgp/index.html - ma non è così sofisticato come il software sopra menzionato (non ancora?)
vonjd

3
Eureqa è ancora gratuito per le organizzazioni accademiche / no profit
Inverse

25

R2

A tal fine, si noti che le tecniche standard di analisi dei dati esplorativi (EDA) e di regressione (ma non per fasi o altre procedure automatizzate) suggeriscono di utilizzare un modello lineare nel modulo

f=a+bc+abc+constant+error

R2fabcabc

f=a2+bc+constant+error

R2

f=a2+bc+50

più un piccolo errore normalmente distribuito di SD approssimativamente uguale a 50.

modificare

afaa2bcaa2,,e2,ab,ac,,deb2

b2

Ad ogni modo, una migliore vestibilità è data da

f=a+a2+bcb2/100+30.5+error

0


ab2

A proposito, usando la regressione robusta posso adattarmi al modello

f=1.0103a2+0.99493bc0.007b2+46.78+error

con DS residuo di 27,4 e tutti i residui tra -51 e +47: sostanzialmente buono come l'adattamento precedente ma con una variabile in meno. È più parsimonioso in questo senso, ma meno parsimonioso nel senso che non ho arrotondato i coefficienti a valori "carini". Tuttavia, questa è la forma che preferirei di solito in un'analisi di regressione in assenza di teorie rigorose su quali tipi di valori dovrebbero avere i coefficienti e quali variabili dovrebbero essere incluse.

R2


1
Buon lavoro! Finora questa sembra la risposta migliore.
Zach,

@whuber: Bel lavoro - ti stai avvicinando! :-) È vero che i dati sono stati generati artificialmente con una formula più un termine di errore. Ma la formula non è esattamente quella che hai trovato: ti perdi in un paio di termini. Ma sei vicino e sei attualmente in testa :-)
Knorv

4
@whuber Ho già dato il mio +1, ma vorrei aggiungere che è molto istruttivo leggere il proprio approccio a tale problema. Tu vali la generosità in qualsiasi modo.
chl

1
@bill L'ho provato, all'inizio. Confido che la mia spiegazione offra spazio alla tua proposta e alle due che ho incluso. C'è più di una risposta giusta. Ho continuato l'analisi e ho incluso quei termini extra perché era chiaro che ci sono modelli nei residui e che la loro contabilità riduce materialmente la varianza residua. (Confesserò di aver speso pochissimo tempo e attenzione su questo, però: il tempo totale per l'analisi iniziale, inclusa la scrittura della risposta, era di 17 minuti. Più tempo si traduce spesso in più intuizione ...)
whuber

1
@naught Sarebbe interessante iniziare con una formula così lunga e applicare una rete elastica (o qualche algoritmo di eliminazione variabile simile). Sospetto che il successo di un simile approccio dipenda dal mantenere relativamente piccolo il numero di funzioni e dall'includere le corrette funzioni tra loro - il che suona più come una questione di buona fortuna e buona ipotesi che di qualsiasi indagine di principio. Ma se lanciare ciecamente un numero enorme di forme funzionali al problema si traduca in un successo, varrebbe la pena conoscerlo.
whuber

5

La tua domanda deve essere perfezionata perché la funzione non fè quasi certamente definita in modo univoco dai dati di esempio. Esistono molte funzioni diverse che potrebbero generare gli stessi dati.

Detto questo, Analysis of Variance (ANOVA) o uno "studio di sensibilità" possono dirti molto su come i tuoi input (AA..EE) influenzano il tuo output (FF).

Ho appena fatto un rapido ANOVA e trovato un ragionevolmente buon modello: FF = 101*A + 47*B + 49*C - 4484. La funzione non sembra dipendere linearmente da DD o EE. Naturalmente, potremmo andare oltre con il modello e aggiungere termini quadratici e misti. Alla fine avrai un modello perfetto che si adatta perfettamente ai dati e non ha alcun valore predittivo. :)


@Pete Come hai detto, potresti aggiungere termini quadratici, cubici, quartici .... e misti, ma sarebbe solo una sciocchezza. C'è assurdità e c'è assurdità non sensuale il bot la più assurdità senza senso è "assurdità statistica".
IrishStat,

2
@IrishStat è non generalmente dialogo aggiungere miscela e termini di ordine superiore; solo male quando è fatto senza ritegno e senza riguardo alla teoria
Pete

2
@Pete. Corretta! L'assenza di una teoria preesistente la rende sciocca.
IrishStat,

@Pete: quale R ^ 2 ottieni per il tuo modello?
Knorv,

@knorv: non ricordo del tutto ma era> 0,90. Quando tracciati sulla linea di regressione, i punti sembravano avere una "S" / forma cubica, quindi immagino che la funzione "f" fosse una creazione matematica in cui qualcuno digitava 100A + 50 (B + C) + ordine superiore termini che coinvolgono D & E.
Pete,

3

In linea di massima, non c'è pranzo libero nell'apprendimento automatico:

In particolare, se l'algoritmo A supera l'algoritmo B su alcune funzioni di costo, allora parlando in modo approssimativo devono esistere esattamente quante altre funzioni in cui B supera le prestazioni di A

/ modifica: inoltre, un SVM radiale con C = 4 e sigma = 0.206 produce facilmente un R2 di 0,99. L'estrazione dell'equazione effettiva utilizzata per derivare questo set di dati viene lasciata come esercizio alla classe. Il codice è 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)

-2

Tutti i modelli sono sbagliati ma alcuni sono utili: 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)

dove ZZ (T) = 0 FOR T = 1,10 = 1 ALTRO

Sembra esserci una "relazione ritardata" tra Y e AA E uno spostamento spiegato nella media per le osservazioni 11-25.

Risultati curiosi se non si tratta di dati cronologici o spaziali.


@IrishStats Che cos'è "GEP Box"?
Knorv,

IrishStat: i dati non sono cronologici. Quindi l'ordinamento delle osservazioni non è importante. Lo spostamento nella media delle osservazioni nn. 11-25 è semplicemente un effetto collaterale su come ho recuperato il set di dati.
Knorv,

1
@IrishStat: intendevo dire che mi è capitato di recuperare i record in un certo ordine (pensa ORDER BY). Le righe non hanno un ordine speciale inerente. Quindi puoi riorganizzarli in sicurezza senza perdere alcuna informazione. Scusa se ti ho confuso :-)
Knorv,

1
IrishStat: il set di dati non è ordinato. Il AA(T-1)termine nella tua equazione non ha senso in questo contesto.
naught101

2
AA(T-1)R2

-3

r quadrato di 97.2

Stima / Verifica diagnostica per variabile AA
X1 AAS
X2 BB
X3 BBS
X4 CC

Numero di residui (R) = n 25
numero di gradi di libertà = nm 20
residua Media = Sum R / n -.141873E-05
somma dei quadrati = Somma R 2 .775723E + 07
Varianza = SOS / (n) 310289.
rettificato Varianza = SOS / (nm) 387861.
Deviazione standard RMSE = SQRT (Adj Var) 622.785
Errore standard della media = Dev standard / (nm) 139.259
Media / errore standard = Media / SEM -.101877E-07
Deviazione assoluta media = Somma (ABS (R)) / n 455.684
Valore AIC (Usa var) = nln + 2m 326.131
Valore SBC (Usa var) = nln + m * lnn 332.226
Valore BIC (Usa var) = vedi Wei p153 340.388
R Square = .972211
Statistica di Durbin-Watson = [- A (T -1)] ** 2 / A
2 1.76580

**
MODELLO COMPONENTE LAG COEFF STANDARD PT
# (BOP) VALORE ERRORE VALORE

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

SERIE INGRESSO X1 AAS AA QUADRATO

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

SERIE INPUT X2 BB BB COME DATO

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

SERIE INGRESSO X3 BBS BB QUADRATO

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

SERIE INPUT X4 CC CC COME DATO

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

 Trama residua

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.