Presentation is loading. Please wait.

Presentation is loading. Please wait.

롯데마트 CRM 데이터 분석 교육 2014년 12월 > RE::VISION 전용준 리비젼컨설팅 대표

Similar presentations


Presentation on theme: "롯데마트 CRM 데이터 분석 교육 2014년 12월 > RE::VISION 전용준 리비젼컨설팅 대표"— Presentation transcript:

1 롯데마트 CRM 데이터 분석 교육 2014년 12월 > RE::VISION 전용준 리비젼컨설팅 대표
전용준 리비젼컨설팅 대표

2 교육과정 구성 1/2 1 2 분석CRM과 SAS 기초 SQL과 고객 데이터 분석 주제 세부 교육 내용
분석CRM 전반적인 구조 이해 [2H] - DB, DW, Data Mart, OLAP의 개념과 기본기능, 연결관계에 대한 이해 SAS 분석도구 소개 및 데이터 처리 기초 [3H] - SAS 소개 - 데이터 로딩 간단한 데이터 처리 (조회, Sort, 집계, 선택) 데이터 타입 변환 5H (이론 + 실습) 1 SQL과 고객 데이터 분석 SQL 개념 이해 및 활용 [3H] - SQL 기본 개념 이해 - Proc SQL 사용 연습 - Join을 활용한 집계 연습 - 간단한 프로파일 생성 그래프를 이용한 탐색적 분석 보고서 작성 유통업에서의 고객데이터 분석 유형이해 및 연습 [2H] – 유통 고객 데이터 분석 기본 패턴 이해 - 상품, 점포, 고객등급, 채널별 등 기본 패턴의 분석에 대한 SQL 활용 실습 5H (이론 + 실습) 2

3 DAY 1.1 1B :: SAS 분석도구 소개 및 데이터 처리 기초

4 SAS : Statistical Analysis System
대규모 데이터 통계 처리에 강점 데이터 집계, 가공, 연결, 예측, 시각화, 통계치 산출 등 다양한 기능제공 SAS 고유의 Script 언어를 사용 RDBMS와는 다른 고유한 데이터 저장 방식 사용 실제 데이터 분석에서 데이터 처리에는 ANSI SQL의 변형인 Proc SQL 주로 사용

5 SAS 활용한 데이터 처리 기초 데이터 로딩 간단한 데이터 처리 (조회, Sort, 집계, 선택) 데이터 타입 변환

6 SAS 활용의 첫단계 라이브러리 생성/지정 로컬의 텍스트 파일 데이터 불러오기 서버의 데이터 가져오기 데이터 내보내기
변수 정의 간단한 계산

7 데이터 테이블 생성시 Tip 변수명은 32자 이내 숫자로 시작 불가! 특수기호 사용 불가! (except “_”)
자료의 입력은 되도록 숫자변수로 주민등록번호나 전화번호 등은 문자변수로 입력 날짜변수는 mm dd yy로 나누어서 입력 한 셀에 입력했을 경우에는 SAS에서 구분 가능 문자변수는 되도록 자릿수를 맞춰서 입력

8 로컬의 텍스트 (ASCII) 파일 데이터 불러오기
메뉴에서 [ 파일 > 데이터 가져오기 > ] 실행시 위저드가 실행됨 파일형식(주로 CSV 또는 TDF )을 지정해주고, 파일 위치를 지정해서 선택 <141205_SAS교육샘플 데이터> 라는 이름의 텍스트 파일

9 스크립트로 데이터 불러오기 라이브러리명과 파일이름을 지정하고, 데이터 위치와 데이터파일 형식을 지정
주로 CSV 형식의 텍스트 파일을 불러오는 방식을 사용 (엑셀 버전이나 연동관련된 이슈가 없음) GETNAMES 명령을 지정해 데이터 파일로부터 필드명을 바로 가져다 사용 PROC IMPORT OUT= WORK.aaa02 DATAFILE= "C:\Users\revision\Desktop\rvc_kb\02_EnGageMent\01_13_롯데마트분석교육\a01_test.csv" REPLACE; GETNAMES=YES; RUN;

10 스크립트로 데이터 불러오기 1 라이브러리명과 파일이름을 지정하고, 데이터 위치와 데이터파일 형식을 지정
스크립트로 데이터 불러오기 1 라이브러리명과 파일이름을 지정하고, 데이터 위치와 데이터파일 형식을 지정 주로 CSV 형식의 텍스트 파일을 불러오는 방식을 사용 (엑셀 버전이나 연동관련된 이슈가 없음) GETNAMES 명령을 지정해 데이터 파일로부터 필드명을 바로 가져다 사용 PROC IMPORT OUT= LM_POS01.aaa02 DATAFILE= "C:\SASTEST_201412\a01_test.csv" REPLACE; GETNAMES=YES; RUN;

11 CARDS 명령문을 사용해 직접 입력 간단한 데이터의 경우 구조를 지정하고, CARDS 문을 사용하여 직접 입력 가능
DATA WORK.AAA03; INPUT SERIALNO AGE SEX $ EDUC MARRI; LABEL SEX='성별'; CARDS; F 2 2 7 55 F 2 2 M 2 2 F 2 2 F 2 5 F 2 2 M 2 2 F 2 5 F 2 2 79 80 M 2 2 ; RUN;

12 PRINT 문으로 데이터 확인 탐색기상의 아이콘을 클릭하여 테이블보기로 보거나,
생성된 데이터(테이블)의 내용을 확인 – 화면에 프린트/출력 PROC PRINT DATA=AAA03; RUN;

13 로컬PC로 내보내기 - CSV 파일 메뉴에서 [ 파일 > 데이터 내보내기 > ] 실행시 위저드가 실행됨

14 데이터 특성에 대한 기초적 확인 PROC FREQ 를 사용하여 필드별 값별 빈도수를 확인
PROC FREQ DATA=AAA03; TABLES age sex; RUN;

15 데이터 특성에 대한 기초적 확인 PROC FREQ 를 사용하여 필드별 값별 빈도수를 확인
PROC FREQ DATA=AAA03; TABLES age sex; RUN;

16 데이터 특성에 대한 기초적 확인 PROC FREQ 를 사용하여 실습용 실제 POS 데이터 필드별 빈도수를 확인
PROC FREQ DATA=LM_POS01.AAA02; TABLES str_cd pos_sys_dy ; RUN; Str_cd (점포코드), Pos_Sys_dy (포스기준 일자) 두 필드에 대한 값 분포를 확인 ~ (총5일간)로부터 추출된 데이터임을 확인 필드의 특성(값 분포)을 확인

17 라이브러리의 지정 라이브러리란?  SAS dataset이 저장되는 (논리적인) 장소 Dataset 이름 사용 형식
<library.dataset> library : 영문 8자 이내 dataset : 영문 32자 이내 대소문자 구분 없음, 특수문자 사용 불가(예외:_) 맨 첫 글자에 숫자 사용 불가 Library name 지정 LIBNAME 라이브러리 이름 '위치'; LIBNAME LM_POS01 'C:\SASTEST_201412';

18 샘플 데이터 셋의 구조 1000건의 거래 내역을 포함한 POS 이력 STR_CD 점포코드 SALE_DY 판매일자
POS_NO 포스번호 TRD_NO 거래번호 CUST_NO 고객번호 CANCEL_FG 취소여부 CUST_PNT 고객포인트 SALE_SALE_AMT 판매금액 SALE_PROFIT_AMT 이익금액 SALE_DC_AMT 할인금액 SALE_EMP_NO 판매직원번호

19 SQL SQL 데이터 처리의 표준언어 SQL : Standard Query Language
데이터의 조회, 정의, 제어의 세가지 기능을 포함 데이터 정의 언어 (DDL : Data Definition Language) 데이터 조작 언어 (DML : Data Manipulation Language) 데이터 제어 언어 (DCL : Data Control Language) PROC SQL; SELECT * FROM LM_POS01.AAA02 WHERE STR_CD=402 AND POS_NO=6 ; QUIT; CREATE TABLE LM_POS01.AAA021 AS SELECT STR_CD, SALE_DY FROM LM_POS01.AAA02 WHERE STR_CD=402 AND POS_NO<10 ; SQL 단순히 기존의 테이블로 부터 특정 조건에 맞는 행을 추출 일부 필드와 조건에 맞는 행만으로 새로운 테이블 생성

20 연습 :: 취소건만 가지고 오려면? SQL : Standard Query Language
데이터의 조회, 정의, 제어의 세가지 기능을 포함 데이터 정의 언어 (DDL : Data Definition Language) 데이터 조작 언어 (DML : Data Manipulation Language) 데이터 제어 언어 (DCL : Data Control Language) PROC SQL; CREATE TABLE LM_POS01.AAA022 AS SELECT STR_CD, SALE_DY, SALE_SALE_AMT FROM LM_POS01.AAA02 WHERE CANCEL_FG = 2 AND STR_CD=402 ; QUIT; CANCEL_FG 값중 취소건을 확인해서 조건을 지정

21 테이블의 생성 CREATE TABLE 문은 라이브러리와 테이블명을 지정해주면 해당 테이블을 생성하는 명령
주의 : 모든 필드를 선택하여 새로운 테이블을 반복해서 생성하게 되면 기하급수적으로 데이터 물리적 사이즈 증가 PROC SQL; CREATE TABLE LM_POS01.STRPOS AS SELECT STR_CD, POS_NO FROM LM_POS01.AAA02; QUIT;

22 SAS 언어와 SQL 혼합 지원 표준 SQL(ANSI SQL)에 SAS 고유의 언어를 혼용 가능
SAS keyword expressions (예: DROP, KEEP, RENAME, WHERE)를 SQL에서 사용 가능함 PROC SQL; CREATE TABLE LM_POS01.AAA022 AS SELECT * FROM AAA02(DROP=STR_CD ); QUIT; AAA02 테이블에서 STR_CD 필드는 제외하고 나머지필드들만 가져옴

23 Duplicates 중복 제거 DISTINCT 문은 같은 필드에 반복해서 나오는 항목을 제거하고 종류만 골라내는 기능
PROC SQL; CREATE TABLE LM_POS01.TEMP001 AS SELECT STR_CD FROM LM_POS01.AAA02; QUIT; CREATE TABLE LM_POS01.STR_CD_TB AS SELECT DISTINCT STR_CD CREATE TABLE LM_POS01.STR_CD_TB003 AS SELECT DISTINCT STR_CD, SALE_DY 점포코드만 리스트를 추출하여 테이블로 생성

24 Sorting 정렬 ORDER BY 문을 사용하여 데이터 정렬 Default는 오름차순, DESC를 주면 역순 (내림차순)
PROC SQL; CREATE TABLE LM_POS01.STR_CD_TB AS SELECT DISTINCT STR_CD, POS_NO FROM LM_POS01.AAA02 ORDER BY STR_CD, POS_NO DESC; QUIT; STR_CD는 오름차순, POS_NO는 내림차 순으로 정렬한 테이블 생성

25 선택 및 연산 Sub-setting and Calculating
+, - , *, / 등의 사칙 연산을 사용 가능 () 를 사용해서 반복적인 표현 사용 가능 WHERE 절에 IN() 함수를 사용하여 복수의 값 선택 가능 PROC SQL; CREATE TABLE LM_POS01.STR_CD_TB01 AS SELECT STR_CD, SALE_DY, (SALE_SALE_AMT-100)/1000 AS TEMP_SALEAMT FROM LM_POS01.AAA02 WHERE STR_CD IN ( ) ORDER BY STR_CD, SALE_DY; QUIT; 통상적인 사칙연산을 SELECT 절에 적용하여 새로운 필드 생성 가능 WHERE 절을 이용하여 일부 값에 맞는 레코드들만 선별 가능

26 Aggregation GROUP BY 는 분류별 (예: 지역, 점포, 연도, 고객등급 등) 진계에 주로 사용되는 구문
COUNT(), SUM(), AVG() 등이 집계(즉, “대표값” 계산)를 위해 많이 사용됨 PROC SQL; CREATE TABLE LM_POS01.STR_CD_TB AS SELECT STR_CD, AVG(SALE_SALE_AMT) AS SSAMT_AVG FROM LM_POS01.AAA02 GROUP BY STR_CD; QUIT;

27 GROUP BY 분류별 집계 활용 집계기준으로 복수의 키를 사용할 수 있음 (예: 점포별 > 주별 > … )
집계 키에서는 사용되는 순서대로 순서가 적용됨 (오름차, 내림차 정렬에 따라 결과가 달라짐에 유의 필요 PROC SQL; CREATE TABLE LM_POS01.STR_DY_SSAMT001 AS SELECT STR_CD, SALE_DY SUM(SALE_SALE_AMT)/1000 AS STR_SALEAMT FROM LM_POS01.AAA02 GROUP BY STR_CD, SALE_DY ORDER BY SALE_DY DESC, STR_CD; QUIT;

28 연습 :: Aggregation 평균, 합계, 건수 기초적으로 사용되는 “대표값” 산출방법 예: 건단가 10만원 초과 고객 머릿수 산출출 PROC SQL; CREATE TABLE LM_POS01.CUST_TMP001 AS SELECT CUST_NO, AVG(SALE_SALE_AMT) AS SSAMT_AVG FROM LM_POS01.AAA02 GROUP BY CUST_NO; QUIT; CREATE TABLE LM_POS01.CUST_TMP002 AS SELECT CUST_NO, SSAMT_AVG FROM LM_POS01.CUST_TMP001 WHERE SSAMT_AVG > ORDER BY SSAMT_AVG DESC ;

29 연습 :: Aggregation 2 평균, 합계, 건수 기초적으로 사용되는 “대표값” 산출방법 예: 건단가 10만원 초과 고객 머릿수 산출 PROC SQL; CREATE TABLE LM_POS01.CUST_TMP001 AS SELECT CUST_NO, AVG(SALE_SALE_AMT) AS SSAMT_AVG FROM LM_POS01.AAA02 GROUP BY CUST_NO; QUIT; CREATE TABLE LM_POS01.CUST_TMP003 AS SELECT COUNT(*) AS CNT FROM LM_POS01.CUST_TMP001 WHERE SSAMT_AVG > ; 일부고객의 매출 합계 산출 PROC SQL; CREATE TABLE LM_POS01.SALE_SUM01 AS SELECT SUM(SALE_SALE_AMT) AS SSA_SUM FROM LM_POS01.AAA02 WHERE SSAMT_AVG > ; QUIT; 고객별 건별금액 평균값 산출 일정 금액 이상 고객의 수 산출

30 Joining Tables JOIN 은 두개 이상의 테이블이 가진 데이터를 연결시켜 하나의 테이블을 생성하는 명령
INNER, OUTER(LEFT), FULL 세가지 존재 PROC SQL; CREATE TABLE LM_POS01.STR_CD_TB03 AS SELECT A.*, B.* FROM LM_POS01.STR_CD_TB01 A INNER JOIN LM_POS01.STR_CD_TB02 B ON (A.STR_CD=B.STR_CD) WHERE A.STR_CD IN ( ); QUIT; INNER JOIN 순서 무관하게 연결하는 두 테이블 모두에 존재하는 레코드만을 결과로 반환

31 LEFT JOIN LEFT JOIN은 한 쪽을 기준으로 다른 테이블의 레코드 중 일치하는 부분만 결합
예: 매장포스에 거래내역 있는 온라인 회원의 목록을 포스 거래 내역과 결합 (기준은 매장 포스 거래내역) PROC SQL; CREATE TABLE LM_POS01.STR_CD_TB04 AS SELECT A.*, B.* FROM LM_POS01.STR_CD_TB01 A LEFT JOIN LM_POS01.STR_CD_TB02 B ON (A.STR_CD=B.STR_CD) WHERE A.STR_CD IN ( ); QUIT; LEFT JOIN

32 WEEK 2 연습문제 :: [문제 1] 점포별 취소건의 고객포인트 최대값과 최소값을 산출하라
[문제 2] 고객만족도 지수 50점 초과 점포에 한하여 할인금액의 일자별 합계를 산출하여 점포명을 함께 표시한 테이블을 생성하라 [문제 3] 점포별 일자별 취소율(취소건의 비율)을 산출하라 [문제 4] 매출합계는 점포중 5위 이내이면서, 인구수 등급은 중간에 해당하는 점포를 찾아라 STR_CD 점포코드 SALE_DY 판매일자 POS_NO 포스번호 TRD_NO 거래번호 CUST_NO 고객번호 CANCEL_FG 취소여부 CUST_PNT 고객포인트 SALE_SALE_AMT 판매금액 SALE_PROFIT_AMT 이익금액 SALE_DC_AMT 할인금액 SALE_EMP_NO 판매직원번호 STR_CD 점포코드 STR_NM 점포명 CSINDEX 고객만족도지수 POPUL 인구수등급

33 PROC SQL advantages over DATA step
테이블간의 JOIN 연결이 간편함 (간단한 스크립트로 처리) SQL안에 SQL을 넣는 Nest 방식 활용 가능 외부 데이터베이스와의 연결이 용이 DATA STEP은 한 테이블에 행이 많은 경우에 적합

34 DAY 2 2B :: 유통업에서의 고객데이터 분석 유형

35 유통업 고객 데이터 분석 기본 패턴 1차 :: 고객별 구매액, 구매건수 집계
2차 :: 고객별 구매패턴 전반을 영수증 전체 활용해서 분석 3차 :: 고객등급, 채널, 점포, 상품, 행사 등 각각을 중심을 기준으로 분석 고객등급 고객 상품 가격 채널 구매 구매품목 점포 행사

36 유통업 고객 데이터 분석의 예 1차 :: 고객별 구매액, 구매건수 집계 월별 고객별 구매액 연간 전체 고객 평균 구매일수
2차 :: 고객별 구매패턴 전반을 영수증 전체 활용해서 분석 최근 1년간 고객별 점포별 구매일수 최근 3개월간 행사상품 구매 구매건수 및 행사상품 구매금액 비중 최근 3개월 십분위별(Decile) 상품군별 객단가와 구매일수 3차 :: 고객등급, 채널, 점포, 상품, 행사 등 각각을 중심을 기준으로 분석 고객등급별 구매일수 평균 점포별 우수고객 라면류 구매금액 비중 캠페인 반응 고객 행사기간 중 인당구매금액 평균 DM수신거부 고객 최종구매후 경과기간 평균

37 상품, 점포, 고객등급, 채널별 등 기본 분석 패턴 상품별 분석 대분류 상품군별 구매금액 합계 중분류 상품군별 구매고객수
점포별 분석 최근 3개월 월별 수도권 점포 매출비중 점포별 고객 구매주기 고객등급 분석 전년대비 우수고객 등급 이탈 비율 고객등급별 주구매 상품군 채널 분석 복수채널 이용고객 비율 온라인 회원 중 오프라인 점포 이용 고객 비율

38 Thank You! … contact: 전 용 준 대표/컨설턴트 | 리비젼컨설팅
전 용 준 대표/컨설턴트 | 리비젼컨설팅 Keyword: 예측모델링 | 데이터 마이닝 | 빅 데이터


Download ppt "롯데마트 CRM 데이터 분석 교육 2014년 12월 > RE::VISION 전용준 리비젼컨설팅 대표"

Similar presentations


Ads by Google