Devo adicionar um novo recurso de diferença (z = x1-x2) ao modelo?

Aug 17 2020

Recentemente, estou pensando sobre esta questão: devo adicionar novos recursos com base nas diferenças de recursos brutos?

Configuração

Suponha que eu tenha 50 mil dados e 20 recursos e seja uma tarefa de regressão. Na prática da ciência de dados, geralmente adicionamos novos recursos com base em recursos brutos. No entanto, não sei quando devemos adicionar um novo recurso z (z = x1 - x2) em nosso modelo .

Meus pensamentos

Aqui está o meu entendimento: uma vez que o recurso será despejado nos modelos, se um recurso funciona bem depende do recurso e do modelo.

Vamos tomar a regressão linear como exemplo:

head(mtcars)
fit1 = lm(mpg~ cyl+disp +hp +vs, data = mtcars)
summary(fit1)$adj.r.squared

data_add = cbind(mtcars,'c1' = mtcars$disp - mtcars$hp)
fit2 = lm(mpg~ cyl+disp + hp +vs + c1, data = data_add)
summary(fit2)$adj.r.squared
summary(fit2)

add_noise <- function(n){
  res = NULL
  for(i in 1:n){
    data_add_noise = cbind(mtcars,'c1' = mtcars$disp - mtcars$hp + rnorm(nrow(mtcars),0,1))
    fit3 = lm(mpg~ cyl+disp + hp +vs + c1, data = data_add_noise)
    res = c(res,summary(fit3)$adj.r.squared)
  }  
  return(mean(res))
}
add_noise(10000)

Saídas:

> summary(fit1)$adj.r.squared
[1] 0.7359967
> summary(fit2)$adj.r.squared
[1] 0.7359967
> add_noise(10000)
[1] 0.7359121

Na regressão linear, se colocarmos z = x1-x2 em nosso modelo, obteremos uma matriz de design singular, o que significa que R não usará z para ajustar os coeficientes. Em outras palavras, o novo recurso z não aumentará o desempenho do nosso modelo.

Se usarmos z = x1- x2 + rnorm (n = 1, média = 0, sd = 1) em nosso modelo, diminuiremos o desempenho de nosso modelo, pois introduzimos ruído adicional em nosso modelo.

No entanto, se usarmos modelos lgbm / xgboost / rf, uma vez que os nós de divisão do modelo de árvore com base no ganho de informação / taxa de ganho de informação / impureza gini, nosso novo recurso z = x1 - x2 pode ajudar no desempenho do nosso modelo.

Resumo

Se devemos adicionar nosso novo recurso de diferença (z = x1- x2) em nosso modelo depende do modelo que usamos. Ficarei muito grato em ver outras ideias!

Respostas

5 Sycorax Aug 17 2020 at 20:26

A característica definidora de um modelo linear é que ele é linear. Isso significa que o resultado$y$é modelado como uma função linear dos recursos silenciosos$x_1, x_2$.

$$ y = \beta_0 + \beta_1 x_1 + \beta_2 x_2+ \epsilon $$

Suponha que adicionemos um recurso silencioso $x_3=x_1 - x_2$. Se observarmos como esse modelo é expresso, ficará óbvio que ele não é diferente do nosso modelo original. $$\begin{align} y &= \beta_0 + \tilde{\beta}_1 x_1 + \tilde{\beta}_2 x_2 + {\beta}_3 (x_1 - x_2)+ \epsilon \\ y &= \beta_0 + (\tilde{\beta}_1 + {\beta}_3) x_1 + (\tilde{\beta}_2 - {\beta}_3) x_2+ \epsilon \\ y &= \beta_0 + \beta_1 x_1 + \beta_2 x_2+ \epsilon \\ \end{align}$$ Em outras palavras, o coeficiente de $x_3$ não é identificado neste modelo porque é exatamente uma combinação linear de $x_1$ e $x_2$.

Seu exemplo usa ruído $x_3 = x_1 - x_2 + \eta$para evitar a não identificação. No entanto, isso equivale a adicionar um coeficiente para o ruído$\eta$: $$\begin{align} y &= \beta_0 + \tilde{\beta}_1 x_1 + \tilde{\beta}_2 x_2 + {\beta}_3 (x_1 - x_2 + \eta) + \epsilon\\ y &= \beta_0 + (\tilde{\beta}_1 + {\beta}_3) x_1 + (\tilde{\beta}_2 - {\beta}_3) x_2 + {\beta}_3\eta + \epsilon \\ y &= \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \beta_3 \eta + \epsilon \\ \end{align}$$

Em outras palavras, o barulho $\eta$é um terceiro recurso fornecido ao modelo. O ruído é considerado não relacionado com$y$, então sabemos que o verdadeiro efeito de $\eta$ em $y$é zero; Incluindo$\eta$ provavelmente prejudicará as previsões sempre que $\hat{\beta}_3 \neq 0$.

Conclusão : não adicione$x_1-x_2+\eta$ a um modelo de regressão linear porque não tem novas informações sobre $y$.


O modelo de conjunto de árvore (floresta aleatória, xgboost) é não linear: para qualquer divisão binária, os nós filhos produzem funções constantes distintas. O efeito de muitas dessas divisões binárias é dividir o espaço de recursos em vários retângulos alinhados ao eixo, cada um com uma estimativa diferente.

Arbitrariamente, muitas divisões binárias alinhadas ao eixo podem aproximar um limite complexo usando formas mais simples. O exemplo clássico é considerar uma tarefa de classificação binária com um limite de decisão linear perfeito na linha$x_1 - x_2 > c$. Isso se manifesta como uma divisão diagonal . Claramente, uma divisão alinhada com um único eixo não pode se aproximar muito bem de uma diagonal, mas muitas divisões alinhadas com eixo, você pode fazer uma forma de "degrau" que pode se aproximar da diagonal arbitrariamente bem . Da mesma forma, o mesmo é verdadeiro para aproximar relações como logaritmos, quadráticas, sinusóides, etc.

Por outro lado, adicionar um recurso $x_1 - x_2$ ao conjunto de recursos pode melhorar o modelo porque uma divisão binária será capaz de recuperar exatamente $x_1 - x_2 > c$. Esse tipo de engenharia de recursos pode melhorar o modelo quando você sabe com antecedência que esse recurso é útil. Por outro lado, o objetivo de usar modelos avançados como floresta aleatória ou árvores aumentadas é recuperar funções úteis quando não sabemos exatamente como todos os recursos estão relacionados ao resultado.

Conclusão : adicionar$x_1 - x_2$ pode melhorar o modelo se $x_1 - x_2 > c$ é importante para $y$.

Mais informações: Consequências da adição de colunas de recursos transformados para florestas aleatórias e laço?