유통에서의 r의활용 - nexrnexr.co.kr/upload/begas_r.pdf · 기초특성분석...

24
Best Expert Group for Analytics 2012. 10. 24 유통에서의 R의 활용 김준기 The leading expert in R [email protected]

Upload: others

Post on 06-Oct-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 유통에서의 R의활용 - NexRnexr.co.kr/upload/begas_r.pdf · 기초특성분석 연관성분석포함 ... SQL을사용하여데이터처리를수 기초특성분석 • ggplot2

Best Expert Group for Analytics

2012. 10. 24

유통에서의 R의 활용

김 준 기

The leading expert in R

[email protected]

Page 2: 유통에서의 R의활용 - NexRnexr.co.kr/upload/begas_r.pdf · 기초특성분석 연관성분석포함 ... SQL을사용하여데이터처리를수 기초특성분석 • ggplot2

1

활용 사례 소개에 앞서서…

발표를 위하여 분석에 사용된 자료는 실제 분석에 사용된

자료를 가공한 자료입니다.

- 데이터베이스 -> csv 파일

- 매출 기갂, 매출 건수 가공

- 세부 변수 삭제

Page 3: 유통에서의 R의활용 - NexRnexr.co.kr/upload/begas_r.pdf · 기초특성분석 연관성분석포함 ... SQL을사용하여데이터처리를수 기초특성분석 • ggplot2

2

데이터 구조

변수명 설명

회원번호 개인 고유 식별 번호

성별 남자 or 여자

연령대 회원의 생년월일을 기준으로 연령대 구분

발급일자 회원 가입일자

매출일자 상품 구매 일자

매출요일 상품 구매 요일

평일공휴일구분 평일 혹은 공휴일 구분 (공휴일은 토요일, 일요일, 휴일)

대분류명 상품의 대분류 구분

중분류명 상품의 중분류 구분

소분류명 상품의 소분류 구분

세분류명 상품의 세분류 구분

수량 상품 구매 개수

매출금액 상품 구매 금액

Page 4: 유통에서의 R의활용 - NexRnexr.co.kr/upload/begas_r.pdf · 기초특성분석 연관성분석포함 ... SQL을사용하여데이터처리를수 기초특성분석 • ggplot2

3

데이터 분석 프로세스

XX 매장5 ~ 9월 거래 데이터

데이터 불러들이기

거래 데이터를데이터베이스에서

불러들임

연령대, 월, 요일,

시갂대 변수 생성

데이터 가공 : 변수 생성

일별 거래 건수 및 거래금액 Aggregation

요약정보 생성

결과 생성 및 저장하기

분석 결과를 그래프 및텍스트 형태로

생성하고 저장함

구매 행태에 대한 특성분석

구매 특성 분석

성별/연령대별구매 특성 분석

기초 특성 분석

연관성 분석 포함

Page 5: 유통에서의 R의활용 - NexRnexr.co.kr/upload/begas_r.pdf · 기초특성분석 연관성분석포함 ... SQL을사용하여데이터처리를수 기초특성분석 • ggplot2

4

분석에 활용된 R 기법

데이터 입출력 및 가공 처리

• RODBC : 데이터베이스 인터페이스

• sqldf : SQL을 사용하여 데이터 처리를 수행

기초 특성 분석

• ggplot2 : 보다 화려하고 유연하고 동적인 그래프 생성

• wordcloud : 구매 상품에 대한 빈도를 시각적으로 표현

구매 특성 분석

• arules : 연관성 분석을 수행

• arulesViz : 연관성 분석 결과를 시각적으로 표현

Page 6: 유통에서의 R의활용 - NexRnexr.co.kr/upload/begas_r.pdf · 기초특성분석 연관성분석포함 ... SQL을사용하여데이터처리를수 기초특성분석 • ggplot2

5

분석 시나리오

분석 방향

시나리오 1 기초 특성 분석

시나리오 명

•상세 분석을 위한 데이터 파악

•구매 현황 리포트 작성

시나리오 2그룹별

구매 패턴 분석•젂체, 성별/연령대별 상품 구매 패턴 파악

시나리오 3개인별

구매 패턴 분석•개인별 상품 구매 패턴 파악

시나리오 4 연관성 분석 •주로 구매하는 상품으로 장바구니를 구성함

Page 7: 유통에서의 R의활용 - NexRnexr.co.kr/upload/begas_r.pdf · 기초특성분석 연관성분석포함 ... SQL을사용하여데이터처리를수 기초특성분석 • ggplot2

6

기초특성 분석 결과

성별 구매 건수 연령대 구매 건수

library(ggplot)qplot(매출월, data = import.df, geom = "bar", fill = 성별, xlab = "매출월", ylab = "구매건수")qplot(매출월, data = import.df, geom = "bar", fill = 연령대, xlab = "매출월", ylab = "구매건수")

Page 8: 유통에서의 R의활용 - NexRnexr.co.kr/upload/begas_r.pdf · 기초특성분석 연관성분석포함 ... SQL을사용하여데이터처리를수 기초특성분석 • ggplot2

7

기초특성 분석 결과

성별 구매 건수 연령대 구매 건수

ggplot(import.df, aes(매출월)) + geom_bar() + facet_wrap(~ 성별) ggplot(import.df, aes(매출월)) + geom_bar() + facet_wrap(~ 연령대)

Page 9: 유통에서의 R의활용 - NexRnexr.co.kr/upload/begas_r.pdf · 기초특성분석 연관성분석포함 ... SQL을사용하여데이터처리를수 기초특성분석 • ggplot2

8

기초특성 분석 결과

성별/연령대 구매 건수 연령대/성별 구매 건수

ggplot(import.df, aes(매출월)) + geom_bar() + facet_wrap(~ 성별 + 연령대) ggplot(import.df, aes(매출월)) + geom_bar() + facet_wrap(~ 연령대 + 성별)

Page 10: 유통에서의 R의활용 - NexRnexr.co.kr/upload/begas_r.pdf · 기초특성분석 연관성분석포함 ... SQL을사용하여데이터처리를수 기초특성분석 • ggplot2

9

기초특성 분석 결과

월별 고객단위 구매금액 500,000원 미만으로 Filter

aggdata <- aggregate(매출금액 ~ 회원번호 + 매출월, data = import.df, sum)p <- ggplot(aggdata, aes(매출월, 매출금액)); p + geom_boxplot(aes(fill = 매출월))p <- ggplot(subset(aggdata, 매출금액 < 500000), aes(매출월, 매출금액)); p + geom_boxplot(aes(fill = 매출월))

Page 11: 유통에서의 R의활용 - NexRnexr.co.kr/upload/begas_r.pdf · 기초특성분석 연관성분석포함 ... SQL을사용하여데이터처리를수 기초특성분석 • ggplot2

10

기초특성 분석 결과

요일별 구매금액 합계

import.df$매출금액 <- import.df$매출금액 / 1000000aggdata.summary <- aggregate(매출금액 ~ 매출요일, data = import.df, sum)ggplot(data = aggdata.summary, aes(x = 매출요일, y = 매출금액)) + geom_bar() + ylab("구매금액 합계(단위 백만원)")

요일별 구매상품수

Page 12: 유통에서의 R의활용 - NexRnexr.co.kr/upload/begas_r.pdf · 기초특성분석 연관성분석포함 ... SQL을사용하여데이터처리를수 기초특성분석 • ggplot2

11

그룹별 구매 패턴 분석 결과

젂체 고객의 구매횟수 상위 450개의 세분류 상품에 대하여

wordcloud로 표현

library(wordcloud)

#구매횟수 상위 450개의 세분류 상품 추출item.x <- sort(table(import.df$세분류명), decreasing = TRUE)

item.df <- import.df[import.df$세분류명 %in%

names(item.x[1:450]), ]

# woldcloud 수행item.table <- table(item.df$세분류명)

# 세분류 명 지정word.name <- names(item.table)

# 빈도수 지정item.table <- as.matrix(item.table)

freqs <- rowSums(item.table)

# 색 지정col <- brewer.pal(8, "Dark2")

# wordcloud 함수 실행wordcloud(words = word.name, freq = freqs, min.freq = 1,

scale = c(5, 0.2), col = col , random.order = FALSE)

Page 13: 유통에서의 R의활용 - NexRnexr.co.kr/upload/begas_r.pdf · 기초특성분석 연관성분석포함 ... SQL을사용하여데이터처리를수 기초특성분석 • ggplot2

12

연관성 분석

연관성 분석이란 연관규칙(Association Rule)을 발견하는 과정

연관규칙

- 상품을 구매하는 등의 일렦의 거래에 대한 연관성에 대한 규칙

손님이 구매하는 장바구니에 들어있는 품목간의 관계를 알아본다는

의미에서 장바구니 분석(Market Basket Analysis)이라고도 함

Page 14: 유통에서의 R의활용 - NexRnexr.co.kr/upload/begas_r.pdf · 기초특성분석 연관성분석포함 ... SQL을사용하여데이터처리를수 기초특성분석 • ggplot2

13

연관성 분석

연관성 분석을 하는 하는 목적은

- 특정한 상품을 구입한 고객이 어떤 그룹에 속하는지

- 그들이 왜 그런 구매를 했는지 알기 위해서 구매한 상품에 대한

자료를 분석하는 것

연관성 분석을 통하여

- 효율적인 매장 짂열, 패키지 상품의 개발, 교차판매젂략 구사, 기획

상품의 결정 등에 홗용할 수 있음

Page 15: 유통에서의 R의활용 - NexRnexr.co.kr/upload/begas_r.pdf · 기초특성분석 연관성분석포함 ... SQL을사용하여데이터처리를수 기초특성분석 • ggplot2

14

연관성 규칙

유용한 규칙

- 예) 목요일 식료품 가게를 찾는 고객은 아기 기저귀와 맥주를 함께

구입하는 경향이 있다

자명한 규칙

- 예) 한 회사의 젂자 제품을 구매하던 고객은 젂자 제품을 살 때 같은

회사의 제품을 사는 경향이 있다

설명이 불가능한 규칙

- 예) 새로 연 건축 자재점에서는 변기 덮개가 많이 팔린다

연관성 분석의 목적은 유용한 규칙을 찾고

유용한 규칙에 대한 확률을 계량화하여 나타내는 데 목적이 있음

☞ 박창이 외 (2011) R을 이용한 데이터마이닝, 교우사. 참조

Page 16: 유통에서의 R의활용 - NexRnexr.co.kr/upload/begas_r.pdf · 기초특성분석 연관성분석포함 ... SQL을사용하여데이터처리를수 기초특성분석 • ggplot2

15

연관성 분석의 측도지지도 (Support)

- 두 품목 A와 B의 지지도는 젂체 거래항목 중

항목A와 항목B가 동시에 포함되는 거래의 비율

- P(A ∩ B) = A와 B가 동시에 포함된 거래수 / 젂체 거래수

신뢰도 (Confidence)

- P(A ∩ B) / P(A) = 품목 A와 B를 동시에 포함하는 거래 수 / 품목 A를 포함하는 거래 수

향상도 (Lift)

- 향상도는 품목 A가 주어지지 않았을 때의 품목 B의 확률 대비

품목 A가 주어졌을 때의 품목 B의 확률의 증가 비율임

- P(A ∩ B) / (P(A) P(B)) = P(B | A) / P(B) = 싞뢰도 / P(B)

* 품목 A와 품목 B의 구매가 상호 관렦이 없는 경우 향상도는 1임, 향상도가 1보다 크면 우연적 기회보다 우수하다는 뜻임

☞ 박창이 외 (2011) R을 이용한 데이터마이닝, 교우사. 참조

Page 17: 유통에서의 R의활용 - NexRnexr.co.kr/upload/begas_r.pdf · 기초특성분석 연관성분석포함 ... SQL을사용하여데이터처리를수 기초특성분석 • ggplot2

16

연관성 분석을 위한 R Script

# '주류,기호' 대분류 Filter 및 ID생성 : 실 분석에서는 매출일 기준으로 ID를 생성함

anal.df <- subset(import.df, 대분류명 == "주류,기호")

anal.df$ID <- paste(anal.df$회원번호, anal.df$매출월, anal.df$매출요일, sep = "_")

# 분석을 위한 변수 선택

anal.df <- anal.df[, c("ID", "세분류명")]

# 연관성 분석을 위하여 List 형식으로 변홖

library(data.table)

uni.id <- unique(anal.df$ID)

list.x <- data.table(anal.df)

list.x <- list.x[, unique(세분류명), by = ID]

list.x <- data.frame(list.x[, lapply(.SD,list), by = ID])

list.x <- list.x[, 2]

names(list.x) <- paste("Tr", c(1:length(uni.id)), sep = "")

Arule.list <- as(list.x, "transactions“)

탐색해야 할 규칙의 수는 고려되는 품목의 수에 따라지수적으로 증가하므로 적젃한 품목의 선택이 매우 중요함

Page 18: 유통에서의 R의활용 - NexRnexr.co.kr/upload/begas_r.pdf · 기초특성분석 연관성분석포함 ... SQL을사용하여데이터처리를수 기초특성분석 • ggplot2

17

연관성 분석을 위한 R Script# 연관성 분석 수행 : support 값과 confidence 값을 parameter로 조젃하면서 분석을 수행

Arule.result <- apriori(Arule.list, parameter = list(supp = 0.02))

# 하나의 세분류에 대한 Rule을 선택할 때 : subset(Arule.result, subset = rhs %in% "일반생수")

# 연관성 분석을 시각화 함

plot(Arule.result)

plot(Arule.result, method="grouped")

plot(Arule.result, method="graph", interactive=TRUE, control=list(type = "items"))

# 연관성 분석 결과를 저장

write.csv(as(Arule.result, "data.frame"), "result.csv", row.names = FALSE)

Page 19: 유통에서의 R의활용 - NexRnexr.co.kr/upload/begas_r.pdf · 기초특성분석 연관성분석포함 ... SQL을사용하여데이터처리를수 기초특성분석 • ggplot2

18

대분류별 1회 구매 특성

주류,기호 Size : SupportColor : Lift

캔콜라 2

캔사이다 1

탄산과즙 1

일반커피믹스 5

일반생수 6

병소주 13

Page 20: 유통에서의 R의활용 - NexRnexr.co.kr/upload/begas_r.pdf · 기초특성분석 연관성분석포함 ... SQL을사용하여데이터처리를수 기초특성분석 • ggplot2

19

대분류별 1회 구매 특성

주류,기호

Page 21: 유통에서의 R의활용 - NexRnexr.co.kr/upload/begas_r.pdf · 기초특성분석 연관성분석포함 ... SQL을사용하여데이터처리를수 기초특성분석 • ggplot2

20

세분류별 장바구니 패턴

병소주 일반생수

Page 22: 유통에서의 R의활용 - NexRnexr.co.kr/upload/begas_r.pdf · 기초특성분석 연관성분석포함 ... SQL을사용하여데이터처리를수 기초특성분석 • ggplot2

21

시스템 구성

분석 서버

RODBC

sqldfR Package

DW

고객 데이터

거래 데이터

R Batch 작업결과

...

데이터 Import(RODBC package)

R 분석결과 Export

고객특성 분석 R 구현

BI Tool

• 기초 특성 분석 결과 조회

(Chart, Report 등)

• 구매 특성 분석 결과 조회

•연관성 분석 결과 조회

사용자

결과조회

단위

기능을

모듈화

데이터 입출력

데이터 가공 처리

탐색적 자료분석

고객 특성 분석 모듈

리포팅 모듈

R 분석은 Batch / On-Line 작업으로 수행됨

Page 23: 유통에서의 R의활용 - NexRnexr.co.kr/upload/begas_r.pdf · 기초특성분석 연관성분석포함 ... SQL을사용하여데이터처리를수 기초특성분석 • ggplot2

22

R 프로그래밍 원칙

- 디버깅

- 임시 변수 로직 수행 후 삭제, 공통 변수 초기화

무결성

최적화 - 메모리 최적화

- 속도 최적화

자산화 - 함수화, Snippet

- 패키지 생성

• 결과물 자산화

• R의 특장점을 살려 성능 최적화를 달성함

• 계산 혹은 함수사용에 있어 발생하는 논리적, 사용자 실수를 제거함2

3

4

- Google R Style Guide

- Begas R Style Guide

표준화

• 오브젝트 명, 함수 명 등에 대하여 공통된 규칙을 사용하여 표준화함1

Page 24: 유통에서의 R의활용 - NexRnexr.co.kr/upload/begas_r.pdf · 기초특성분석 연관성분석포함 ... SQL을사용하여데이터처리를수 기초특성분석 • ggplot2

23

감사합니다

김준기

Tel : 010-7109-7291

email : [email protected]