Chapter4 – 4. 정형 데이터 마이닝

4. 정형 데이터 마이닝

(1) 데이터 마이닝 개요

가) 정의

– 통계분석과의 가장큰 차이는 어떤 가설이나 가정에 따른 분석이나 검증이 아닌, 다양한 수리 알고리즘을 이용해 데이터베이스의 데이터로 부터

의미있는 정보를 찾아내는 방법을 통칭한다. (방법에 따라 인공지능, 의사경정나무, K-평균군집화, 연관분석, 회귀분석, 로짓분석, 최근접이웃 등으로 불림)

나) 데이터 마이닝 추진 단계

– 목적 설정 > 데이터 준비 > 가공 > 기법적용 > 검증

다) 데이터 마이닝을 위한 데이터 분할

– 데이터 분할 : 구축용, 검정용, 시험용

라) 데이터 마이닝 모형 평가

– 가장 보편 적인 기준은 손익

(2) 분류 분석

가) 분류 모델링

– 정의

. 등급을 나눈다는 점에서는 클러스터링과 유사하지만, 분류 분석은 군집분석과는 달리 각 계급이 어떻게 정의되는지 미리 알아야 함

. YES / NO , 생존 / 미생존과 같이 미리 정해진 Category 에 분류해서 넣는 작업

. 관련 기법 : 최근접 이웃, 의사결정나무, 베이지안정리, 인공신경망, 지지도벡터기계, caret

– 의사결정 나무 : Decision Tree 연속적으로 발생하는 의사 결정 문제의 시각화

– 의사결정 나무 활용

. 세분화, 분류, 예측, 차원축소 및 변수 선택, 교호작용과의 파악, 범주의 병합 또는 연속형 변수의 이산화

-의사결저어 나무의 특성

. 설명 용이, 정확도 높음, 계산이 복잡하지 않음(소속집단을 모르는 데이터도 분석 가능), 잡음 데이터에 강하다 , 변수간의 상관성이 높아도 크게 영향받지 않음

– R 지원 패키지

. rpart, rpartOrdinal, randomForest, party, Tree, marginTree, MapTree

나) 성과분석과 스코어링

– Party 패키지를 이용한 의사결정 나무

. 패키지 : party

. 생성 : ctree ( Fomula , data=데이터)

. 검증 : table(predict(모델) , 검증데이터 )

– rPart를 이용한 의사결정 나무

. 패키지 : rpart

. 생성 : rpart(Fomula, data=데이터, control=rpart.control(minsplit=10))

. 검증 : table(predict(모델) , 검증데이터 )

– 랜덤 포리스트

. 특징 : 대용량 데이터에서 효율적으로 실행되며, 변수 제거 없이 실행되어 정확도 측면에서 좋음

. 패키지 : randomForest

. 생성 : randomForest(종송변수 ~ . , data=데이터, ntree=최대 category 개수, proximity=TRUE)

. 변수 중요도 : importance(모델)

. 변수 중요도 그래프 : varImpPlot(모델)

. 검증 : plot(margin(모델, 검증데이터)) , 옳게 분류한 확률 – 잘못분류한확률 ( 0 ~ 1) (1이 좋음)

– ROCT 패키지

. 특징 : Binary Classification 만 지원

. 패키지 : ROCR

. 생성 : cforest(Formula , data=데이터, control=cforest_unbiased(mtry=3))

. 검증 : performance(prediction, 민감도, 특이도) , 민감도 : 1인 경우를 1이라 함 , 특이도 : 1인 경우를 0이라 함

performance(prediction, Lift, Rate of positivie prediction) : ?

– Caret 패키지

. 특징 : Classificaiotn 관련 패키지가 너무 많아 혼란스럽기 때문에 전체적으로 동일한 형식으로 사용할 수 있도록 지원하는 패키지

. 패키지 : caret , kernlab, e1071, doParallel, randomForest, pls, lattice, reshape

. 데이터 분리 (테스트 데이터, 트레이닝 데이터 분리) : createParition(데이터, p=0.7(트레이닝 데이터 70%))

. 생성 : train(x=종속변수 데이터 Set, y=독립변수 데이터 Set, method=”svmRadial”, preProc=c(“center”,”scale”), tuneLength=8, trControl=trainControl(method=”repeatedcv”, repeats=5),metric=”Kappa”, fit=FASLE)

. 예측 : predict(모델, 검증데이터)

. 그래프 : densityplot, parallelpot, bwplot

(3) 예측분석

가) 정의 : 분류와 예측은 불연속 데이터와 연속 데이터를 목표 값으로 한다는 점에서 차이가 있다

나) 활용 분야

– 행동예측 유형

– 휴면/이탈 예측

– 등급 변동 예측

– 신규 고객 우수 가망 예측

– 상품구매 예측

– 캠페인 반응 예측

다) party 패키지를 이용한 선형 모델링

– Decision Tree 분석 : ctree(fomula , data=데이터)

– 범주형 데이터를 제외하고 선형 분석 실행

(4) 군집분석

가) 개요

– 특성에 따라 여러개의 배터적인 집단으로 나누는 것

나) 전통적 군집 분석

– 기존 세분화 방법의 유형

. 임의로 신규/기존, 혹은 미래/현재 포함 4~9 분면으로 나눔

. 통계적 기법 : Clustering , k-Means

– 기존 방법의 문제점

. 분석을 진행하면서 프로파일 그룹자체가 변경되는 현상 발생

. 분석에 오랜 시간이 소요 됨

. 그룹은 3~10개로 정도로 나눈다 (개수를 늘렸을 때 그룹내의 분산 변동으로 판단)

– 거리

. 데이터 간의 거리를 군집에 사용

. 데이터(예) : x1 <- c(1,2)

. 유클리드 거리 : dist(데이터 , method=”euclidean”)

. 표준화 거리

. 마할라노비스 거리

. 체비셰프 거리

. 맨하탄 거리 : dist(데이터 , method=”manhattan”)

. 캔버라 거리 : dist(데이터 , method=”canberra”)

. 민코우스키 거리 : dist(데이터 , method=”minkowski”)

다) 계층적 분석 방법

– 최단 연결법 : 그룹간의 최소 값을 그룹간의 거리로 정의 (hclust 데이터, method=”single”))

– 최장 연결법 : 그룹간의 최대 값을 그룹간의 거리로 정의 (hclust 데이터, method=”complete”))

– 평균 연결법 : 그룹간의 평균 값을 그룹간의 거리로 정의 (hclust 데이터, method=”average”))

– 와드 연결법 : 편차들의 제곱합을 고려한 거리로 정의 (hclust 데이터, method=”ward”))

라) 비계층적 군집방법

– n개의 개체를 g개의 군집으로 나눌 수 있는 모든 가능한 방법을 점검해 최적화한 군집을 형성

– 아래는 그 순서

. 임의로 g의 중심을 정해 각 관측치를 가장 가까운 중심에 묶어 첫 번째 군집을 만듬

. 각 군집에 대해 군집 내 관측치의 거리를 계산하여 새로운 중심점을 구함

. 새로 정한 중심점에 대해 각 관측치를 가까운 중심점으로 다시 묶어 군집을 재 정의

. 재정의 된 군집이 이전과 일치할 때까지 2,3 반복

– 비계층 군집의 장점

. 주어진 데이터의 내부 구조를 모르고 자료 구조를 찾을 수 있는 방법

. 다양한 데이터에 적용 가능

. 분석 방법의 적용이 용이함

– 비계층 군집의 단점

. 가중치와 거리정의가 어렵다

. 초기 군집수를 결정하기 어렵다.

. 사전에 주어진 목적이 없으므로 결과 해석이 어렵다.

마) 최신 군집 분석 기법들의 적용

– K-means

. 실행 : kmeans(데이터, 군집개수 지정)

. 검증 : table , plot

– PAM

. 결측값에 대한 허용 및 실제 pbservation 표시 등 robust 한 K-Means 알고리즘 이지만 대용량 데이터 처리시 속도 문제

. 패키지 : cluster

. 실행 : pam(데이터, 군집개수)

. 검증 : table, plot

– Hierarchical Clustering

. 기존 방식

– Density-based Clustering

. 지정 거리 범위 내, 객체 수를 만족하면 그룹이 됨

. dbscan(데이터 , eps=거리 범위 , MinPts=군집내 객체 수)

– Fuzzy Clustering

. 숫자 변수만 가능하며, NA 가 허용됨, k개의 Clustering 이 생성되는데 개수는 Obeservation /2 까지 가능

. 패키지 : Cluster

. 사용 : fanny(데이터, 그룹 개수)

(5) 연관분석 (Association Analysis)

가) 연관성 규칙

– 연관성 규칙의 개념

. 예) 빵을 사는 사람은 우유도 같이 산다

– 연관성 분석의 측도

. 지지도(Support) : 전체 거래중 A와 B 를 동시에 포함하는 비율

. 신뢰도(confidence) : A 를 포함한 거래중 B가 같이 포함된 비율

. 향상도(Lift) : A가 주어지지 않았을 때에 비해 A 가 주어졌을대 B 의 확률 증가 비율

– 연관 규칙 분석 절차

. 최소 지지도를 정한다

. 개별 품목 중에서 최소 지지도를 넘는 모든 품목을 찾는다

. 2에서 찾은 개별 품목만을 이용해 최소 지지도를 넘는 2가지 품목 집합을 찾는다

. 위의 두 절차에서 찾은 품목 집합을 결합해 최소 지지도를 넘는 3가지 품목을 찾는다

. 반복적으로 수행해 최소 지지도가 넘는 빈발품목 집합을 찾는다

– 연관 규칙 분석의 장점

. 연관분석의 결과 이해가 쉽다

. 특별한 목적이 없는 경우 적용 가능

. 별도의 데이터 가공 없이 바로 구매 데이터에 적용 가능

. 분석을 위한 계산이 간단하다

– 연관 규칙 분석의 단점

. 품목이 늘어나면 그 계산 시간이 기하급수 적으로 늘어난다

. 너무 세부 품목으로 나누어져 있는 경우 그 결과가 의미 없을 수 있다

. 거래 수가 적은 품목은 검출이 힘들다

– 순차 패턴

. 시간 개념을 적용하여 순차 발생이 큰 대상을 찾는다

나) 활용 방안

– 패키지 : arules

– 데이터 변환 : as(데이터, “transaction”)

– 데이터 내용 조회 : inspect (트랜젝션 데이터)

– 요약 변수 생성 : ordered(cut (데이터, c(구간1, 구간2, 구간3) , labels(라벨1, 라벨2, 라벨3))

– 그래프 : itemFrequencyPlot(데이터, support=조회하고 싶은 지지도 )

– APRIORI 적용 : apriori(데이터, parameter=list(support=0.1 ,confidence=0.6))

– 조건 분석 : subset(룰데이터, subset= 조건 )

Chapter4 – 3. 데이터 마트

3. 데이터 마트

(1) 데이터 변경 및 요약

가) R reshape 을 이용한 마트 개발

– 요약 변수

. 기간별 구매 금액/횟수 , 위클리 쇼퍼, 상품별 구매 금액/횟수 ,상품별 구매 순서, 유통 채널별 구매 금액, 단어 빈도, 초기 행동변수, 트랜드 변수, 연속 변수의 구간화 등

– 파생변수

. 분석자가 특정 조건을 만족하거나 특정 함수에 의해 값을 만들어 의미를 부여한 변수

. 근무시간 구매 지수, 주 구매 매장 변수, 주 활동 지역 변수, 주 구매 상품 변수, 구매 상품 다양성 변수, 가격 선호대 변수 등

– R reshape

. 패키지 : reshape

. melt : 지정한 ID 를 기준으로 다른 컬럼들을 Variable 과 Value 로 표시한다.

. cast (melt 데이터, X ~ Y ~ Variable) : X축 Y축을 지정한 Variable 로 채우는 피벗 테이블을 생성한다 .

. cast (melt 데이터, X ~ Variable, 적용함수 명[예:mean] ) : 지정 X 와 Melt 의 Variable 로 구성된 테이블을 구성하며 그 값에 Mean 과 같은 함수 적용

. cast (melt 데이터, X ~ Variable, 적용함수 명[예:mean], Margins=c(“grand_row” , “grand_col”) ) : Margin 을 옵션을 사용 행,열의 합을 추가 할 수 있다

. cast (melt 데이터, X ~ Y, 적용함수 명[예:mean], subset=variable==”ozone”) : Subset 옵션을 사용하여 원하는 Variable 만 조회 가능

나) sqldf 를 이용한 데이터 분석

– 패키지 : sqldf

– SQL 을 동일하게 사용할 수 있다

– sqldf( SQL 문장)

– sqldf(“select * fom iris limit 10”) : 10개 데이터만 조회

– sqldf(“select * fom iris where species like ‘ddd'”) : like 는 작은 따움표 사용

다) plyr

– ddply (데이터, 컬럼, Function(){})

– summarise : ddply(데이터 , 컬럼, 옵션-summarise, Function) , 계산 과정 데이터는 생략

– transform : ddply(데이터 , 컬럼, 옵션-transform, Function), 계산 과정 데이터도 보여줌

– 멀티 코어 사용

. 리눅스 : doMC (registerDoMc(2) )

. 윈도우 : doParallel (registerDoParallel(cores=2))

라) 데이터 테이블

– 64비트 환경에서 Ram 이 충분히 많을때 효과적

– 패키지 : data.table

– Key를 생성하여 속도가 빠름

– R 사용

. data.table(Vector, Vector, . …)

(2) 데이터 가공

가) 데이터 탐색

나) 변수 중요도

– LDA (Linear Discriminant Analsis)

. 패키지 : MASS

. 사용 : lda(종속변수 ~ , data= 데이터)

. 종속 변수에 영향을 주는 다른 변수의 중요도록 한번에 탐색 , 시스템 사양에 따라 나누어 작업

– greedy.wilks

. 패키지 : KlaR

. 사용 : greedy.wilks(종속변수 ~ . , data=데이터, niveau= )

– plineplot

. 사용 : plineplot( 종속변수 ~ . , data = 데이터, method=’lda’ , x=축 눈금 데이터 , xlab= x축 Label)

. 종속변수에 주는 영향을 시각화하여 파악 가능

– NaiveBayes

. NaiveBayes(종속변수 ~ ., data= 데이터)

. 종속변수의 값을 X 축으로 영향도를 찾고자 하는 값의 Density 를 표현

– ctree (decision tree)

. 패키지 : party

. 사용 : ctree(종속변수 ~ . , data=데이터)

(3) 기초 분석 및 데이터 관리

가) 데이터 EDA

– summary 등.. 사용 데이터 속성 파악

나) 결측값 처리

– 관련 패키지 : Amelia, Mice, mistools

– 옵션 처리 : mean(데이터, na.rm=T) (옵션으로 결측값을 무시하는 방법)

– 데이터 삭제 : 데이터[!complete.cases(데이터),] 와 같은 방법으로 데이터 일괄 삭제

– amelia 사용 : amelia(데이터, m=대체 데이터 set 개수 , ts=시계열 주기, cs=cross-section 포함 정보)

– 이상값 검색

. 패키지 : DMwR

. 사용 : lofactor(데이터, k=판단에 사용할 이웃데이터 수)

Chapter4 – 2. 통계분석

2. 통계분석

(1) 통계분석의 이해

가) 통계

– 조사 범위 : 총조사 , 표본조사

– 표본추출 방법

. 단순랜덤 추출법 : 단순 랜덤

. 계통추출법 : 구간을 나눈 후 구간안에서 균등하게 랜덤하게 추출

. 집락추출법 : 모집단이 몇개의 집락으로 구분이 가능한 경우 사용

. 층화추출법 : 이질적인 원소들로 구성된 모집단에서 유사한 것끼리 층을 나눈후 각 층에서 추출

– 측정 방법

. 명목척도 : 측정 대상의 소속 척도 (예: 남,여)

. 순서척도 : 측정 대상의 서열 척도 (예: 만족, 매우만족, 보통, 불만족)

. 구간척도 : 측정 대상이 갖고 있는 속성이 양으로, 두 관측 값 사이의 비율이 의미가 없는 데이터 (예: 온도, 지수 )

. 비율척도 : 절대저 기준이 0 값이 존재 , 모든 사칙연산 가능, 제일 많은 비율의 정보 (예 : 나이, 연간소득, 제품 가격)

나) 통계 분석

– 통계 분석/통계적 추론 : 특정한 집단이나 불확실한 현상을 대상으로 자료를 수집 적절한 분석을 통해 의사결정하는 과정

– 추정 : 대상 집단의 특성값(모수)는 무엇인가를 추측

– 가설검정 : 가설을 설정후 가설의 채택 여부를 검증

– 예측 : 미래의 불확실성을 해결해 효율적인 의사 결정을 하기 위한 수행

– 기술통계 : 평균, 표준편차 등 수집된 자료를 정리 요약 하기 위해 사용하는 기초 통계

다) 확률 및 확률분포

– 확률 변수

. 이산형 확률 변수 : 점에 대한 확률 (확률 크기 표현 함수 : 확률질량함수 사용)

. 연속형 확률 변수 : 구간에 대한 확률 (확률 크기 표현 함수 : 확률밀도함수 사용)

– 결합 확률 분포 : 확률 변수의 집합

. 이산형 확률 함수 : 결합확률질량함수 (P(x,y) x = 1,2,3,4, y=1,2,3,4,)

베르누이, 이항분포, 기하분포, 다항분포, 포아송분포

. 연속형 확률 함수 : 결합확률밀도함수 (f(x,y))

균일분포, 정규분포, 지수분포, t분포, x2분포, F분포

라) 추정과 가설검정

– 추정

. 점추정 : 모수가 특정 값일 것(예 : 평균, 표본분산 )

. 구간추정 : 모수가 구간에 포함될 것 (신뢰수준, 신뢰구간)

– 가설검정

. 귀무가설 : 항상 간단하고 구체적인 표현

. 대립가설 : 귀무가설에 대립되는 가설

. 검정통계량 : 검증을 위한 통계량으로 유의수준 비교에 이용하는 데이터 (F, T Value 등)

. 유의수준 : 귀무가설이 옳다는 가정하게 통계량을 구한후 이 값이 나타날 확률을 정의, 귀무 가설이 옳은데도 이를 기각하는 확률의 크기

. 기각역 : 귀무가설이 옳단느 전제하게 구한 검정통계량의 분포에서 확률이 유의수준인 부분

. 제 1종 오류 : 귀무가설이 참이에도 거짓이라고 판단하는 오류

. 제 2종 오류 : 귀무가설이 거짓 임에도 참이라고 판단하느 오류

마) 비모수 검정

– 데이터가 정규분포를 따르지 않거나 , 자료가 개체간의 서열관계를 나타내는 경우 모수 검정 불가

– 비모수 검정 방법 : 부호검정, 윌콕슨 순위 합 검정, 윌콕슨 부호순위합검정, 만 위트니의 U검정, 런 검정, 스피어만 상관순위 계수

(2) 기초 통계 분석

가) 기술통계

– 평균 : mean

– 중앙값 : median

– 표준편차 : sd

– 분산 : var

– 1사분위수 : quantile(data, 1/4)

– 3사분위수 : quantile(data, 3/4)

– 최대값 : max

– 최소값 : min

나) 인과관계의 이해

– 종속변수 : 다른 변수의 영향을 받는 변수

– 독립변수 : 영향을 주는 변수

– 산점도(scatter) : 좌표 평면위에 점들로 표현

.선형성 확인 . 함수관계 (진선, 곡선), 이상값 존재, 계측 구분

– 공분산 : X,Y 방향의 조합 (선형성) 이다 (X,Y 과 독립이면 공분사는 0)

다) 상관 분석

– 피어슨의 표본 상관 계수 : cor (X , Y)

– 스피어만 상관계수 : 비모수 방법 , rcorr( X, Y, type=’pearson’)

(3) 회귀 분석

가) 회귀 분석의 개념

– 단순 회귀 분석 : 종속변수와 독립변수가 단 하나

– 다중회귀분석 : 두개 이상의 독립변수 사용

– 회귀분석의 적합성 판단 요건

. 통계적으로 유의미 한가 : 유의수준 5% 이하에서 F통계량이(모형의 적합성) p- 값이 0.05보다 작으면 회귀식은 통계적으로 유의하다고 볼 수 있다. (귀무가설 : 통계적으로 유의하지 않다)

. 회귀계수가 유의미 한가 : t통계량, p-값 및 이들의 신뢰구간

. 모형의 설명력 : 결정계수 (0 ~ 1)

. 모형이 데이터를 잘 적합하고 있는가 : 잔차에 대한 회귀 진단 (잔차가 회귀 관계를 갖으면 그것을 포함해서 재 모델링 필요)

. 데이터가 전체 가정을 만족하는가 ?

– 가정

. 선형성 : 독립변인의 변화에 따라 종속변인도 일정 크리고 변화

. 독립성 : 잔차와 독립변인의 값이 관련되어 있지 않음

. 등분산성 : 독립 변인의 모든 값에 대해 오차들의 분산이 일정

. 비상관성 : 관측치들의 잔차들끼리 상관이 없어야 함

. 정상성 : 잔차항이 정규분포를 이뤄야 함

나) 회귀분석의 종류

– 회귀 분석 종류

. 단순회귀 : 독립변수 1, 종속변수 1

. 다중회귀 : 독립변수 N, 종속변수 1 (1차 함수)

. 다항회귀 : 독립변수 N, 종속변수 1 (2차 함수 이상 )

. 곡선회귀 : 독립변수 1, 종속변수 1 (반응 변수와의 관계가 곡선)

. 비선형회귀 : 미지의 모수들의 선형관계로 이루어 지지 않음

– R 선형 회귀식 판단

. lm ( fomula = 종속 ~ 독립 , data=데이터)

. 각 변수 Pr(>|t|) : 각 변수가 모델 미치는 회귀 계수로 귀무가설은 모델이 유의하지 않다

. Multiple R-Squared : 결정계수로 모델이 전체 데이터를 얼마나 설명하는지에 대한 계수 (0 ~ 1)

. F-statistic : 검정을 위한 통계 값 (모델의 유의성) 으로 P-Palue 산정에 사용

. P-Value : 귀무가설은 모델이 유의하지 않다. 즉 0.05 이하에서 모델 성립

– 최적회귀방정식 선택 (설명 변수의 선택)

. 모든 가능한 조합의 회귀 분석

. 단계적 변수 선택법 : 전진선택법 ,후진제거법, 단계별 방법

(4) 시계열 분석

가) 정상성

– 평균이 일정하다, 즉 모든 시점에 대해 일정한 평균을 가진다.

– 분산도 시점에 의존하지 않는다.

– 공분산은 단지 시차에만 의존 특정 시점 t,s 에 의존하지 않는다.

– 변환 : 분산이 일정하지 않을 때 사용하여 정상성 확보

– 차분 : 평균이 일정하지 않을 때 사용하여 정상성 확보, 이전 시점의 데이터로 뺀다

나) 시계열 모형

– 자기회귀 모형 (AR 모형)

. p 시점의 자료가 현재 자료에 영향을 주는 자귀 회귀 모형

. AR ( N ) : N 은 절단 시점

– 이동평균모형 (MA 모형)

. 유한한 개수의 백색잡음의(시계열 분석에서의 오차항) 결합

. MA( N ) : N 은 절단 지점

– 자기회귀누적이동평균모형

. ARIMA(p ,d ,q) : AR + 차분 + MA

– 분해 시계열 : 시계열에 영향을 주는 일반적인 요인을 시계열에서 분리해 분석하는 방법 (반복요인을 제거)

. 추세요인 : 지수적인 형태를 취하는 경우 추세요인이라 칭함

. 계절요인 : 일, 년, 월 등 특정 시간으로 반복되는 경우 계절요인이라 칭함

. 순환요인 : 알려지지 않은 주기로 반복되는 경우 순환요인이 있다고 함

. 불규칙요인 : 위의 세가지로 표현되지 않은 요인을 칭함

다) R분석

– 기본

. Package : TTR, forecast

. ts ( 데이터, frequency = 주기) : 데이터를 시계열 데이터 변환

. plot.ts : 시계열 그래프를 생성

– 분해 시계열

. SMA(데이터, n=평균산정주기) : 비계절성 자료에 대한 분석

. decompose : 계절성 자료에 대한 분석 (트렌드, 계절성 등 성분이 분석됨)

– ARIMA 분석

. diff(데이터, differences=횟수) : 차분 횟수

. ACF : AR 적정 횟수 찾기 위함

. PACF : MA 적정 횟수

. auto.arima() : ACF , DIFF, PACF 를 자동으로 찾아줌

. arima(데이터, order=c(ACF , DIFF, PACF) ) : 시계열 모델을 생성

. plot.forecast(arima 모델) : 예측 실행

(5) 주성분 분석

가) 정의

– 상관관계가 있는 변수들을 결합해 상관관계가 없는 변수로 분산을 극대화 하는 변수로, 선형 결합을 해 변수를 축약하는데 사용

데이터 내부 구조를 파악할 수 있는 방법으로, 예측모델 생성시 주로 사용하며, 데이터 손실이 가장 적은 방향으로 한다.

나) R 분석

– PRCOMP(데이터) : 데이터를 설명할 수 있는 주요 성분을 추출한다

– 결과$scores : 각 주요 성분 조회

– biplot : 주성분 그래프 생성

– summary

. Proportion of Variance : 각 성분의 설명력

. Cumulative Proportion : 누적 설명력

– Predict(주성분 분석 결과, 주성분 사용 갯수)

Chapter4 – 1. 데이터 분석 개요

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

Chapter3 – 2. 분석 마스터 플랜

2.분석 마스터 플랜

(1) 마스터 플랜 수립

가) 마스터 플랜 수립 개요

– 우선순위 (전략적 중요도, 비지니스 성과, 실행 용이성) , 적용 범위/방식 (업무 내재화 적용 수준, 분석 데이터 적용 수준, 기술 적용 수준) 등을 포함한 분석과제 로드맵 수립

나) 우선순위 평가

– 전략적 중요도

. 전략적 필요성 : 본원적 업무에 직접적인 연관 밀접도, 이슈 미해결시 위험도

. 시급성 : 사용자 요구사항 시급도, 향후 경쟁우위 확보를 위한 중요도

. Value : 비지니스 효과

– 실행 용이성

. 투자 용이성 : 기간 및 인력 투입 용이성 정도 , 투자 예산 확보 용이성 정도

. 기술 용이성 : 적용 기술의 안정성, 유지보수성, 개발 Skill , 적용 기술 적용성

. 투자 비용 요소 : 데이터 규모, 데이터 종류/유형, 데이터 색성 속도/처리 속도

– 4V : 비용/3V (크기, 다양성, 속도) , 효과/1V (Value)

– 분석 과제 우선 순위 선정

. [1]난이도(하)/시급성(현재) , [2] 난이도(상)/시급성(현재), [3] 난이도(하)/시급성(미래) , [4] 난이도(상)/시급성(미래)

. 시급성 기준 : [1] -> [3] -> [4]

. 난이도 기준 : [1] -> [2] -> [4]

. 예외 : [4] 번의 경우 데이터 사이즈를 줄여서 난이도를 줄이는 방법으로 [3]번으로 전환하여 수행 가능

다) 단계적 구현 로드맵 수립

– (나) 의 평가 순서에 따라 단계적 과제 실행 로드맵을 작성한다.

라) 일정계획 수립

– 기존의 Water Fall 모델이 아닌 반복적 작업을 반영한 Refine Analytics Model 사용

– 분석보델 설계 -> 분석모델 적용 -> 분석모델 평가 단계의 반복을 통한 점진적 과제 진행

(2) 분석 거버넌스 체계

가) 거버넌스 체계 개요

– 데이터 분선과 활용에 대한 체계적인 관리의 중요성

– COA (Center of Alalytics) : 분석의 지속적 개선,개발 확산 및 서비스 관리를 위한 거버넌스 체계

. 분석 조직, 분석 전문 인력, 분석 개발/확산/평가 프로세스 , 분석 교육, 분석 수준 진단

나) 데이터 분석 수준진단

– 분석 준비도

.분석업무, 분석인력/조직, 분석기법, 분석 데이터, 분석 문화, 분석 인프라

– 분석 성숙도

. 단계 : 도입 > 활용 > 확산 > 최적화

. 설명 : 분석시작 환경 > 분석 결과를 실제 업무에 적용 > 전사 차원에서 분석을 관리 공유 > 분석을 진화시켜 혁신 및 성과에 기여

. 비지니스 : 실적분석 통계 > 미래결과 예측/시뮬레이션 > 전사 성과 실시간 분석/분석규칙 관리 > 외부 환경 분석/최적화 업무 적용/실시간 분석

. 조직역량 : 담당자 역량 의존 > 전문 부서 수행 > 모든 부서 수행 > 데이터 사이언스 그룹

. IT 부분 : DW/DM/ETL/EAI/OLAP> 실시간 대시보드 > 빅데이터 관리 환경/분석 전용 서버 > 프로세스 내재화/빅데이터 분석/협업 환경

– 분석 수준 진단 결과

. 준비형 : 데이터 분석을 위한 낮은 준비도와 낮은 성숙도에 있는 기업 (사전 준비가 필요한 기업)

. 정착형 : 준비도는 낮은 편이지만 조직,인력,분석업무,기법등은 기업 내부에서 제한적으로 사용 (분석 정착이 먼저 필요한 기업)

. 도입형 : 기업에서 활용하는 분석업무 및 분석 기법은 부족하지만 조직 및 인력 등 준비도가 높음 (바로 적용 가능한 기업)

. 확산형 : 6가지 분석 구성요소를 갖추고 있으며, 현재 부분적으로 도입해 확산중인 기업

다) 데이터 분석 조직 및 인력

– 분석 조직 개요

. 목표 : 기업 경쟁력 확보를 위해 비지니스 가치를 찾고 최적화 하는것

. 역할 : 전사 및 부서의 분석업무를 발굴 전문적인 기법을 활용 기업내 빅데이터에서 Insight 를 찾고 Action화 하는 것

. 구성 : 기초 통계학 및 분석 방법에 대한 지식과 분석 경험을 가지고 있는 인력으로 구성

– 분석 조직 및 인력 구성시 고려사항

. 조직 구조 : 비지니스 질문을 선제적으로 찾아 낼 수 있는가?

타 부서간의 협조가 원활한 구조인가?

효율적인 분석을 위한 분석조직 내부 조직구조는?

전사 및 단위 부서가 필요시 접촉하며 지원가능한가?

어떤 형태 (중앙집중형, 분산형)의 조직 구성이 효율적인가?

. 인력 구성 : 비지니스 및 IT 전문가의 조합으로 구성되어야 하는가?

어떤 경험과 어떤 스킬을 가진 사람으로 구성해야 하는가?

통계적 기법 및 분석 모델링 전문 인력을 별도로 구성해야 하는가?

전사 비지니스를 커버하는 인력이 없을 경우?

전사 분석업무에 대한 적합한 인력 규모는?

– 분석 조직 구성의 형태

. 집중 구조 : 별도의 조직이 전담하는 형태 , 현업부서와 업무 중복 및 이원화 발생 가능

. 기능 중심 : 해당 부서에서 직접 분석을 담당하는 형태, 전사적인 관점에서의 프로젝트 수행이 어려움

. 분산된 조직구조 : 분석 조직원을 각 부서에 배치하여 업무 수행, 분석 결과를 신속하게 실무 적용 가능

– 분석조직

. 비지니스 인력, IT 기술인력, 분석전문 인력, 변화관리 인력, 교육담당 인력

라) 분석 교육 및 변화관리

– 창의적 사고 및 문제 해결을 위한 체계적 접근법 숙지

– 데이터 분석기회 발굴 및 과제 정의 방법 이해

– 다양한 빅데이터 분석 기법의 활용

– 빅데이터 개념 및 관련 기술의 습득

Chapter3 – 1. 분석과제 정의

1. 분석 과제 정의

(1) 개요

가) 주요 분석 지연 요소 : 데이터 지연, 분석지연, 의사결정 지연

나) 도입 성공 요소 : Question First 방식 접근, 선택과 집중 (핵심분석 도출) , 자동화된 분석업무 프로세스 내재화 (하위 95%에 대한 5%와 같은 효율 부여)

(2) 분석 기회 발굴

가) 접근 방법 : Top-Down ,Bottom-Up, 경로접근(Path-Finding-Approach), 벤치마킹 접근 방식

나) Top-Down 접근 방식

– 비지니스 모델 이해

. 비지니스 컨택스트 파악 : 시장요인(마켓이슈, 마켓세그먼트, 니즈/수요, 전환비용, 기대수익) , 산업요인(기존 경쟁자, 신규진입자, 대체 상품, 가치사슬, 이해 당사자),

주요 트렌드(기술트렌드, 규제 트렌드, 사회/문화 트렌드, 경제 트렌드), 거시경제 요인(글로벌시장, 자본시장, 원자재, 경제 인프라)

. 고객 니즈 파악 : 기능적 가치, 재무적 가치, 무형의 가치, 감성 가치

. 미충족 니즈 파악 : 경쟁사 선점 영역, 공통 경쟁 영역, 자사 선점 영역, 미충족 고객 니즈

. 경쟁 요인 선택 및 제공 가치 수준 설정

– 비지니스 모델 상세화

. 전략 테마와 실행활동 간 관계 분석 : 활동 체계 지도(Activity Sysyem Map)을 통한 전략 테마 설정

. 비지니스 운영 시나리오 상세화 : 선택(정책, 자산, 거버넌스) , 결과(민감한 결과, 견고한 결과), 이론 (인과지도 [Casual Loop Diagram] , 선택과 결과 지도 )

– 분석 유즈 케이스 정의 단계

. 분석 유즈 케이스 발굴 (CLD 분석) : [업무] 재무 -> [분석 유즈 케이스] 자금시재 예측, 구매 최적화 -> [설명, 효과]

. 분석 유즈 케이스 정의 (이벤트 반응 분석) : 예) 보험금청구 -> 보험청구 심사 -> 수동 심사 -> 자동심사 요청

외부 이벤트 (동사_명사) , 시간 이벤트 (~시간) 으로 정의

. 분석 평가 : 정의된 USE CASE 들 중에 핵심 분석을 발견해야 함 , 평가 기준(중요도, 영향도, 난이도)

다) Bottom-Up 방식

– 프로세스 분류 : (가치사슬, 메가 프로세스, 메이저 프로세스, 프로세스 단계로 구분)

– 프로세스 흐름 분석 : 프로세스 맵을 통한 업무 흐름 표현

– 분석 요건 식별 : 각 프로세스 맵상의 주요 의사 결정 포인트를 식별

– 분석 요건 정의 : 각 의사결정 시점에 무엇을 알아야 의사결정을 할 수 있는지 정리

라) 분석 유즈 케이스 벤치마킹을 통한 발굴 :분야, 업무를 그룹핑하여 밴치 마킹 대상을 쉽게 찾을 수 있도록 함

(3) 분석 기회 구조화

가) 유저 스토리 정의

– 분석에서 발굴한 분석기회(무엇을 결정해야 하는지에 대한 정의) 를 유저 스토리를 통해 명확히 정의한다.

나) 목표 가치 구체화

– 목표 가치를 측정 가능한 지표 형태로 정의하여 관리하여야 한다.

다) 분석 질문 구체화

– 분석 질문 도출

. 연속질문 방식: 연속적인 질문을 통해 답을 도출

. 에이전트(버스 이용자/노선 설계자), 객체/장소(민원 채널/버스앱/지하철/배차특성), 이벤트 관점의 질문(환승)

– 분석 질문 정련 : 1차 도출한 질문 (서브 질문) 을 통해 핵심 질문(예:환승 시스템 개선 방안)에 영향을 주는가

(4) 분석 방안 구체화

가) 의사결정 요소 모형화

– 정의 : 분석 질문 정의 -> 분석 질문별 분석 컨텍스트와 분석 도출 ->[분석 컨택스트 간 상관관계 모형화]

– 표기방식 : 추구하는 가치 <- 의사결정활동 <- 분석 컨택스트

나) 분석 체계 도출

– 컨택스트 단위로 수행할 분석을 정리하여 의사결정을 위한 전체 분석 세트와의 관계 도출

– 예) 만족도 향상 <- 노선 개선 <- 승객 과대 노선 (버스별 시간대별 평균 승객수 분석)

다) 분석 필요 데이터 정의

– [분석대상]-[분석명]-[분석설명]-[필요데이터]-[데이터출처] 와 같은 필요 데이터 리스트 도출

라) 분석 ROI 평가

– 분석 소요 비용과(난이도) 효과에 대한 분석

(5) 분석 활용 시나리오 정의

가) 업무 프로세스의 AS-IS / TO-BE 를 정의 한다.

(6) 분석 정의서 작성

가) 분석 정의서 예시

– 분석명 , 분석정의, 소스데이터, 데이터 입수 난이도, 데이터 입수 사유, 분석 방법, 분석 적용 난이도, 분석 적용 난이 사유 , 분석 주기, 분석 결과 검증 Owner

(7) 전사관점 분석적용 시 고려요소

가) 분석 선순환 구조 맵

– 분석결과에 따른 의사결정이 각 조직별로 어떻게 상충되는지의 여부를 맵을 통해 연관성을 파악, 각 조직의 목적에 부합될 수 있도록 상충되는 부분을 조율

전사 관점에서 최적화 될 수 있도록 함

나) 분석 내재화 프로세스 정의

– 분석 결과가 업무 Process 에 녹아들어 내재화 될 수 있도록 내재화 프로세스를 정의하고 실행한다.

다) 분석 패턴 서비스 아키텍처 정의

– 중복/공통 부분을 전사 관점에서의 공통 서비스로 제공 할 수 있도록 패턴 아키텍처를 정의한다.

Chapter1 – 3. 가치 창조를 위한 데이터 사이언스와 전략 인사이트

3. 가치 창조를 위한 데이터 사이언스와 전략 인사이트

(1) 빅데이터 분석과 전략 인사이트

가) 열풍과 회의론

나) 분석 기반 경영이 도입되지 못하는 이유

– 기존 관행을 따를 뿐 중요한 시도를 하지 않음

– 분석에 따른 결정보다는 직관적인 결정을 더 중요한 재능으로 여긴다

– 분석적 실험에 대한 역량을 갖춘 사람이 없다

– 아이디어 자체 보다는 아이어를 낸 사람에 관심을 두는 경향

다) 빅데이터의 분석의 핵심

– 음성, 텍스트, 로그, 이미지 등 새로운 정보 원천이 주는 기회

– 비지니스 핵심에 대한 객관적이고 종합적인 통찰

– 분석적 방법과 성과에 대한 이해

라) 전략적 통찰이 없는 분석의 함정

– 전략적 통찰과 성과는 정관계가 있다

마) 전략 도출을 위한 가치 기반 분서

– 일차원 적인 분석이 아닌 전략적 Insight 를 가진 가치 분석 필요

(2) 전략 인사이트 도출을 위한 필요 역량

가) 데이터 사이언스

– 데이터로 부터 의미 있는 정보를 추출해 내는 학문

나) 데이터 사이언스 구성 요소

– 구성요소 : Analytics , IT (DB Management .. etc) , 비지니스 분석

– 데이터 사이언 티스트 필요 역량

.Hard Skill : 빅데이터에 대한 이론적 지식, 분석 기술에 대한 숙련

.Soft Skill : 통찰력 있는 분석 (창의적사고, 논리적 비판, 호기심), 설득력 있는 전달, 다분야간 협력(커뮤니케이션)

다) 데이터 사이언스

– 과학과 인문의 교차로 : 데이터 사이언티스트에 요구하는 사고방식과, 비지니스 이슈에 대한 감각, 고객들에 대한 공감 능력 등 인문학적 능력의 강조

라) 인문학적 사고의 특성과 역할

– 요체 : 왜 우리는 여태 이런 식으로 생각했나, 왜 우리는 세상이 그런줄만 알았나? 라는 질문을 던지는 것

– 분석으로 다룰 수 있는 핵심 문제

. 리포팅 : 무슨일이 일어 났는가 ?

. 경고 : 무슨일이 일어나고 있는가?

. 추출 : 무슨일이 일어날 것 인가??

. 모델링 : 어떻게, 왜 일어 났는가?

. 권고 : 차선 행동은 무엇인가 ?

. 예측, 최적화, 시뮬레이션 : 최악 또는 최선의 상황은 무엇인가?

마) 인문학적 통찰력 활용 사례

– 성향적 관점 , 행동적 관점, 상황적 관점

(3) 빅데이터 그리고 데이터 사이언스의 미래

가) 빅데이터의 시대 : 기업에 비용절감, 시간절약, 매출증대, 고객서비스 향상, 신규 비지니스 창출, 내부 의사결정 지원 등에 가치

나) 가치 패러다임의 변화

다) 데이터 사이언스의 한계와 인문학

Chapter1 – 2. 데이터의 가치와 미래

2. 데이터의 가치와 미래

(1) 빅데이터의 이해

가) 정의 : 규모, 형태, 속도

나) 출현 배경 : 데이터의 축적, 데이터 관련 기술 발전(저장, 클라우드, 모바일) , 데이터 활용 과학 확산

다) 빅데이터의 기능

– 철, 원유, 렌즈 (예:Ngram), 플랫폼(예 : FaceBook)

라) 빅데이터가 만드는 변화

– 사전처리 -> 사후처리

– 표본조사 -> 전수조사

– 질 -> 양

– 인과관계 -> 상관관계

(2) 빅데이터의 가치와 영향

가) 빅데이터의 가치

– 가치 산정이 어려운 이유 : 다목적 용도로 데이터가 개발되고 활용 됨 , 새로운 가치를 창출 (기존의 없던 분야) , 분석 기술 발전 (기존 분석 하지 못하던 형태의 데이터 분석 가능 ,텍스트 마이닝)

– 가치를 만들어 내는 방식

.투명성 제고로 연구개발 및 관리 효율성 제고

.시뮬레이션을 통한 수요 포착 및 주요 변수 탐색으로 경쟁력 강화

.고객 세분화 및 맞춤 서비스 제공

.알고리즘을 활용한 의사 결정 보고 혹은 대체

.비지니스 모델과 제품 서비스 혁신

(3) 비지니스 모델

가) 활용 사례

– 기업 : 구글 PageRank 검색 시스템, 월마트 상품진열

– 정부 : 실시간 교통정보, 기후, 지질활동, 소방, SNS, 통화 기록등 분석

– 개인 : 정치인, 가수의 Target 분석 활동 전략 수립

나) 활용 기본 테크닉

– 연관규칙 학습 : 예) 커피를 구매하는 사람이 탄산음료를 더 많이 사는가? (연관 분석)

– 유형분석 : 예) 온라인 수강생들의 특성에 따른 고객 분류 (Clustering 분석)

– 유전 알고리즘 : 예) 최적화, 응급실에서 어떻게 의사를 배치하는 것이 효율적인가? (Linear Prgorman 등 최적화)

– 기계학습 : 예) 기존의 시청기록을 바탕으로 시청자가 현재 보유 영화중 어떤 영화를 보고 싶어할지 예측 (Machine Learing)

– 회귀분석 : 예) 물건의 가격이 올라가면 판매량에 어떤 영향을 주는가? (선형회귀, 다중선형회귀, 다항선형회귀, 비선형회귀 분석 등)

– 감정분석 : 예) 새로운 환불 정책에 대한 고객의 평가는? (Text Mining 을 통한 긍정도 분석)

– 소셜 네트워크 분석 : 예) Influencer 는 누구인가?

(4) 위치 요인 및 통제 방안

가) 위기요인

– 사생활 침해, 책임원칙훼손, 데이터 오용

나) 통제방안

– 동의에서 책임으로, 결과 기반 책임 원칙 고수, 알고리즘 접근 허용

(5) 미래의 빅데이터

가) 데이터 : 모든 것의 데이터화

나) 기술 : 진화하는 알고리즘, 인공지능

다) 인력 : 데이터 사이언티스트

라) 데이터 사이언티스트 필요 역량

– SOFT SKILL : 통찰력 있는 분석 (창의적 사고, 호기심, 논리적 비판), 설득력 있는 전달, 다분야간 협력

– HARD SKILL : 빅데이터에 대한 이론적 지식, 빅데이터 분석 기술의 숙련

Chapter1 – 1. 데이터의 이해

1. 데이터의 이해

(1) 데이터와 정보

가) 데이터 유형 : 정성적 데이터 , 정량적 데이터

나) 암묵지와 형식지

– 암묵지 (공통화, 내면화) -> 형식지(표출화, 연결화)

다) DIKW 피라미드

– Data > Info > Knowledge > Wisdom

(2) 데이터 베이스

가) 정의 : 문자, 기호, 음성, 화상, 영상 등 관련된 다수의 코텐츠를 정보 처리 및 정보 통신 기기에 의하여 체계적으로 수집,축적하여 다양한 용도와

방법으로 이용할 수 있도록 정리한 정보의 집합체

나) 특징 : 통합된 데이터, 저장된 데이터, 공용 데이터, 변화하는 데이터

(3) 데이터베이스 활용

가) 관련 용어

– CRM : Cunsumer Relationship Management

– SCM : Syupply Chain Management

– ERP : Enterprise Resource Planning

– BI : Business Intelligence

나) 기업

– 제조부분 , 금융부문, 유통부문

다) 사회기반

– 물류(CVO, 화물운송정보, EDI, 항만운영정보, 철도운영정보, 항공정보.. 등) , 지리(NGIS 국가지리정보 체계) , 교통(ITS , 지능형교통시스템) , 의료 (의료 EDI) , 교육

[DL4J] Complex Network

[목차]

(0) 환경 설정 : DL4J 개발 환경 설정 및 예제 설명 (完)

(1) Data Iterator : 사용하고자 하는 데이터를 DL4J 에서 사용가능한 형태로 변환하는 작업 개발 필요

• Canova: The Rosetta Stone of Vectorization

• Spark

• Hadoop

• JDBC

Text ,CSV (完)

• Image (完)

• Sound

• Video

(2) Net : 사용할 신경망의 형태가 어떤 것이 있는지 이해하고 선택, 활용 할 수 있어야 함
• Restricted Boltzmann machines (完)
• Convolutional nets (完)
• Recursive autoencoders (完)
• Recurrent nets: Long Short-Term Memory (LSTM) (including bi-directional LSTMs)
• Deep-belief networks
• Denoising and Stacked Denoising autoencoders
• Deep autoencoders

(3) Activation : Weight + Bias 결과 다음 적용할 함수 결정 (예 : SigMoid : Chap1 에서 설명한 것)

• ReLU (完)
• Leaky ReLU
• Tanh
• Sigmoid
• Hard Tanh
• Softmax
• Identity
• ELU: Exponential Linear Units
• Softsign
• Softplus

(4) Loss&Objective Functions : 일부 데이터를 누락함으로써 더 Robust 한 모델을 만들 수 있다.
• Reconstruction entropy
• Squared loss
• Mean squared error
• Multi-class cross entropy for classification
• Negative log likelihood
• RMSE_XENT

(5) Hyperparameters : 모든 Layer 에 공통적으로 적용되는 파라메터로 숙지 필요

• Dropout (random ommission of feature detectors to prevent overfitting)
• Sparsity (force activations of sparse/rare inputs)
• Adagrad (feature-specific learning-rate optimization)
• L1 and L2 regularization (weight decay)
• Weight transforms (useful for deep autoencoders)
• Probability distribution manipulation for initial weight generation
• Gradient normalization and clipping

(6) Event Listener & Result Anal : 분석 중간 발생하는 이벤트를 받아서 처리 및 결과에 대한 검증 및 비지니스 연동 등

(7) 모델 저장 및 로딩

• 매번 모든 데이터를 로딩하여 학습 시키는 것이 아니라, 모델 자체를 저장하고, 새로 발생하는 데이터만 학습 시킴으로써,

모델의 즉각적인 학습효과와 대량 데이터 처리에 따른 Performacne 문제를 해결 할수 있을 것으로 보임

http://deeplearning4j.org/modelpersistence

(8) Grapth 의 종류

MultiLayerNetwork

ComputationGraph

1. DL4J 제공 Grapth 의 종류와 차이

(1) MultiLayerNetwork : 지금까지의 예제에서 일반적으로 사용했던 형태로 어느정도 정해진 틀을 손쉽게 사용할 수 있도록 제공하는 형태

(2) ComputationGraph : 더 자유롭게 변형이 가능한 형태로 저금 더 정의가 복잡하지만 (1) 에서 제공하는 기능 전체 수용가능하며, 추가적인 변형 가능

– Multiple network input arrays : 복수의 Input 을 받는 node 설계

– Multiple network outputs (including mixed classification/regression architectures) : Out put 값을 그 다음 Layer 의 복수의 Node 로 전송

– Layers connected to other layers using a directed acyclic graph connection structure (instead of just a stack of layers) : 별도의 직접 연결 경로 지정

※ 위 3가지 Case 를 구현하는 방법은 아래서 다루도록 함

2. ComputationGrapth 의 기본 구성

(1) LayerVertex

MultiLayerNetwork를 사용할때 layer(1, DenseLayer.Builder() …. 와 같이 정의했던 것과 같은 맥락으로 LayerVertex 에서는 아래와 같은 두 가지 방법으로 정의

.addLayer(레이어명,레이어 클래스,인풋값 Label)

.addLayer(레이어명,레이어 클래스,전처리 클래스, 인풋값 Label)

EX) .addLayer(“L1”, new GravesLSTM.Builder().nIn(5).nOut(5).build(), “input”)

※ 결국 MultiLayerNetwork 와 동일한 형태이지만, Layer 와 Layer 간의 관계를 좀더 자유롭게 정의할 수 있게 되겠다~

아래 예제는 .addLayer(“L2”,new RnnOutputLayer.Builder().nIn(5+5).nOut(5).build(), “input”, “L1”) 와 같이 정의하여

OUTPUT 을 두군데로 연결하도록 하는 것이다.

K-052

[예제]

ComputationGraphConfiguration conf = new NeuralNetConfiguration.Builder()
.learningRate(0.01)
.graphBuilder()
.addInputs("input") //can use any label for this
.addLayer("L1", new GravesLSTM.Builder().nIn(5).nOut(5).build(), "input")
.addLayer("L2",new RnnOutputLayer.Builder().nIn(5+5).nOut(5).build(), "input", "L1")
.setOutputs("L2")//We need to specify the network outputs and their order
.build();

ComputationGraph net = new ComputationGraph(conf);
net.init();

 

(2) InputVertex

MultiLayerNetwork에서는 INDArrays 에 정의된 형태 그대로 신경망의 데이터로 사용한다

반면에 ComputationGraph 에서는 원하는 데이터 항목명 및 순서를 정의할 수 있다

.addInputs(String…) 형태로 사용 INDArrays 에서 사용하는 Label 명을 넣으면 됨

(3) ElementWiseVertex

MultiLayerNetwork에서는 불가능 했던 행위들로 한개 이상의 Activation 을 받아서 누락시키거나, 더하거나 하는 행위를 하는 Vertex

인풋에 사용되는 Activation들의 사이즈는 모두 같아야 하며, 인풋과 아웃풋의 사이즈도 같아야 한다.

[예제]

 public void testBasicIrisWithElementWiseNode(){

ElementWiseVertex.Op[] ops = new ElementWiseVertex.Op[]{ElementWiseVertex.Op.Add, ElementWiseVertex.Op.Subtract};

for( ElementWiseVertex.Op op : ops ) {

Nd4j.getRandom().setSeed(12345);
ComputationGraphConfiguration conf = new NeuralNetConfiguration.Builder()
.seed(12345)
.optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT)
.weightInit(WeightInit.DISTRIBUTION).dist(new NormalDistribution(0, 1))
.updater(Updater.NONE).learningRate(1.0)
.graphBuilder()
.addInputs("input")
.addLayer("l1", new DenseLayer.Builder().nIn(4).nOut(5).activation("tanh").build(), "input")
.addLayer("l2", new DenseLayer.Builder().nIn(4).nOut(5).activation("sigmoid").build(), "input")
.addVertex("elementwise", new ElementWiseVertex(op), "l1", "l2")
.addLayer("outputLayer", new OutputLayer.Builder().lossFunction(LossFunctions.LossFunction.MCXENT)
.activation("softmax").nIn(5).nOut(3).build(), "elementwise")
.setOutputs("outputLayer")
.pretrain(false).backprop(true)
.build();

ComputationGraph graph = new ComputationGraph(conf);
graph.init();

int numParams = (4 * 5 + 5) + (4 * 5 + 5) + (5 * 3 + 3);
assertEquals(numParams, graph.numParams());

Nd4j.getRandom().setSeed(12345);
int nParams = graph.numParams();
INDArray newParams = Nd4j.rand(1, nParams);
graph.setParams(newParams);

DataSet ds = new IrisDataSetIterator(150, 150).next();
INDArray min = ds.getFeatureMatrix().min(0);
INDArray max = ds.getFeatureMatrix().max(0);
ds.getFeatureMatrix().subiRowVector(min).diviRowVector(max.sub(min));
INDArray input = ds.getFeatureMatrix();
INDArray labels = ds.getLabels();

if (PRINT_RESULTS) {
System.out.println("testBasicIrisWithElementWiseVertex(op=" + op + ")");
for (int j = 0; j < graph.getNumLayers(); j++)
System.out.println("Layer " + j + " # params: " + graph.getLayer(j).numParams());
}

boolean gradOK = GradientCheckUtil.checkGradients(graph, DEFAULT_EPS, DEFAULT_MAX_REL_ERROR,
PRINT_RESULTS, RETURN_ON_FIRST_FAILURE, new INDArray[]{input}, new INDArray[]{labels});

String msg = "testBasicIrisWithElementWiseVertex(op=" + op + ")";
assertTrue(msg, gradOK);
}
}

 

(4) MergeVertex

MultiLayerNetwork에서는 불가능 했던 행위들로 복수개의 Activation 을 Merging 하는 행위를 수행한다.

예를 들어 두개의 Activation 이 각각 IN(3) , OUT(5) 라고 하면 MergeVertex 는 IN(10) , OUT(3) 이 된다.

K-051

[예제]

ComputationGraphConfiguration conf = new NeuralNetConfiguration.Builder()
.learningRate(0.01)
.graphBuilder()
.addInputs("input1", "input2")
.addLayer("L1", new DenseLayer.Builder().nIn(3).nOut(4).build(), "input1")
.addLayer("L2", new DenseLayer.Builder().nIn(3).nOut(4).build(), "input2")
.addVertex("merge", new MergeVertex(), "L1", "L2")
.addLayer("out", new OutputLayer.Builder().nIn(4+4).nOut(3).build(), "merge")
.setOutputs("out")
.build();

 

(5) SubsetVertex

MultiLayerNetwork에서는 불가능 했던 행위들로 다른 Layer 의 일부를 추출하여 별도의 Layer 로 만들 수 있다.

.addVertex("subset1", new SubsetVertex(0,4), "layer1")

 

(6) Multi-Task Learning

MultiLayerNetwork에서와 같이 최종적인 Output Layer 에서는 복수개의 결과를 갖을 수 있다. 그 예제는 아래와 같다.

K-053

[예제]

ComputationGraphConfiguration conf = new NeuralNetConfiguration.Builder()
.learningRate(0.01)
.graphBuilder()
.addInputs("input")
.addLayer("L1", new DenseLayer.Builder().nIn(3).nOut(4).build(), "input")
.addLayer("out1", new OutputLayer.Builder()
.lossFunction(LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD)
.nIn(4).nOut(3).build(), "L1")
.addLayer("out2", new OutputLayer.Builder()
.lossFunction(LossFunctions.LossFunction.MSE)
.nIn(4).nOut(2).build(), "L1")
.setOutputs("out1","out2")
.build();

 

(7) 데이터의 학습

학습용 데이터 구성시 하나의 Input 과 하나의 Output 값을 갖는 Activation 을 정의하는 것이라면 MultiLayerNetwork에서 사용한

데이터셋을 그대로 사용할 수 있다. 그러나, 복수의 인폿, 아웃풋을 갖는 Activation 을 설계하고자 한다면 별도의 과정이 필요하다.

int numLinesToSkip = 0;
String fileDelimiter = ",";
RecordReader rr = new CSVRecordReader(numLinesToSkip,fileDelimiter);
String csvPath = "/path/to/my/file.csv";
rr.initialize(new FileSplit(new File(csvPath)));

int batchSize = 4;
MultiDataSetIterator iterator = new RecordReaderMultiDataSetIterator.Builder(batchSize)
.addReader("myReader",rr)
.addInput("myReader",0,2) //Input: columns 0 to 2 inclusive
.addOutput("myReader",3,4) //Output: columns 3 to 4 inclusive
.build();