1. 데이터 분석 개요

(1) 데이터 분석 프로세스

가) 요건정의

– 분석요건 도출

. 분석요건은 문제 해결시 효과를 ROI 로 증명할 수 있어야 함

. 이슈리스트 작성 -> 핵심이슈 정의 -> 이슈 그룹핑 -> 해결방안 정의

– 수행방안 설계

. 일단위 WBS 작성 단계 , Forward/BackWard 방식으로 일정 계획 수립

– 요건 확정

. 분석 요청 부서, IT 기부서 기타 연관부서가 공유해 최종 요건 확정

나) 모델링

– 모델링 마트 설계와 구축

. 비정규화 상태가 처리 용이, 다양한 소스 (RDB, 텍스트, 시스템 로그), 데이터 유형(연속, 범주)

. 데이터 요약 -> 파생변수 도출 -> 변수 확대

– 탐색적 분석과 유의 변수 도출

. EDA (탐구 데이터 분석 / exploratory data analaysis) 유의 변수 도출 작업 (최근에는 자동화 된 Tool 로 처리)

. 시각화가 중요함 (비 전문가 집단과의 정보 공유, 차이가 큰 구간 식별 등)

– 모델링

. 분석,훈련,테스트 데이터를 나누어 사용한다.

. 지나치게 성능에 집착하여 일정을 지연하지 않는다.

. 지나치게 통계적 가설이나 유의성에 집착하지 않는다.

– 모델링 성능 평가

. 데이터 마이닝 : 정확도, 정밀도, 디텍트 레이트, 리프트 값

. 시뮬레이션 : Throughput, Average Wating Time, Average Queue Length , Time in system 값

. 최적화 : 최적화 이전 /이후 Object Function Value 비교

다) 검증 및 테스트

– 운영 상황에서 실제 테스트

. 과적합화 주의 , 실제운영 환경 시나리오 테스트 (1주일, 시뮬레이션은 불가 )

. 성능의 일관됨 확인 필요 , 조직 업무 변화 관리와 병행 필요

– 비지니스 영향도 평가

. 비용, 만족도 개선, 추가 수익 창출 등 ROI 를 산출 투입 비용대비 효과 증명 필요

. 개선에 따른 정량적 비지니스 효과를 제시한다.

. 기법 : TCO(총 소유 비용), ROI(투자대비효과),NPV(순현재가치),IRR(내부수익률),PP(투자회수기간)

. 데이터 마이닝 : Detection Rate 증가 및 Lift 개선 발생 효과

. 시뮬레이션 : 처리시간, 대기 시간 감소 등 정량 효과

. 최적화 : 목적함수 증가 만큼의 정량적 효과

라) 적용

– 운영 시스템에 적용과 자동화

. Batch 스케줄러를 적용하고 , 주기별로 분석 모델의 성과를 모니터링 할 수 있는 시스템을 구축하여야 한다.

. Shinny 를 이용한 시스템 구축도 고려 가능 (단, 멀티 코어 서비스는 유료)

– 주기적 리모델링

. 비지니스 상황 변화 등에 따른 주기적인 모델 리모델링 필요 (분기, 반기, 연 단위 수행)

(2) 데이터 분석 기법의 이해

가) 기초 지식과 소양

– 분석 대상 산업에 대한 비지니스적 이해

나) 데이터 처리

– Legacy : 원천 데이터

– Staging : 데이터 전처리 과정을 통한 오류 데이터 정정 작업

– ODS : Operational Data Store (구동계와 유사한 정제된 데이터 관리)

– D/W :

– Data Mart

– R(분석 시스템)

다) 시각화 : 탐색적 분석, 비 전문가와 의사소통 및 보고서 작업 등에 필요

라) 공간 분석 : 위치 기반 분석

마) 탐색적 분석 : 매우 많은 시간이 걸리며, 탐색하려는 분야의 지식과 사실을 확보하는 단계

바) 통계 분석 : 모집단, Sample, 대표값, T-Test, ANOVA 등.. (통계 Chapter 에서 상세)

사) 데이터 마이닝 : Forecasting, classification, social network anal, clustering , Text mining, predict 등

아) 시뮬레이션 : 대기 행렬에 대한 우선순위 방식/도착 우선 방식 등

카) 최적화 : 목적 함수 값을 최대화 혹은 최소하는 것을 목표로 함

타) 배포 및 운영 : 분석과 운영 별도의 개발없이 Shinny 등의 도구로 서비스

(3) 분석 환경 이해와 기본 사용법

가) 분석 도구

– SAS/SPSS : 유료/ 분석 모듈 별도 구매/최신 알고리즘 제공 느림/ 커뮤니티 부재

– R: 무료 / 각종 모듈 무료/ 알고리즘 제공 빠름/ 커뮤니티 활발

나) 분석 환경 이해

– R 설치 및 기본 기능 (사이트 참조)

다) 기본 문법

– A <- B : 변수 할당

– print : 결과 출력

– c(‘a’,’b’) : 벡터

– c(a+b) : 벡터 내 연산

– Vector <- c(Vector, Vector) : 벡터 결합

– 1:10 : 1~10 수열

– seq(from(시작) , to(끝) , by(간격) , times(반복), each(각각 반복))

– 데이터 타입 : Numeric (Interger, double), Logical(true,false), Character

– 기본 데이터 객체 : Vector, scalar , Matrix, Array, Factor

– 기본 객체 모음 : List, Data Frame

– paste (붙일 내용 , 붙일내용, sep (구분자))

– Substr(문자열, 시작, 끝)

– 논리값 : TRUE , FALSe

– Matrix (이름, 행수, 열수)

– dim() : Matrix 의 행,열 수 반납

– diag() : 행렬 대각선 값 반환

– t(Matrix) : 전치 행렬

– Matrix %*% Matrix : 행렬간의 곱

– colnames() : 열 네임을 조회

– rownames() : 행 네임을 조회

– colnames(Matrix) <- c(“a”,”b”,”C”) : 열 명을 지정

– rownames(Matrix) <- c(“a”,”b”,”C”) : 행 명을 지정

– Matirx[조건 , ] : 조건을 만족하는 모든 열 출력

– Matirx[ , 조건] : 조건을 만족하는 모든 행 출력

– matrix( 데이터, 행, 열) : 데이터, 행,열 한번에 지정 생성

– list( , , ,) : 리스트 생성

– unlist(List) : 리스트 해체

– list[[1]] , list[[1]][2] : 리스트 접근

– list[ 조건] : 조건 겁색 가능

– list(list,list) : 리스트 합병 가능

– data.frame(Vector, Vector) : 행이 2개인 data.Frame 생성

– rbind(frame, frame) : 행 추가

– cbind(frame, frame) : 열 추가

– subset(frame , select=열 이름, subset=조회조건) : 조회 조건에 맞는 내용 조회 (Subset은 List 및 Vector 에서도 사용가능)

– head : 첫 6줄 조회

– grep(패턴 , 데이터) : 문자에서 패턴의 위치를 리턴한다

– Vector[-(1:5)] : (-) 는 제거의 의미

– Vector%%2 ==0 : Boolean 리턴, 짝수일대 TRUE

– Vector[as.logical(조건)] : 논리 조건과 같은 표현

– as.data.frame() : 데이터 프레임으로 변환

– as.list() : 리스트로 변환

– as.matrix() : 메트릭스로 변환

– as.vector() : 벡터로 변환

– as.factor() : 팩터로 변환

– Sys.Date() : 현재 시간

– as.Date() : 날짜 타입으로 변환

– format(날짜, 포맷) : 해당 포맷으로 변경

– as.character() : 캐릭터 타입으로 변경

– 0/0 : NaN

– is.nan() : missing Data 체크

– is.finite() : 무한대 체크

– is.na() : missing 데이터 체크

– mean() : 평균

– sum() : 합

– average() : 평균

– median() : 중앙값

– log() : 로그

– sd() : 표준 편차

– var() : 분산

– cov() : 공분산

– cor() : 상관계수

– lenght() : 변수의 길이 값 반환

– sapply(데이터, 적용할 함수(커스텀 Function 도 가능) ) : 데이터에 지정한 함수를 적용하여 결과를 리턴

– write.csv(데이터, 파일명) : csv 저장

– read.csv(파일명) : csv 로드

– save(데이터, file=파일명) : Rdata 로 저장

– load(파일명) : Rdata 로드

– rm(data) : 데이터 삭제

– rm(list=ls(all=TRUE)) : 모든 데이터 삭제

– summary() : 간단한 통계량을 한반에 요약

– install.packages(패키지명) : 선택한 패키지 설치

– library(패키지 명) : 패키지를 시스템으로 로딩

– vignette(패키지 명) : 패키지에 대한 설명

– q() : 작업 종료

– setwd(폴더) : 파일의 Working 디렉토리 지정

– ? + 명령어 : 명령어에 대한 도움말

– ?? + 명령어 : 명령어에 대한 검색

라) 래틀 (rattle)

– 스크립트가 익숙하지 않은 초보자를 위한 그래픽 tool 제공

– 설치 패키지 : RGtk2 , rattle

– 실행 : rattle()