광고 세그먼트 정보 (카테고리 데이터)에 물류 회귀 분석 적용

로지스틱 회귀분석을 조사하고 있는 경우, 설명변수가 연속이 아닌 경우(카테고리 데이터)에 대해 알고 싶어졌다.
시험에 의사 데이터로 한번에 분석을 해본다.

성별과 연령층이 설명 변수, 클릭했는지 여부가 목적 변수의 데이터를 준비했다. 디스플레이 광고를 가정합니다.
h tps://d ゔぇ. 오, ぇ. 코 m/후아/d/1y군 D_5ぃh4cH쿠 r3QFjs그럼 Jc7이후ㄹLz4/ぃぃ에w

전체 코드



필요한 라이브러리



범주형 데이터를 시각화하는 패키지vcd가 필요합니다.
install.packages('vcd')

데이터 생성 방법



정수의 균일 난수


floor(runif(n = 10, min = 0, max = 2))로 설정하면 0 또는 1의 수치를 10개 생성할 수 있다 1

데이터 편향 방법



성별이 남성(male)인 것, 연대가 30대(30s)인 어느 쪽인가, 클릭을 하기 쉽도록 조정했다.

구체적으로는, rbinom로 시행을 1회(size=1), 관측 회수를 1(n=1)을 지정해 확률만큼 변경했다. 예를 들어, male일 때 성공 확률을 0.7로 한다.

클릭할지 여부는 click_rate가 0.5를 초과하는지 여부로 0,1을 나눕니다.

코드


samplesize <- 1000
sex <- factor(floor(runif(n = samplesize, min = 0, max = 3)), labels = c("male", "female", "other"))
agegroup <- factor(floor(runif(n = samplesize, min = 0, max = 5)), labels = c("10s", "20s", "30s", "40s", "50s"))

a <- sapply(sex, function (x) {
  b <- 0
  if(x == 'male') b <- rbinom(n=1,size=1,prob = 0.7)
  else if (x == 'female') b <- rbinom(n=1,size=1,prob = 0.5)
  else b <- rbinom(n=1,size=1,prob = 0.1)
  return(b)
})

b <- sapply(agegroup, function (x) {
  c <- 0
  if (x == '30s') c <- rbinom(n=1,size=1,prob = 0.7)
  else c <- rbinom(n=1,size=1,prob = 0.5)
  return (c)
})

click_rate <- scale(x = (a+b), center=min(a+b), scale = (max(a+b) - min(a+b)))
click <- factor(ifelse(click_rate > 0.5, 1, 0), labels = c("n", "y"))
ad_click <- data.frame(click=click, sex=sex, agegroup)

설명 통계량



생성된 ad_click에 대해 어떻게 되어 있는지 관찰한다. click는 크게 편향되어 있지만, sex나 agegroup에는 균일하게 분포하고 있는 것 같다.



집계표를 이용한 범주형 데이터 분포



집계표를 만들고 어디에 편향이 있는지 확인한다.
# visualization
crosstab <- xtabs(~ click + agegroup + sex, data=ad_click)
pairs(crosstab, lower_panel = pairs_assoc, shade=TRUE) # https://www.slideshare.net/KumarP34/using-r-for-customer-segmentation



왼쪽 하단 삼각 성분은 각 변수 간의 연관 그래프입니다. lower_panel = pairs_assoc를 지정하면 왼쪽 아래 삼각형 성분을 연관 그래프 (assoc에서 생성 된 그래프)로 변경할 수 있습니다.



어소시에이션 그래프



click 및 sex 정보 assoc를 사용하여 그래프를 그렸습니다. 위 그림의 3행 1열의 그래프에 상당.



R에 의한 범주형 데이터 시각화에 따르면 그래프는 다음을 보여줍니다.

직사각형의 높이는 잔차, 폭은 기대 도수의 제곱근, 면적은 관측 도수와 기대 도수의 차에 비례한다. 각각의 직사각형은 0을 기준선으로 하고, 잔차가 양수인 경우에는 기준선 위로, 그 반대의 경우에는 기준선 아래에 배치한다.

공식 문서도 보는 것이 좋을 것 같습니다 (assoc function).

이 어소시에이션 그래프로부터 알 수 있는 것은, 이하의 2점이다
  • click 한 male의 수가 기대치보다 큰 것
  • click하지 않은 other의 수가 기대치보다 작은 것

  • 로지스틱 회귀



    R에서는 다음 명령을 사용합니다.
    ad_click.glm <- glm(formula = click ~ sex + agegroup, data = ad_click, family="binomial")
    summary(ad_click.glm)
    
    Call:
    glm(formula = click ~ sex + agegroup, family = "binomial", data = ad_click)
    
    Deviance Residuals: 
        Min       1Q   Median       3Q      Max  
    -1.1280  -0.8558  -0.4470  -0.3402   2.3993  
    
    Coefficients:
                Estimate Std. Error z value Pr(>|z|)    
    (Intercept) -1.36684    0.21408  -6.385 1.72e-10 ***
    sexmale      0.69872    0.17350   4.027 5.65e-05 ***
    sexother    -1.43706    0.24924  -5.766 8.13e-09 ***
    agegroup20s  0.19564    0.25298   0.773   0.4393    
    agegroup30s  0.55084    0.24969   2.206   0.0274 *  
    agegroup40s -0.01657    0.26547  -0.062   0.9502    
    agegroup50s  0.31678    0.26197   1.209   0.2266    
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    
    (Dispersion parameter for binomial family taken to be 1)
    
        Null deviance: 1085.75  on 999  degrees of freedom
    Residual deviance:  974.58  on 993  degrees of freedom
    AIC: 988.58
    
    Number of Fisher Scoring iterations: 5
    

    sexmale 항, sexother 항, agegroup30s 항이 상당히 강한 영향을 미친다는 것이 Pr(>|z|) 열에서 볼 수 있습니다.

    Coefficients의 열은 추정 된 계수입니다. 이 계수를 exp 함수에 곱하면 확률비가 구해진다.

    확률 비율



    클릭 확률이 p이면 클릭하지 않을 확률 1 - p의 비율을 확률 비율이라고합니다.

    각각의 설명 변수의 확률비는 물류 회귀에 의해 추정된 계수로부터 유도된다.
    exp(ad_click.glm$coefficients)
    
    (Intercept)     sexmale    sexother agegroup20s agegroup30s agegroup40s agegroup50s 
      0.2549121   2.0111755   0.2376243   1.2160923   1.7347097   0.9835625   1.3726984 
    

    얻어진 수치는 각 변수가 1 증가했을 때의 확률비이다. 즉, sexmale이 True가 되면 확률비가 2배가 된다.

    분석



    보다 비즈니스에 가까운 형태로 설명한다.
  • 남성 (male)은 다른 성별보다 클릭률이 2.01 배가된다
  • 남녀 이외 (other)는 다른 성별보다 클릭률이 0.23 배가된다
  • 30대(30s)는 다른 연대보다 클릭률이 1.73배가 된다

  • 이상으로부터 30대 남성에게 광고를 많이 게재하면 클릭률 향상을 전망할 수 있다.



    정수의 균일한 난수를 얻는다. 

    좋은 웹페이지 즐겨찾기