¿Debo agregar una nueva característica de diferencia (z = x1-x2) en el modelo?
Recientemente, estoy pensando en esta pregunta: ¿debería agregar nuevas funciones basadas en las diferencias de las funciones sin procesar?
Ajuste
Supongamos que tengo 50k de datos y 20 características y es una tarea de regresión. En la práctica de la ciencia de datos, generalmente agregamos nuevas características basadas en características sin procesar. Sin embargo, no sé cuándo deberíamos agregar una nueva característica z (z = x1 - x2) en nuestro modelo .
Mis A Través
Aquí está mi entendimiento: dado que la característica se va a volcar en los modelos, si una característica funciona bien depende tanto de la característica como del modelo.
Tomemos la regresión lineal como ejemplo:
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)
Salidas:
> summary(fit1)$adj.r.squared
[1] 0.7359967
> summary(fit2)$adj.r.squared
[1] 0.7359967
> add_noise(10000)
[1] 0.7359121
En la regresión lineal, si ponemos z = x1-x2 en nuestro modelo, obtendremos una matriz de diseño singular, lo que significa que R no usará z para ajustar los coeficientes. En otras palabras, la nueva función z no dará ningún impulso al rendimiento de nuestro modelo.
Si usamos z = x1- x2 + rnorm (n = 1, mean = 0, sd = 1) en nuestro modelo, disminuiremos el rendimiento de nuestro modelo ya que introducimos ruido adicional en nuestro modelo.
Sin embargo, si usamos modelos lgbm / xgboost / rf, dado que el modelo de árbol divide los nodos en función de la ganancia de información / relación de ganancia de información / impureza de gini, nuestra nueva función z = x1 - x2 puede ayudar con el rendimiento de nuestro modelo.
Resumen
Si debemos agregar nuestra nueva característica de diferencia (z = x1- x2) en nuestro modelo depende del modelo que usemos. ¡Estaré muy agradecido de ver otras ideas!
Respuestas
La característica definitoria de un modelo lineal es que es lineal. Esto significa que el resultado$y$se modela como una función lineal de las características silenciosas$x_1, x_2$.
$$ y = \beta_0 + \beta_1 x_1 + \beta_2 x_2+ \epsilon $$
Supongamos que agregamos una función silenciosa $x_3=x_1 - x_2$. Si miramos cómo se expresa este modelo, debería ser obvio que no es diferente de nuestro 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}$$ En otras palabras, el coeficiente de $x_3$ no se identifica en este modelo porque es exactamente una combinación lineal de $x_1$ y $x_2$.
Tu ejemplo usa ruido $x_3 = x_1 - x_2 + \eta$para evitar la no identificación. Sin embargo, esto equivale a agregar un coeficiente para el ruido$\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}$$
En otras palabras, el ruido $\eta$es una tercera característica proporcionada al modelo. Se supone que el ruido no está relacionado con$y$, entonces sabemos que el verdadero efecto de $\eta$ en $y$es cero; incluso$\eta$ probablemente dañará las predicciones siempre que $\hat{\beta}_3 \neq 0$.
Conclusión : no agregue$x_1-x_2+\eta$ a un modelo de regresión lineal porque no tiene nueva información sobre $y$.
El modelo de conjunto de árboles (bosque aleatorio, xgboost) no es lineal: para cualquier división binaria, los nodos secundarios producen funciones constantes distintas. El efecto de muchas de estas divisiones binarias es dividir el espacio de características en varios rectángulos alineados con el eje, cada uno con una estimación diferente.
Arbitrariamente, muchas divisiones binarias alineadas con el eje pueden aproximarse a un límite complejo mediante el uso de formas más simples. El ejemplo clásico es considerar una tarea de clasificación binaria con un límite de decisión lineal perfecto en la línea$x_1 - x_2 > c$. Esto se manifiesta como una división diagonal . Claramente, una división alineada con un solo eje no puede aproximarse muy bien a una diagonal, pero con muchas divisiones alineadas con el eje, puede hacer una forma de "escalón" que puede aproximarse arbitrariamente bien a la diagonal . Del mismo modo, lo mismo es cierto para las relaciones de aproximación como logaritmos, cuadráticas, sinusoides, etc.
Por otro lado, agregar una característica $x_1 - x_2$ al conjunto de características podría mejorar el modelo porque una división binaria podrá recuperar exactamente $x_1 - x_2 > c$. Este tipo de ingeniería de funciones puede mejorar el modelo cuando sabe de antemano que esta función es útil. Por otro lado, el objetivo de utilizar modelos avanzados como bosques aleatorios o árboles potenciados es recuperar funciones útiles cuando no sabemos exactamente cómo se relacionan todas las características con el resultado.
Conclusión : agregar$x_1 - x_2$ puede mejorar el modelo si $x_1 - x_2 > c$ es importante para $y$.
Más información: ¿ Consecuencias de agregar columnas de entidades transformadas para bosques aleatorios y lazo?