Processing math: 100%

35 votos

La minería de datos: ¿Cómo debo hacer para encontrar la forma funcional?

Tengo curiosidad por los procedimientos repetibles que pueden utilizarse para descubrir la forma funcional de la función y = f(A, B, C) + error_term donde mi única entrada es un conjunto de observaciones ( y , A , B y C ). Tenga en cuenta que la forma funcional de f es desconocido.

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, supongamos que sabemos que 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ía para llegar a encontrar la forma funcional de f(...) ?

(Punto extra: ¿Cuál es su mejor conjetura sobre la definición de f teniendo en cuenta los datos anteriores? :-) Y sí, hay una respuesta "correcta" que dará un R^2 superior a 0,99).

28voto

Dan Puntos 12178

Para encontrar la forma funcional que mejor se adapte a los datos (la llamada regresión simbólica o de forma libre), pruebe esta herramienta, que según mis conocimientos es la mejor disponible (al menos a mí me entusiasma)... y es gratuita :-)

http://creativemachines.cornell.edu/eureqa

EDITAR : Lo intenté con Eureqa y me decantaría por:

AA+AA2+BBCC con R2=0.99988

Yo diría que es un ajuste perfecto (Eureqa da otras soluciones de ajuste mejores, pero también son un poco más complicadas. Eureqa se inclina por ésta, así que elegí ésta) - y Eureqa me lo hizo todo en unos pocos segundos en un portátil normal ;-)

24voto

jldugger Puntos 7490

R2 por sí sola no es una buena medida de la bondad del ajuste, pero no vamos a entrar en eso aquí, excepto para observar que parsimonia se valora en el modelado.

Para ello, hay que tener en cuenta que las técnicas habituales de análisis exploratorio de datos (EDA) y la regresión (pero pas paso a paso u otros procedimientos automatizados) sugieren utilizar un modelo lineal de la forma

f=a+bc+abc+constant+error

Utilizando OLS, se consigue una R2 por encima de 0,99. Ante tal resultado, uno se siente tentado de elevar al cuadrado ambos lados y hacer una regresión f en a , bc , abc , y todas sus plazas y productos. Esto produce inmediatamente un modelo

f=a2+bc+constant+error

con un MSE de raíz inferior a 34 y un ajustado R2 de 0,9999 . Los coeficientes estimados de 1,0112 y 0,988 sugieren que los datos pueden ser generados artificialmente con la fórmula

f=a2+bc+50

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

Editar

En respuesta a las sugerencias de @knorv, continué el análisis. Para ello utilicé las técnicas que me habían dado resultado hasta ahora, empezando por inspeccionar las matrices de dispersión de los residuos frente a las variables originales. Efectivamente, había un claro indicio de correlación entre a y los residuos (aunque la regresión OLS de f contra a , a2 y bc hizo pas indicar a era "significativo"). Siguiendo con esta línea, exploré todas las correlaciones entre los términos cuadráticos a2,,e2,ab,ac,,de y los nuevos residuos y se encontró una relación ínfima pero altamente significativa con b2 . "Altamente significativo" significa que todo este fisgoneo implicó el análisis de unas 20 variables diferentes, por lo que mi criterio de significación en esta expedición de pesca fue aproximadamente 0,05/20 = 0,0025: cualquier cosa menos estricta podría ser fácilmente un artefacto de la búsqueda de ajustes.

Esto tiene algo del sabor de un modelo físico en el sentido de que esperamos, y por tanto buscamos, relaciones con coeficientes "interesantes" y "simples". Así, por ejemplo, al ver que el coeficiente estimado de b2 era de -0,0092 (entre -0,005 y -0,013 con una confianza del 95%), he optado por utilizar -1/100 para ello. Si se tratara de otro conjunto de datos, como las observaciones de un sistema social o político, no haría tales cambios, sino que utilizaría las estimaciones OLS tal cual.

De todos modos, un ajuste mejorado viene dado por

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

con un residuo medio 0 La desviación estándar es de 26,8, todos los residuos se sitúan entre -50 y +43, y no hay indicios de no normalidad (aunque con un conjunto de datos tan pequeño los errores podrían incluso estar distribuidos uniformemente y no se podría apreciar la diferencia). La reducción de la desviación estándar residual de alrededor de 50 a alrededor de 25 se expresaría a menudo como "explicar el 75% de la varianza residual".


No pretendo que esto sea el fórmula utilizada para generar los datos . Los residuos son lo suficientemente grandes como para permitir algunos cambios bastante importantes en algunos de los coeficientes. Por ejemplo, los IC del 95% para los coeficientes de a , b2 y la constante son [-0,4, 2,7], [-0,013, -0,003] y [-7, 61] respectivamente. La cuestión es que si se ha introducido algún error aleatorio en el procedimiento de generación de datos (y eso es cierto para todo datos del mundo real), eso impediría la identificación definitiva de los coeficientes (e incluso de todas las variables que pudieran estar implicadas). Eso no es una limitación de los métodos estadísticos: es sólo un hecho matemático.

Por cierto, utilizando la regresión robusta puedo ajustar el modelo

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

con una SD residual de 27,4 y todos los residuos 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 "bonitos". No obstante, esta es la forma que normalmente favorecería en un análisis de regresión sin ninguna teoría rigurosa sobre qué tipo de valores deberían tener los coeficientes y qué variables deberían incluirse.

Es probable que haya otras relaciones fuertes al acecho pero tendrían que ser bastante complicados. Por cierto, tomar datos cuya DE original es 3410 y reducir su variación a residuos con una DE de 27 es un 99.99384% reducción de la varianza (el R2 de este nuevo ajuste). Se seguiría buscando efectos adicionales sólo si la DS residual es demasiado grande para el propósito previsto. En ausencia de cualquier otro propósito que no sea el de cuestionar el PO, es el momento de parar.

5voto

Daren Thomas Puntos 26812

Su pregunta necesita ser refinada porque la función f es casi seguro que no está definida de forma única por los datos de la muestra. Hay muchas funciones diferentes que podrían generar los mismos datos.

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

Acabo de hacer un rápido ANOVA y encontré un modelo razonablemente bueno: FF = 101*A + 47*B + 49*C - 4484 . La función no parece depender linealmente de DD o EE. Por supuesto, podríamos ir más allá con el modelo y añadir términos cuadráticos y de mezcla. Al final tendremos un modelo perfecto que se ajusta en exceso a los datos y no tiene valor predictivo. :)

3voto

Boris Tsirelson Puntos 191

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 coste, entonces, en términos generales, deben existir exactamente otras tantas funciones en las que B supere a A

/edit: además, una SVM radial con C = 4 y sigma = 0,206 produce fácilmente un R2 de 0,99. La extracción de 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)

-3voto

Owen Fraser-Green Puntos 642

Todos los modelos son erróneos pero algunos son útiles : G.E.P.Box

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 OTRO MODO

Parece haber una "relación retardada" entre Y y AA Y un desplazamiento explicado de la media para las observaciones 11-25 .

Curiosos resultados si no se trata de datos cronológicos o espaciales.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X