party를 활용한 모델 기반의 재귀 분할 방법

예를 들어 특정 데이터에 회귀모델을 적합한다고 하자….

직관적으로 scatter plot을 그리면서 회귀모델 피팅을 하게 된다.

아래 처럼..

 

image

 

그러나 알다시피 오차의 분산이 일정하지 않은 잘못된 모델이 도출된다. (이 경우 가중 회귀를 쓰거나 변수 변환을 통해 모델을 튜닝해 나가는 과정이 필요하다고 학교에서 배우긴 했다.)

눈으로 보면 나쁘지 않아 보이나, 어떤 그룹 변수의 영향으로 인해 위 모델의 안정성이 깨질 수 있다면 상황은 달라진다. 이런 문제는 일반적인 데이터 분석 상황에서 나올 수 있는 문제들이다. 예를 들어 검색 랭킹을 한다고 하면, 하나의 모델을 모든 랭킹에 적용하기엔 입력 쿼리의 다양성 측면에서 보면 무리가 있을 수 있다.  이럴때 쿼리 그룹에 따른 회귀모델을 적합할 필요가 있다.

이에 따른 고전적인 방법들은 명시적으로 그룹을 기반으로 데이터를 눈과 손으로 분류해 각기 다른 회귀모형을 적합시키는 것이고, 좀더 발전적인 방법으로는 그룹변수를 interaction term으로 추가해서 분석하는 것인데, 사실 interaction term 후보가 많은 경우 분석이 지리해진다.

 

정답을 안다면 아래와 같이 개별적으로 피팅이 가능할 것이나….그 중간 과정은 좀 있을 것이다.

 

image

 

 

이를 위해 party에 속한 mob()함수를 사용한다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
library(party)
library(ggplot2)
 
set.seed(23231)
 
y1 <- rnorm(2000, 0,1)
y2 <-sample(0:3,2000,replace=T)
y3 <- ifelse(y2 == 1, 1,0)
y4 <- ifelse(y2 == 2, 1,0)
 
 
 
x <- 1:2000
 
 
y <- y1*6 + y4*-0.5 - y3*2 - y3*x + y4*x  + rnorm(1:2000, 1000, 700)
 
testdf <- data.frame(x,y,y2=factor(y2))
 
ggplot(testdf, aes(x,y)) + geom_point() + geom_smooth(method="lm",formula=y~x)
ggplot(testdf, aes(x,y)) + geom_point() + geom_smooth(aes(group=y2),method="lm",formula=y~x)
 
 
lmmdl <- glm(y ~ x*y2)
lmmdl2 <- glm(y~x)
 
anova(lmmdl2, lmmdl, test="Chisq")
 
 
mod1 <- mob(y ~ x | y2)
 
plot(mod1)

 

anova결과를 보면 interaction 효과를 넣어준 것과 아닌 것이 큰 차이를 보인다는 것을 알 수 있다.

뭐 이런 식으로 검정해서 찾아가는 것도 좋지만, 이런 교호작용이 예상되는 변수들이 다양하고 이들간에도 교호작용이 있을 수 있다고 예상한다면 mob함수를 사용하는게 훨씬 간단하다.

 

간단히 플로팅 해본 결과지만 확실히 다른 결과를 보여줌을 알 수 있다.

 

 

image

 

각 말단 노드마다 최적의 회귀모형이 생성된 것을 알 수 있다.

이렇게 만들 수 있는 원리는 그룹변수에 따른 모델의 안정성을 지속적으로 판단해 이 안정성을 위배 하지 않는 방향으로 노드를 계속 분리해 나가는 mob 알고리즘에 있다.

이렇게 만들어진 모델은 predict 함수도 사용할 수 있어 예측 모델로도 직접 활용 가능하다.

 

만일 그룹변수조차 알 수 없다면 어떨것인가? 이럴땐 EM알고리즘에서처럼 모수를 추정하는 과정을 거치는 방법이 있다. 이에 대해서는 관련 R 패키지와 함께 추후에 공유하겠다.

 

ps. 개인적으로 이런 모델의 경우 경제학이나 사회학에서 가장 많이 쓰이지 않을까 생각해본다.

CC BY-NC 4.0 party를 활용한 모델 기반의 재귀 분할 방법 by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.