새로운 차이 (z = x1-x2) 기능을 모델에 추가해야합니까?
최근에이 질문에 대해 생각하고 있습니다. 원시 기능의 차이를 기반으로 새로운 기능을 추가해야합니까?
환경
50k 데이터와 20 개의 기능이 있고 회귀 작업이라고 가정합니다. 데이터 과학 실습에서는 일반적으로 원시 기능을 기반으로 새로운 기능을 추가합니다. 그러나 새로운 기능 z (z = x1-x2)를 모델에 언제 추가해야하는지 모르겠습니다 .
내 생각
내 이해는 다음과 같습니다. 기능이 모델에 덤프되므로 기능이 제대로 작동하는지 여부는 기능과 모델에 따라 다릅니다.
선형 회귀를 예로 들어 보겠습니다.
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)
출력 :
> summary(fit1)$adj.r.squared [1] 0.7359967 > summary(fit2)$adj.r.squared
[1] 0.7359967
> add_noise(10000)
[1] 0.7359121
선형 회귀에서 z = x1-x2를 모델에 넣으면 특이 설계 행렬을 얻게됩니다. 이는 R이 계수를 맞추기 위해 z를 사용하지 않음을 의미합니다. 즉, 새로운 기능 z는 모델 성능을 향상시키지 않습니다.
z = x1- x2 + rnorm (n = 1, mean = 0, sd = 1)을 모델에 사용하면 모델에 추가 노이즈를 도입하기 때문에 모델 성능이 저하됩니다.
그러나 lgbm / xgboost / rf 모델을 사용하는 경우 트리 모델은 정보 이득 / 정보 이득 비율 / gini 불순물을 기반으로 노드를 분할하므로 새로운 기능 z = x1-x2가 모델 성능에 도움이 될 수 있습니다.
요약
새로운 차이 기능 (z = x1- x2)을 모델에 추가해야하는지 여부는 사용하는 모델에 따라 다릅니다. 다른 아이디어가 있으면 매우 감사하겠습니다!
답변
선형 모델의 특징은 선형이라는 것입니다. 이것은 결과가$y$무소음 특성 의 선형 함수로 모델링됩니다.$x_1, x_2$.
$$ y = \beta_0 + \beta_1 x_1 + \beta_2 x_2+ \epsilon $$
무소음 기능을 추가한다고 가정 해 보겠습니다. $x_3=x_1 - x_2$. 이 모델이 어떻게 표현되는지 살펴보면 이것이 원래 모델과 다르지 않다는 것이 분명합니다.$$\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}$$ 즉, 계수 $x_3$ 정확히 선형 조합이기 때문에이 모델에서는 식별되지 않습니다. $x_1$ 과 $x_2$.
귀하의 예는 소음을 사용합니다. $x_3 = x_1 - x_2 + \eta$비 식별을 피하기 위해. 그러나 이것은 소음에 대한 계수를 추가하는 것과 같습니다.$\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}$$
즉, 소음 $\eta$모델에 제공되는 세 번째 기능입니다. 소음과 관련이없는 것으로 간주됩니다.$y$, 그래서 우리는 진정한 효과가 $\eta$ 의 위에 $y$0입니다. 포함$\eta$ 예측을 해칠 가능성이 높습니다. $\hat{\beta}_3 \neq 0$.
결론 : 추가하지 마십시오$x_1-x_2+\eta$ 선형 회귀 모델에 대한 새로운 정보가 없기 때문에 $y$.
트리 앙상블 모델 (랜덤 포레스트, xgboost)은 비선형입니다. 이진 분할에 대해 딸 노드는 별개의 상수 함수를 생성합니다. 이러한 많은 이진 분할의 효과는 기능 공간을 각각 다른 추정값을 가진 여러 축 정렬 직사각형으로 나누는 것입니다.
임의의 많은 이진, 축 정렬 분할은 더 단순한 모양을 사용하여 복잡한 경계를 근사화 할 수 있습니다. 고전적인 예는 선에 완벽한 선형 결정 경계가있는 이진 분류 작업을 고려하는 것입니다.$x_1 - x_2 > c$. 이것은 대각선 분할 로 나타납니다 . 분명히 단일 축 정렬 분할은 대각선에 근접 할 수는 없지만 많은 축 정렬 분할은 임의 의 대각선에 근접 할 수있는 "계단 형"모양을 만들 수 있습니다 . 마찬가지로, 대수, 2 차, 정현파 등과 같은 근사 관계도 마찬가지입니다.
반면에 기능 추가 $x_1 - x_2$ 이진 분할이 정확히 복구 할 수 있기 때문에 기능 세트에 $x_1 - x_2 > c$. 이러한 종류의 기능 엔지니어링은 이 기능이 유용하다는 것을 미리 알고있을 때 모델을 개선 할 수 있습니다 . 반면에 랜덤 포레스트 또는 부스트 트리와 같은 고급 모델을 사용하는 요점은 모든 기능이 결과와 어떻게 관련되어 있는지 정확히 알지 못할 때 유용한 기능을 복구하는 것입니다.
결론 : 추가$x_1 - x_2$ 다음의 경우 모델을 개선 할 수 있습니다. $x_1 - x_2 > c$ 중요하다 $y$.
추가 정보 : 임의 포리스트 및 올가미에 대해 변형 된 특성 열을 추가 한 결과?