광고 세그먼트 정보 (카테고리 데이터)에 물류 회귀 분석 적용
시험에 의사 데이터로 한번에 분석을 해본다.
성별과 연령층이 설명 변수, 클릭했는지 여부가 목적 변수의 데이터를 준비했다. 디스플레이 광고를 가정합니다.
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점이다
범주형 데이터를 시각화하는 패키지
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점이다
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점이다
# 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
로지스틱 회귀
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배가 된다.
분석
보다 비즈니스에 가까운 형태로 설명한다.
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
클릭 확률이
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배가 된다.
분석
보다 비즈니스에 가까운 형태로 설명한다.
이상으로부터 30대 남성에게 광고를 많이 게재하면 클릭률 향상을 전망할 수 있다.
정수의 균일한 난수를 얻는다. ↩
Reference
이 문제에 관하여(광고 세그먼트 정보 (카테고리 데이터)에 물류 회귀 분석 적용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tamanobi/items/32c67ed0ad1f73040ef7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)