Minería de datos: ¿cómo debo buscar la forma funcional?


34

Tengo curiosidad acerca de procedimientos repetibles que se pueden utilizar para descubrir la forma funcional de la función y = f(A, B, C) + error_termdonde mi única entrada es un conjunto de observaciones ( y, A, By C). Tenga en cuenta que la forma funcional de fes desconocida.

Considere el siguiente conjunto de datos:

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

En este ejemplo, suponga que lo sabemos FF = f(AA, BB, CC, DD, EE) + error term, pero no estamos seguros de la forma funcional de f(...).

¿Qué procedimiento / qué métodos utilizarías para llegar a encontrar la forma funcional de f(...)?

(Punto de bonificación: ¿Cuál es su mejor suposición sobre la definición de flos datos anteriores? :-) Y sí, hay una respuesta "correcta" que arrojará un R^2exceso de 0.99.)


1
@OP: Los comentarios de IrishStat a continuación me recuerdan que sin algún conocimiento de cómo sus variables independientes están relacionadas entre sí y / o la variable dependiente, en teoría, te deja "en el arroyo sin una paleta". Por ejemplo, si FFfue "rendimiento de combustión" y AAfue la cantidad de combustible, y BBfue la cantidad de oxígeno, buscaría un término de interacción de AAyBB
Pete

@Pete: los términos interactivos son absolutamente posibles. Espero no descartar eso al formular mi pregunta incorrectamente.
knorv

2
@Pete: Esto no es un problema (e incluso lo llamaría realista en un entorno de la vida real), solo vea mi respuesta a continuación.
vonjd

3
Pete: del número infinito de funciones que ajustarán los datos con R^2 >= 0.99una, le gustaría encontrar la que tenga la mejor relación rendimiento / complejidad (y, por supuesto, fuera del ajuste de la muestra). Perdón por no escribir esa
explicidad

1
Además, ahora que la pregunta está razonablemente bien respondida, sería genial saber si los datos fueron generados por una de las funciones sugeridas a continuación.
naught101

Respuestas:


29

Para encontrar la forma funcional que mejor se ajuste (llamada forma libre o regresión simbólica) para los datos, pruebe esta herramienta: que yo sepa, esta es la mejor disponible (al menos estoy muy entusiasmado con eso) ... y su gratis :-)

http://creativemachines.cornell.edu/eureqa

EDITAR : Le di una oportunidad con Eureqa y elegiría:

R 2 = 0.99988

AA+AA2+BBCC
conR2=0.99988

Yo lo llamaría un ajuste perfecto (Eureqa ofrece otras soluciones que se adaptan mejor, pero también son un poco más complicadas. Eureqa favorece esta, así que elegí esta), y Eureqa hizo todo por mí en unos pocos segundos una laptop normal ;-)


66
solo como referencia, Eureqa está utilizando la Programación Genética para encontrar soluciones al problema de regresión simbólica.
Thies Heidecke

10
+1 ¡Impresionante rendimiento para una herramienta automática sin sentido!
whuber

1
@vonjd, el enlace ahora dice "prueba gratuita de 30 días". ¿Sabrías de una alternativa gratuita?
denis

3
@denis: puede probar este paquete R: cran.r-project.org/web/packages/rgp/index.html , pero no es tan sofisticado como el software mencionado anteriormente (¿todavía no?)
vonjd

3
Eureqa sigue siendo gratuito para organizaciones académicas / sin fines de lucro
Inverso

25

R2

Con ese fin, tenga en cuenta que las técnicas estándar de análisis de datos exploratorios (EDA) y regresión (pero no procedimientos escalonados u otros procedimientos automatizados) sugieren utilizar un modelo lineal en la forma

f=a+bc+abc+constant+error

R2fabcabc

f=a2+bc+constant+error

R2

f=a2+bc+50

más un pequeño error de SD normalmente distribuido aproximadamente igual a 50

Editar

afaa2bcaa2,,e2,ab,ac,,deb2

b2

De todos modos, un ajuste mejorado viene dado por

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

0


ab2

Por cierto, usando una regresión robusta puedo ajustar el modelo

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

con SD residual de 27.4 y todos los residuales entre -51 y +47: esencialmente tan bueno como el ajuste anterior pero con una variable menos. Es más parsimonioso en ese sentido, pero menos parsimonioso en el sentido de que no he redondeado los coeficientes a valores "agradables". Sin embargo, esta es la forma que generalmente preferiría en un análisis de regresión en ausencia de teorías rigurosas sobre qué tipos de valores deberían tener los coeficientes y qué variables deberían incluirse.

R2


1
¡Buen trabajo! Hasta ahora, esta parece ser la mejor respuesta.
Zach

@whuber: Buen trabajo, ¡te estás acercando! :-) Es cierto que los datos se generaron artificialmente con una fórmula más un término de error. Pero la fórmula no es exactamente la que has encontrado: te estás perdiendo un par de términos. Pero estás cerca y actualmente estás a la cabeza :-)
knorv

44
@whuber Ya di mi +1, pero me gustaría agregar que esto es muy instructivo para leer el enfoque de uno a tal problema. Usted vale la generosidad de cualquier manera.
chl

1
@bill Lo intenté desde el principio. Confío en que mi explicación da cabida a su propuesta, así como a las dos que he incluido. Hay más de una respuesta correcta. Continué el análisis e incluí esos términos adicionales porque estaba claro que hay patrones en los residuos y que darles cuenta reduce materialmente la varianza residual. (Sin embargo, confieso que he dedicado muy poco tiempo y atención a esto: el tiempo total para el análisis inicial, incluida la redacción de la respuesta, fue de 17 minutos. Más tiempo a menudo se traduce en una mayor comprensión ...)
whuber

1
@naught Sería interesante comenzar con una fórmula tan larga y aplicar una red elástica (o algún algoritmo de eliminación de variables similar). Sospecho que el éxito de cualquier enfoque de este tipo dependerá de mantener el número de funciones relativamente pequeño e incluir las funciones correctas entre ellas, lo que parece más una cuestión de buena suerte y buena suposición que una investigación basada en principios. Pero si arrojar ciegamente una gran cantidad de formas funcionales al problema resulta en éxito, valdría la pena saberlo.
whuber

5

Su pregunta necesita un refinamiento porque fcasi con certeza la función no está definida únicamente por los datos de la muestra. Hay muchas funciones diferentes que podrían generar los mismos datos.

Dicho esto, el Análisis de varianza (ANOVA) o un "estudio de sensibilidad" puede decirle mucho sobre cómo sus entradas (AA..EE) afectan su salida (FF).

Acabo de hacer una rápida ANOVA y encontré un razonable buen modelo FF = 101*A + 47*B + 49*C - 4484. La función no parece depender de DD o EE linealmente. Por supuesto, podríamos ir más allá con el modelo y agregar términos cuadráticos y mixtos. Con el tiempo, tendrá un modelo perfecto que sobrepasa los datos y no tiene valor predictivo. :)


@Pete Como dijiste, podrías agregar términos cuadráticos, cúbicos, cuárticos ... y mixtos, pero eso sería una tontería. Hay tonterías y tonterías no sensuales, pero la mayoría de las tonterías no sensitivas son "tonterías estadísticas".
IrishStat

2
@IrishStat generalmente no tiene sentido agregar mezcla y términos de orden superior; solo malo cuando se hace sin restricciones y sin tener en cuenta la teoría
Pete

2
@Pete. ¡Correcto! La ausencia de una teoría preexistente lo hace tonto.
IrishStat

@Pete: ¿Qué R ^ 2 obtienes para tu modelo?
knorv

@knorv: No lo recuerdo pero era> 0,90. Cuando se trazó sobre la línea de regresión, los puntos parecían tener un poco de "S" / forma cúbica, así que supongo que la función "f" fue una creación matemática en la que alguien escribió 100A + 50 (B + C) + orden superior términos que involucran a D y E.
Pete

3

En términos generales, no hay almuerzo gratis en el aprendizaje automático:

En particular, si el algoritmo A supera al algoritmo B en algunas funciones de costo, entonces, en términos generales, debe existir exactamente el mismo número de otras funciones donde B supera a A

/ edit: también, un SVM radial con C = 4 y sigma = 0.206 produce fácilmente un R2 de .99. Extraer la ecuación real utilizada para derivar este conjunto de datos se deja como un ejercicio para la clase. El código 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

Todos los modelos están equivocados pero algunos son útiles: 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)

donde ZZ (T) = 0 PARA T = 1,10 = 1 DE OTRA MANERA

Parece haber una "relación rezagada" entre Y y AA Y un cambio explicado en la media para las observaciones 11-25.

Resultados curiosos si no se trata de datos cronológicos o espaciales.


@IrishStats ¿Qué es "GEP Box"?
knorv

IrishStat: Los datos no son cronológicos. Por lo tanto, el orden de las observaciones no es importante. El cambio en la media para las observaciones # 11-25 es simplemente un efecto secundario sobre cómo recuperé el conjunto de datos.
knorv

1
@IrishStat: Quise decir que acabo de recuperar los registros en un cierto orden (piense ORDER BY). Las filas no tienen un orden especial inherente. Por lo tanto, puede reorganizarlos sin perder ninguna información. Lo siento si te confundí :-)
knorv

1
IrishStat: el conjunto de datos no está ordenado. El AA(T-1)término en su ecuación no tiene sentido en este contexto.
naught101

2
AA(T-1)R2

-3

r cuadrado de 97.2

Estimación / Verificación de diagnóstico para variable YY
X1 AAS
X2 BB
X3 BBS
X4 CC

Número de residuos (R) = n 25
Número de grados de libertad = nm 20
Media residual = Suma R / n -.141873E-05
Suma de cuadrados = Suma R 2 .775723E + 07
Varianza = SOS / (n) 310289.
Ajustado Variación = SOS / (nm) 387861.
Desviación estándar RMSE = SQRT (Adj Var) 622.785
Error estándar de la media = Dev estándar / (nm) 139.259
Media / su error estándar = Media / SEM -.101877E-07
Media Desviación absoluta = Suma (ABS (R)) / n 455.684
Valor AIC (usa var) = nln + 2m 326.131
Valor SBC (usa var) = nln + m * lnn 332.226
Valor BIC (usa var) = vea Wei p153 340.388
R Cuadrado = .972211
Estadística de Durbin-Watson = [- A (T -1)] ** 2 / A
2 1.76580

**
MODELO COMPONENTE LAG COEFF ESTÁNDAR PT
# (BOP) VALOR DE ERROR VALOR

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

ENTRADA SERIE X1 AAS AA CUADRADO

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

ENTRADA SERIE X2 BB BB COMO DADA

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

ENTRADA SERIE X3 BBS BB CUADRADO

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

ENTRADA SERIE X4 CC CC COMO DADA

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

 PARCELA residual

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.