Mineração de dados: como devo encontrar a forma funcional?

34

Estou curioso sobre procedimentos repetitivos que podem ser usados para descobrir a forma funcional da função y = f(A, B, C) + error_termonde minha única entrada é um conjunto de observações ( y, A, Be C). Observe que a forma funcional de fé desconhecida.

Considere o seguinte conjunto de dados:

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

Neste exemplo, suponha que sabemos disso FF = f(AA, BB, CC, DD, EE) + error term, mas não temos certeza sobre a forma funcional de f(...).

Qual procedimento / quais métodos você usaria para encontrar a forma funcional f(...)?

(Ponto de bônus: qual é o seu melhor palpite na definição dos fdados acima? :-) E sim, existe uma resposta "correta" que renderá R^2mais de 0,99.)

knorv
fonte
1
@OP: Os comentários de IrishStat abaixo me lembram que, sem algum conhecimento de como suas variáveis ​​independentes estão relacionadas entre si e / ou a variável dependente, em teoria, deixa você "subindo o riacho sem remos". Por exemplo, se o FF"rendimento da combustão" AAera a quantidade de combustível e BBa quantidade de oxigênio, você procuraria um termo de interação de AAeBB
Pete
@ Peter: Termos de interação são absolutamente possíveis. Espero não ter descartado isso ao enquadrar minha pergunta incorretamente.
knorv
2
@Pete: Isso não é problema (e eu diria que é realista em um cenário da vida real), basta ver minha resposta abaixo.
vonjd
3
Pete: do número infinito de funções que ajustam os dados a R^2 >= 0.99uma delas, você gostaria de encontrar aquela com a melhor taxa de desempenho / complexidade (e fora da amostra, é claro). Desculpe por não ter escrito que explicitamente, eu pensei que era óbvio :-)
knorv
1
Além disso, agora que a pergunta está razoavelmente bem respondida, seria interessante saber se os dados foram gerados por uma das funções sugeridas abaixo.
precisa saber é o seguinte

Respostas:

29

Para encontrar a forma funcional mais adequada (chamada de forma livre ou regressão simbólica) para os dados, tente esta ferramenta - que eu saiba é a melhor disponível (pelo menos estou muito empolgada) ... e sua livre :-)

http://creativemachines.cornell.edu/eureqa

EDIT : Eu tentei com o Eureqa e gostaria de:

AA+AA2+BBCC
comR2=0.99988

Eu chamaria isso de ajuste perfeito (o Eureqa fornece outras soluções melhores, mas também são um pouco mais complicadas. O Eureqa é a favor deste, então escolhi este) - e o Eureqa fez tudo por mim em alguns segundos um laptop normal ;-)

vonjd
fonte
6
apenas para referência, Eureqa está usando a Programação Genética para encontrar soluções para o problema de regressão simbólica.
Thies Heidecke
10
+1 Desempenho impressionante para uma ferramenta automática e irracional!
whuber
1
@ vonjd, o link agora diz "teste gratuito de 30 dias". Você conheceria uma alternativa gratuita?
Denis
3
@denis: Você pode tentar este pacote R: cran.r-project.org/web/packages/rgp/index.html - mas não é tão sofisticado quanto o software acima mencionado (ainda não?)
vonjd
3
EUREQA ainda é livre para organizações acadêmicas / sem fins lucrativos
Inverse
25

R2 si só não é uma boa medida da qualidade do ajuste, mas não vamos entrar nisso aqui, exceto para observar que a parcimônia é valorizada na modelagem.

Para esse fim, observe que técnicas padrão de análise exploratória de dados (EDA) e regressão (mas não passo a passo ou outros procedimentos automatizados) sugerem o uso de um modelo linear na forma

f=a+bc+abc+constant+error

Usando OLS, isso atinge um acima de 0,99. Atentos a esse resultado, somos tentados a enquadrar ambos os lados e regredir em , , , e todos os seus quadrados e produtos. Isso imediatamente produz um modeloR2fabcabc

f=a2+bc+constant+error

com um MSE raiz abaixo de 34 e um ajustado de 0,9999R2 . Os coeficientes estimados de 1.0112 e 0.988 sugerem que os dados podem ser gerados artificialmente com a fórmula

f=a2+bc+50

mais um pequeno erro de SD normalmente distribuído aproximadamente igual a 50.

Editar

Em resposta às dicas de @ knorv, continuei a análise. Para fazer isso, usei as técnicas que foram bem-sucedidas até agora, começando com a inspeção das matrizes de dispersão dos resíduos em relação às variáveis ​​originais. Suficiente certeza, havia uma indicação clara de correlação entre e os resíduos (embora regressão OLS de contra , , e que não indicam foi "significativa"). Continuando nesse sentido, explorei todas as correlações entre os termos quadráticos e os novos resíduos e encontrei uma relação minúscula, mas altamente significativa, comf a a 2 b c a a 2 , , e 2 , a b , a c , , d e b 2afaa2bcaa2,,e2,ab,ac,,deb2. "Altamente significativo" significa que todo esse espionagem envolveu a observação de cerca de 20 variáveis ​​diferentes; portanto, meu critério de importância nessa expedição de pesca foi de aproximadamente 0,05 / 20 = 0,0025: qualquer coisa menos rigorosa poderia facilmente ser um artefato para a busca de acessos.

Isso tem o sabor de um modelo físico, pois esperamos e, portanto, procuramos relações com coeficientes "interessantes" e "simples". Assim, por exemplo, vendo que o coeficiente estimado de era -0,0092 (entre -0,005 e -0,013 com 95% de confiança), optei por usar -1/100 para ele. Se esse fosse algum outro conjunto de dados, como observações de um sistema social ou político, eu não faria essas alterações, apenas usaria as estimativas do OLS como estão.b2

De qualquer forma, um ajuste melhorado é dado por

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

com resíduo médio , desvio padrão 26,8, todos os resíduos entre -50 e +43 e nenhuma evidência de não normalidade (embora com um conjunto de dados tão pequeno os erros pudessem ser uniformemente distribuídos e não se pudesse realmente dizer a diferença). A redução no desvio padrão residual de cerca de 50 para cerca de 25 seria frequentemente expressa como "explicando 75% da variação residual".0


Não afirmo que essa seja a fórmula usada para gerar os dados . Os resíduos são grandes o suficiente para permitir algumas mudanças razoavelmente grandes em alguns dos coeficientes. Por exemplo, ICs de 95% para os coeficientes de , e a constante são [-0,4, 2,7], [-0,013, -0,003] e [-7, 61], respectivamente. O ponto é que, se algum erro aleatório tiver sido realmente introduzido no procedimento de geração de dados (e isso é verdade para todos os dados do mundo real), isso impediria a identificação definitiva dos coeficientes (e até de todas as variáveis ​​que possam estar envolvidas). ) Isso não é uma limitação dos métodos estatísticos: é apenas um fato matemático.ab2

BTW, usando regressão robusta, eu posso ajustar o modelo

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

com DP residual de 27,4 e todos os resíduos entre -51 e +47: essencialmente tão bons quanto o ajuste anterior, mas com uma variável a menos. É mais parcimonioso nesse sentido, mas menos parcimonioso no sentido de não ter arredondado os coeficientes para valores "agradáveis". No entanto, essa é a forma que eu normalmente favoreceria em uma análise de regressão, sem teorias rigorosas sobre quais tipos de valores os coeficientes devem ter e quais variáveis ​​devem ser incluídas.

É provável que ocorram fortes relacionamentos adicionais aqui , mas eles teriam que ser bastante complicados. Aliás, pegar dados cujo SD original é 3410 e reduzir sua variação para resíduos com um SD de 27 é uma redução de 99,999384% na variação (o desse novo ajuste). Um continuaria procurando efeitos adicionais somente se o SD residual for muito grande para a finalidade pretendida. Na ausência de qualquer objetivo além de adivinhar o OP, é hora de parar.R2

whuber
fonte
1
Bom trabalho! Até agora, essa parece ser a melhor resposta.
Zach
@whuber: Bom trabalho - você está chegando perto! :-) É verdade que os dados foram gerados artificialmente com uma fórmula mais um termo de erro. Mas a fórmula não é exatamente a que você encontrou - você está perdendo alguns termos. Mas você está perto e você está atualmente na liderança :-)
knorv
4
@ whuber Eu já dei o meu +1, mas gostaria de acrescentar que isso é muito instrutivo para ler a abordagem de alguém para esse problema. Você vale a recompensa de qualquer maneira.
chl
1
@ Bill eu tentei, desde o início. Confio que minha explicação ofereça espaço para sua proposta e para as duas que incluí. Há mais de uma resposta certa. Continuei a análise e incluí esses termos extras, porque ficou claro que existem padrões nos resíduos e que a contabilização deles reduz substancialmente a variação residual. (Confesso que dediquei muito pouco tempo e atenção a isso: o tempo total para a análise inicial, incluindo a redação da resposta, foi de 17 minutos. Mais tempo geralmente se traduz em mais informações ...)
whuber
1
@naught Seria interessante começar com uma fórmula tão longa e aplicar uma rede elástica (ou algum algoritmo semelhante de eliminação de variáveis). Suspeito que o sucesso de qualquer abordagem desse tipo dependa de manter o número de funções relativamente pequeno e incluir as funções corretas entre elas - o que parece mais uma questão de boa sorte e boa adivinhação do que qualquer investigação baseada em princípios. Mas se jogar cegamente um grande número de formas funcionais para o problema resultar em sucesso, valeria a pena saber.
whuber
5

Sua pergunta precisa ser refinada, porque a função fquase certamente não é definida exclusivamente pelos dados da amostra. Existem muitas funções diferentes que podem gerar os mesmos dados.

Dito isto, a Análise de variância (ANOVA) ou um "estudo de sensibilidade" pode dizer muito sobre como suas entradas (AA..EE) afetam sua saída (FF).

Eu apenas fiz uma rápida análise de variância e encontrou um razoavelmente bom modelo: FF = 101*A + 47*B + 49*C - 4484. A função parece não depender de DD ou EE linearmente. Obviamente, poderíamos ir mais longe com o modelo e adicionar termos quadráticos e de mistura. Eventualmente, você terá um modelo perfeito que se ajusta aos dados e não possui valor preditivo. :)

Pete
fonte
@Pete Como você disse, você pode adicionar termos quadráticos, cúbicos, quárticos ... e mistos, mas isso seria apenas um absurdo. Existe um absurdo e um absurdo não-sensorial, o mais absurdo é o "absurdo estatístico".
precisa saber é o seguinte
2
@IrishStat geralmente não faz sentido adicionar termos de mistura e ordem superior; única má quando é feito sem restrição e sem levar em conta a teoria
Pete
2
@Pete. Corrigir! A ausência de uma teoria preexistente a torna tola.
IrishStat
@Pete: Qual R ^ 2 você obtém para o seu modelo?
knorv
@knorv: Não me lembro bem, mas era> 0,90. Quando plotados sobre a linha de regressão, os pontos pareciam ter um pouco de forma "S" / cúbica, então acho que a função "f" era uma criação matemática em que alguém digitava 100A + 50 (B + C) + ordem superior termos que envolvem D & E.
Pete
3

Em termos gerais, não há almoço grátis no aprendizado de máquina:

Em particular, se o algoritmo A supera o algoritmo B em algumas funções de custo, então, falando livremente, deve existir exatamente tantas outras funções em que B supera A

/ edit: também, um SVM radial com C = 4 e sigma = 0,206 produz facilmente um R2 de 0,99. A extração da equação real usada para derivar esse conjunto de dados é deixada como um exercício para a classe. O código está em 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
fonte
-2

Todos os modelos estão errados, mas alguns são úteis: 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)

onde ZZ (T) = 0 FOR T = 1,10 = 1 DE OUTRA FORMA

Parece haver uma "relação defasada" entre Y e AA E uma mudança explicada na média das observações 11-25.

Resultados curiosos se não forem dados cronológicos ou espaciais.

IrishStat
fonte
@IrishStats O que é "GEP Box"?
knorv
IrishStat: Os dados não são cronológicos. Portanto, a ordem das observações não é importante. A mudança na média das observações 11-25 é apenas um efeito colateral de como recuperei o conjunto de dados.
knorv
1
@IrishStat: eu quis dizer que apenas recuperei os registros em uma certa ordem (pense ORDER BY). As linhas não têm ordem especial inerente. Assim, você pode reorganizá-los com segurança, sem perder nenhuma informação. Desculpe se eu confuso você :-)
knorv
1
IrishStat: o conjunto de dados não está ordenado. O AA(T-1)termo em sua equação não faz sentido neste contexto.
precisa saber é o seguinte
2
AA(T-1)R2
-3

r quadrado de 97,2

Verificação de estimativa / diagnóstico para variável AA Y
X1 AAS
X2 BB
X3 BBS
X4 CC

Número de resíduos (R) = n 25
Número de graus de liberdade = nm 20
Média residual = soma R / n -.141873E-05
Soma dos quadrados = soma R 2 .775723E + 07
Variação = SOS / (n) 310289.
Ajustado Variação = SOS / (nm) 387861.
Desvio padrão RMSE = SQRT (Adj Var) 622,785
Erro padrão da média = Des padrão / (nm) 139,259
Média / seu erro padrão = Média / SEM-101877E-07
Desvio absoluto médio = Soma (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) = veja Wei p153 340.388
R Square = .972211
Estatística de Durbin-Watson = [- A (T -1)] ** 2 / A
2 1,76580

**
MODELO DE COAG LAG DO COMPONENTE MODELO PADRÃO
(BOP) VALOR DO VALOR DO ERRO

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

SÉRIE DE ENTRADA X1 AAS AA QUADRADA

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

SÉRIE DE ENTRADA X2 BB BB COMO FORNECIDA

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

SÉRIE DE ENTRADA X3 BBS BB SQUARED

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

SÉRIE DE ENTRADA X4 CC CC DADA

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

 PLOT residual

IrishStat
fonte