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()