1 데이터 마이닝 개요

 

데이터 마이닝 : 데이터 베이스에서의 지식 발견

거대한 양의 데이터 속에서 쉽게 드러나지 않는 유용한 정보를 찾아내는 과정 (창문-도둑)

원천 데이터 기반으로 감춰진 지식, 기대못한 경향, 새로운 규칙 발견 의사결정의 유용한 정보 활용

= 지식추출, 정보수확, 정보 고고학, 데이터 패턴 프로세싱

 

1. 분류

새롭게 나타난 현상을 검토하여 기존의 분류, 정의된 집합에 배정하는

정의된 분류기분과 분류 되어진 검증 집합에 의해 완성 다른 현상들 분류 있음

의사결정나무, memory-based reasoning, link analysis

 

2. 추정

연속된 변수 값을 추정, 주어진 입력 데이터를 사용하여 알려지지 않은 결과이 값을 추정

부모가 있는 어린이의 , 가정구성원의 수입, 고객의 평생가치

신경망 모형

 

3. 예측

미래의 양상을 예측하거나 미래의 값을 추정하는 , 정확성을 있는 방법은 기다리고 지켜보는

입력된 데이터의 성격에 따라 기술의 사용이 달라짐

장바구니 분석(연관분석), memory-based reasoning, 의사결정나무, 신경망

 

4. 연관분석

같이 팔리는 물건과 같이 아이템의 연관성을 파악하는 분석

소매점 배열계획, 카탈로그 배열 교차판매, 공격적 판촉행사 등의 마케팅 계획

장바구니 분석 결과

 

5. 군집

이질적인 모집단을 동질성을 지닌 그룹 별로 세분화하는 것을 의미

군집은 선분류의 기준을 의존 하지 않음(분류와의 차이점)

데이터 마이닝, 모델링의 준비단계 → 고객 세분화

 

6. 기술

데이터가 가진 의미를 단순하게 기술하는 , 설명하는 , 설명에 대한 답을 찾아낼 있음

연구주제 제공, 장바구니 분석 규칙 기술

 

데이터 마이닝 수행 5단계

. 목적정의

데이터 마이닝의 목적을 정의 하는 단계, 이해관계자가 모두 동의하고 이해함에 따라 가능, 전문가 참여

. 데이터 준비

마이닝 수행에 필요한 데이터를 수집하는 단계, IT부서와 사전 협의 필요(접근 부하 문제)

데이터 정제를 통해 품질 보장, 보강작업 거쳐 데이터 양을 충분히 확보

. 데이터 가공

모델링 목적에 따라 목적 변수를 정의하고 필요한 데이터를 데이터 마이닝 소프트웨어 적용하도록 가공

적절한 데이터 가공 충분한 CPU 메모리, 디스크 공간 개발 환경의 구축이 선행

. 데이터마이닝 기법의 적용

목적하는 정보를 추출, 기법은 1단계에서 미리 결정해야함, 데이터 분석 전문가의 전문성 필요

목적이 무엇이고, 어떤 데이터를 갖고 있고, 산출되는 정보가 무엇인가에 따른 적절한 소프트웨어 기법 선정

. 검증

테스트 마케팅이나 과거 데이터 활용 (차이점 구분해야함)

자동화 방안, IT 부서와의 협의 → 결과를 업무에 적용 보고서 작성을 통한 기대효과 보고

 

2 분류 분석

 

분류분석 : 반응변수(종속변수) 알려진 다변량 자료를 이용하여 모형 구축, 새로운 자료에 대한 예측, 분류 수행

- 반응변수가 범주형이면 새로운 자료에 대한 분류가 목적

- 반응변수가 연속형이면 값을 예측하는 것이 목적

로지스틱 회귀모형, 신경망모형, 의사결정나무모형, 앙상블모형, 규칙기반분류, 사례기반분류, 인접이웃분류모형

베이즈분류모형, 서포트벡터기계, 유전자 알고리즘 등등

 

1. 로지스틱 회귀모형

반응변수가 범주형

새로운 설명변수(예측변수) 값이 주어질 반응 변수의 범주에 속할 확률이 얼마 인지 추정(예측 모형)

추정 확률을 기준치에 따라 분류하는 목적으로 사용(분류모형)

모형의 적합을 통해 추정된 확률을 사후확률이라 부름

 

오즈(odds)관점에서 해석할 있는 장점 : 1단위 증가 때마다 성공의 오즈가 증가하는 나타냄

 

1) 설명 변수가 한 개인 경우 회귀계수 부호에 따라  양수면 S 또는 음수면 S 모양을 가진다.

2) 누적분포함수로 성공의 확률을 설명(추정) 있음

프로빗 : 표준정규분포의 누적함수를 성공의 확률로 모형화한 유사한 모형

 

기준값에 따라서 집단을 나누게

분류 기준값의 결정은 사전정보 또는 손실함수 사용하거나 정분류율, 민감도, 특이도 동시 고려함

 

glm()함수 : 예측 변수가 1

glm(반응변수 ~ 설명변수, 데이터세트, family=binomial)

 

> a <- subset(iris, Species=="setosa" | Species =="versicolor")
> a$Species<-factor(a$Species)
> b<-glm(Species~Sepal.Length, data=a, family = binomial)
> summary(b)

Call:
glm(formula = Species ~ Sepal.Length, family = binomial, data = a)

Deviance Residuals:
     Min        1Q    Median        3Q       Max 
-2.05501  -0.47395  -0.02829   0.39788   2.32915 

Coefficients:
             Estimate Std. Error z value Pr(>|z|)   
(Intercept)   -27.831      5.434  -5.122 3.02e-07 ***
Sepal.Length    5.140      1.007   5.107 3.28e-07 ***
---
Signif. codes: 
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

Null deviance: 138.629  on 99  degrees of freedom
Residual deviance:  64.211  on 98  degrees of freedom
AIC: 68.211

Number of Fisher Scoring iterations: 6

 

→ p-value 값이 0 가까움으로 매우 유의한 변수,  Sepal.Length 1단위 증가에 다른 오즈는 170

> exp(coef(b)["Sepal.Length"])
Sepal.Length
    170.7732

→ Null deviance 절편만 포함하는 모형의 완전 모형으로의 이탈도 귀무가설 성립에 따른 모형

→ Residual deviance 예측변수가 추가된 적합 모형의 이탈도

> coef(b)
 (Intercept) Sepal.Length
  -27.831451     5.140336

> confint(b, parm="Sepal.Length") # 회귀계수의 신뢰구간
Waiting for profiling to be done...
   2.5 %   97.5 %
3.421613 7.415508
> exp(confint(b, parm="Sepal.Length")) #오즈의 신뢰구간
Waiting for profiling to be done...
     2.5 %     97.5 %
  30.61878 1661.55385

> fitted(b)[c(1:5, 96:100)] #적합 결과 확인
         1          2          3          4
0.16579367 0.06637193 0.02479825 0.01498061
         5         96         97         98
0.10623680 0.81282396 0.81282396 0.98268360
        99        100
0.16579367 0.81282396

> predict(b, newdata=a[c(1,50,51,100),], type="response") #예측값
        1        50        51       100
0.1657937 0.1062368 0.9997116 0.8128240

> cdplot(Species~Sepal.Length, data=a) #범주형 변수의 조건부 분포, 커짐에 따라 versicolor 확률 증가

 

다중회귀분석

> attach(mtcars)
> glm.vs <- glm(vs~mpg+am, data=mtcars, family = binomial)
#vs 반응변수, mpg, am 예측변수
> summary(glm.vs)

Call:
glm(formula = vs ~ mpg + am, family = binomial, data = mtcars)

Deviance Residuals:
     Min        1Q    Median        3Q       Max 
-2.05888  -0.44544  -0.08765   0.33335   1.68405 

Coefficients:
            Estimate Std. Error z value Pr(>|z|)  
(Intercept) -12.7051     4.6252  -2.747  0.00602 **
mpg           0.6809     0.2524   2.698  0.00697 **
am           -3.0073     1.5995  -1.880  0.06009 .
---
Signif. codes: 
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

Null deviance: 43.860  on 31  degrees of freedom
Residual deviance: 20.646  on 29  degrees of freedom
AIC: 26.646

Number of Fisher Scoring iterations: 6

 

→ mpg 단위 증가함에 vs 1 오즈는 1.98 증가 98%증가

> exp(0.6809)
[1] 1.975655

→ am 단위 증가함에 vs 1 오즈는  0.05 증가, mpg 비해 95% 감소

> exp(-3.0073)
[1] 0.04942495

 

> anova(glm.vs, test="Chisq") #모형이 적합이 단계별로 이탈도의 감소량과 유의성 검정 결과 제시
Analysis of Deviance Table

Model: binomial, link: logit

Response: vs

Terms added sequentially (first to last)

Df Deviance Resid. Df Resid. Dev  Pr(>Chi)   
NULL                    31     43.860             
mpg   1   18.327        30     25.533 1.861e-05 ***
am    1    4.887        29     20.646   0.02706 * 
---
Signif. codes: 
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

> 1-pchisq(18.327, 1)
[1] 1.860515e-05
> 1-pchisq(4.887, 1)
[1] 0.02705967

 

 

2. 신경망 모형

인공신경망 동물의 뇌신경계 모방하여 분류, 예측 위해 만들어진 모형

입력은 스냅스에 해당, 신경돌기 처럼 개별신호의 가중도에 따라 가중되며, 활성함수는 인공신경망의 출력 계산

많은 데이터에 대한 학습을 거쳐 오차가 작아지는 방향으로 가중치 조정

 

단층신경망 = 퍼셉트론

입력층이 직접 출력되는, 은닉층이 없는 단층신경망

 


- z값에 대한 활성함수 적용되어 y(x) 계산

- w : 가중치, 의사결정 경계의 방향 나타내는 모수

-  : 절편, 의사결정 경계의 위치를 결정하는 모수

가중치와 절편은 학습을 통해 오차제곱합이 최소가 되는 방향으로 갱신

최종 목표값은 y=y(x) z 대해 비선형 활성함수를 적용하여 구해짐

- 활성함수 종류

부호 또는 threshold함수, 계단함수, 시그모이드함수, Sofrmax함수, tanh함수, 가우스함수

 

nnet패키지의 nnet함수 이용

초기값을 정해지주지 않으면 결과가 항상 변경됨

시각화를 위한 plot.nnet() 함수 사용 - url소스 다운로드/3 패키지 인스톨(clusterGeneration, scales, reshape)

선의 굵기는 연결선의 가중치의 비례함

 

neuralnet패키지의 neuralrnet 함수 이용

역전파 알고리즘 통해 모형을 수행

일반 가중치는 다른 모든 공변량의 의존함으로 자료의 국소적인 기여도

특정 공변향의 효과가 선형적인지 여부 파악,

작은 분산은 선형효과 제시, 큰분산은 공간상 변화가 심한 -선형적인 효과 나타냄

분산을 가진 입력변수들로만 신경망 모형에 적합, 선형적인 것은 결과의 영향을 미치지 않음

 

compute( ) 함수 : 뉴런의 출력값 계산

confidence.interval() 함수 : 가중치들에 대한 신뢰구간

정오분류표 확인하기

 

다층신경망 = 다층퍼셉트론

은닉층을 가지고 있고 입력베터 x 출력벡터y(x) 맵핑하는

다층신경망의 가중치는 학습과정에서의 오차의 역전파 알고리즘을 통해 갱신


 

은닉수 결정에 따른 고려사항

- 다층신경망은 단층신경망에 비해 훈련이 어렵다

- 시그모이드 활성함수를 가지는 2 층의 네트워크(1 은닉층) 임의의 의사결정 경계를 모형화 할수있다.

 

층의 노드 수의 결정에 따른 고려사항

- 출력층 노드의 수는 출력 범주의 수로 결정한다.

- 입력의 수는 입력 차원의 수로 결정한다

- 은닉층 노드의 수는 너무 적으면 네트워크가 복잡한 의사결정 경계를 만들수 없고,

  너무 많으면 네트워크의 일반화가 어렵다.

 

 

장점

- 변수의 수가 많거나 , 출력 변수 간에 복잡한 비선형 관계가 존재할 유용

- 잡음에 대해서도 민감하게 반응하지 않음

단점

- 결과에 대한 해석이 쉽지 않음

- 은닉층의 수와 은닉노드 수의 결정이 어려움

- 초기값에 따라 전역해가 아닌 지역해로 수렴 가능

- 모형이 복잡하면 훈련과정에 시간이 많이 소요 있음

 

3. 의사결정나무 모형

 

의사결정나무란?

전체 자료를 개의 소집단으로 분류하거나 예측을 수행하는 분석방법

상위 하위로 나무 구조 형성하는데 단계마다 분류변수와 분류기준값의 선택이 중요

상위 노드 : 분류변수, 분류기준값이 기준에 의해 분기됨

하위 노드 : 노드내는 동질성이 노드간에는 이질성이 커지도록 선택

과대적합(과소적합) 되지 않도록 합리적인 기준에 의해 적당히 조절

 

개념

뿌리마디 : 맨위의 마디, 분류(예측)대상이 되는 모든 자료의 집단

상위마디 : 부모마디

하위마디 : 자식마디

최종마디 : 이상 분기되지 않는 마디

가지 분할 : 나무 가지를 생성하는 과정

가지치기 : 생성된 가지를 잘라내어 모형을 단순화 하는 과정

 

분류변수과 분류기준값 선택방법, 불확실성에 대한 측정지표 :

목표변수가 이산형 분류나무

- 카이제곱 통계량의 p- : 값이 작을 수록 노드 내의 이질성, 불확실성이 , 값이 커지는 방향 수행

- 지니계수, 엔트로피 지수 : 값이 클수록 노드 내의 이질성이 , 값이 작아지는 방향 수행

지니계수가 클수록 이질적이며, 순수도가 낮다고

 

목표변수가 연속형 회귀나무

- F-통계량의 p- : 값이 클수록 오차의 변동에 비해 처리의 변동이 , 자식 노드간이 이질적임,

처리변동이 커지는 방향, p-값은 작아지는 방향으로 수행

- 분산의 감소량 : 최대화 되는 방향으로 가지분할 수행

 

분석과정

1단계 : 목표변수와 관계 있는 설명변수를 선택

2단계 : 분석목적과 자료구조에 따라 적절한 분리기준과 정지규칙을 정하여 의사결정나무 생성

3단계 : 부적절한 나뭇가지는 제거 : 가지치기

4단계 : 이익, 위험, 비용 등을 고려한 모형평가

5단계 : 분류 예측

 

알고리즘과 분류 기분의 선택법

 

이산형 목표변수

연속형 목표변수

CHAID(다지분할)

카이제곱 통계량

ANOVA F-통계량

CART(이진분할)

지니지수

분산감소량

C4.5

엔트로피지수

 

 

rpart 패키지의 rpart( ) 함수 이용

rpart.plot 이용하여 의사결정나무 모형 시각화 가능

 

party 패키지의 ctree() 함수 이용

 

장점

- 구조가 단순하고 해석이 용이

- 유용한 입력변수의 파악과 예측 변수간의 상호작용

- 비선형을 고려한 분석 수행

- 선형성, 정규성, 등분산성 등의 수학적 가정이 불필요한 비모수적 모형

단점

- 분류기준값의 경계선 근방의 자료값에 대해서는 오차가 있음(비연속성)

- 예측변수의 효과를 파악하기 어려움

- 새로운 자료에 대한 예측이 불안정

 

사용 예시

시장조사, 광고조사, 의학연구, 품질관리,

고객 타겟팅, 고객 신용점수화, 캠페인 반응 분석, 고객행동예측, 고객세분화

 

4. 앙상블 모형

여러 개의 분류모형에 의한 결과를 종합적으로 분류하여 정확도를 높이는 방법

적절한 표본추출법으로 데이터에서 여러 훈련용 데이터 집합을 만들고

각각의 데이터 집합에서 하나의 분류기를 만들어 앙상블하는 기법

 

1) 배깅

bootstrap aggregation 준말

데이터 집합으로부터 크기가 같은 표본을 여러 단순 임의 복원추출하여

표본(붓스트랩 표본) 대한 분류기를 생성 결과를 앙상블 하는 방법

반복추출방법 : 같은 데이터가 표본에 여러 추출 가능, 어떤 데이터는 아에 추출 안됨

 

adabag 패키지의 bagging 함수

> iris.bagging <- bagging(Species~., data=iris, mfinal = 10)
> iris.bagging$importance
Petal.Length  Petal.Width Sepal.Length  Sepal.Width
    58.27875     41.72125      0.00000      0.00000

 

2) 부스팅

붓스트랩 표본을 구성하는 재표본 과정에서 자료에 동일한 확률 부여하지 않음

분류가 잘못된 데이터에 가중을 주어 표본을 추출

표본 추출하여 분류기 생성 결과에 대한 데이터 추출 확률 조정 표본 재추출

아다부스팅 알고리즘

 

adabag 패키지의 boosting함수

> boo.adabag <- boosting(Species~., data=iris, boos=TRUE, mfinal=10)
> boo.adabag$importance
Petal.Length  Petal.Width Sepal.Length  Sepal.Width
   57.975148    26.183796     3.559308    12.281748

분류의 정확도가 높아짐, 오분류율(error.rpart) 0 값을

ada 패키지의 ada() 함수

- plot() : 오차와 일치도를 나타내는 카파 계수, 훈련용, 검증용 자료 둘다 보여줌

- varplot() : 변수의 중요도

- pairs() : 예측변수의 조합별, maxvar=옵션 통해 변수의 지정 가능

 

 

3) 랜덤포레스트

배깅의 개념과 feature(변수) 임의선택(랜덤과정) 결합

원자료에서 붓스트랩샘플 추출 샘플에 대한 트리 형성 최적분할이 아닌 예측변수 임의 추출

추출된 변수 내에서 최적의 분할을 만들어 나감

새로운 자료에 대한 예측은 분류의 경우 다수결, 회귀의 경우는 평균을 취하는 방법

ploidy패키지에 randomForest() 함수

정오분류표과 함께 오류율에 대한 OOB(out-of-bag)추정치 제공하여 검증 실시

 

importance()와 varlmpPlot()로 변수의 중요성 확인 가능

- 변수로 분할이 일어날 불순도의 감소가 얼마나 일어나는지 나타내는 (불순도 낮음, 순수도 증가)

- 지니계수는 노드의 불순도를 나타내는

- 회귀의 경우는 잔차제곱합

 

party패키기의 cforest()함수

 

5. 모형평가

분류분석 모형 평가 : 예측, 분류를 위해 구축된 모형이 임의의 모형보다 우수한 성과를 보이는지

고려된 서로 다른 모형 어느것이 가장 우수한지 등을 비교

데이터 마이닝 목적, 데이터 특성에 따라 가장 적합한 모형을 선택하기 위한 성과 평가 기준 필요

 

모형평가 기준

- 일반화의 가능성 : 같은 모집단 내의 다른 데이터에 적용해도 안정적인 결과를 제공하는

- 효율성 : 얼마나 효과적으로 구축되었는지, 적은 입력변수를 필요로 할수록 효율성 높음

- 예측과 분류의 정확성 : 모형의 정확성 측면 평가, 실제 문제를 적용했을 정확한 결과 내야함

 

전체 자료(원천데이터)

- 훈련용 자료

- 검증용 자료

: 모형의 과적합화 문제 해결하기 위한 단계, 잘못된 가설 2 오류 발생 방지

 

- 홀드아웃방법 : 랜덤하게 분류로 분리 교차검증 실시(70%, 30%)

sample( ) 함수 사용


 

- 교차검증 : 반복적으로 성과 측정, 결과 평균한 것으로 분류분석 모형 평가 방법

k-fold 교차검증 : 전체 데이터를 사이즈가 동일한 k 하부 집합 나누고 k 검증자료로

나머지 k-1개를 훈련용 자료로 k 반복 측정하고 각각이 평균 값을 최종평가


 

- 붓스트랩 : 평가를 반복한다는 측면은 교차검증과 유사하나 훈련용 자료를 반복 재선정함

관측치를 한번 이상 훈련용 자료로 사용하는 복원 추출법에 기반함

0.632 붓스트랩 : d개의 관측치, 선정될 확률 1/d, d 반복할 선정되지 않을 확률 (1-1/d)/d

d 크다고 가정할 때의 확률은 e-1=0.368, 36.8% 관측치 훈련용 집합으로 선정불가

나머지 63.2% 관측치 훈련자료로 사용된다, 전체양이 크지 않은 경우 적합

 

분류모형평가를 위한 범주형 변수에 사용되는 평가지표

 

1) 오분류표

목표변수의 실제범주와 모형에 의해 예측된 분류범주 사이의 관계

 

예측치 TRUE(p)

예측치 FALSE(n)

합계

실제값 TRUE(t)

TP

FN

P

실제값 FALSE(f)

FP

TN

N

합계

P'

N'

P+N

 

- 정분류율 : 전체관측치 실제값과 예측치가 일치하는 정도, 분포가 균형을 이룰 효과적이 평가지표


- 오분류율 : 전체 과측치 실제값과 예측치가 다른 정도, 1-accuracy


대부분의 분석은 대상이 소수 집단에 대한 예측 실패 비용이 다수집단에 대해 크다

범주불균형의 문제 : 중요한 분류 범주만 다룸

- 민감도 : 실제값이 TRUE 관측치 예측치가 적중한 정도


- 특이도 : 실제값이 FALSE 관측치 예측치가 적중한 정도

 

- 정확도 : TRUE 예측한 관측치 실제값이 TRUE 정도


- 재현율 : 실제값이 TRUE 관측치 예측치가 적중한 정도, 모형의 완정성을 평가함, 민감도와 동일


정확도가 높아지면 재현율이 낮아지는 가능성이 높은 관계, 보완을 위해 필요한 F1, 

- F1지표 : 정확도와 재현율의 조화평균, 같은 가중치 부여하여 평균하게

- 지표 : 베타는 양수로 베타 값만큼 재현율에 가중치를 주어 평균

 재현율에 2 가중치,   정확도에 2 가중치

 

caret 패키지의 confusionMatrix() 함수 사용, e1071 명령어 사용

모형 어떤 모형이 정확한지 나타내줌

 

2) ROC그래프

레이더 이미지 분석의 성과 측정위해 개발

분류 분석 모형 비교 분석 결과를 가시화 가능, 밑부분 면적이 넓을 수록 좋은 모형(AUC=1)

x : FP Ratio (1-특이도)

y : 민감도


모델 A 높은 분류 성과 가지는 것으로 평가

Epi 패키지의 ROC() 함수

면적의 넓이를 파악해서 뭐가 높은 성과인지 확인 가능

 

3) 이익도표와 향상도 곡선

이익 : 목표 범주에 속하는 개체들이 등급에 얼마나 분포하고 있는지 나타내는

이익도표 : 해당 등급에 따라 계산된 이익값을 누적으로 연결한 도표

분류된 관측치가 등급별 얼마나 포함되는지 나타내는 도표

 

향상도곡선 : 랜덤모델과 비교하여 해당 모델의 성과가 얼마나 향상되었는지 등급별 파악하는 그래프

상위 등급은 향상도가 매우 크고 하위로 갈수록 향상도가 감소되어 예측력이 적절함 의미

등급에 상관없이 향상도에 차이가 없으면 예측력이 좋지 않음

 

ROCR 패키지의 ROC ( ) 함수 이용 : ROC 그래프와 향상도 곡선 함께 나타내줌

 

3 군집 분석

군집분석 : 개체에 대해 관측된 여러 개의 변수 들로부터 n개의 개체를 유사한 성격으로 군집화하고

형성된 굽집들의 특성을 파악하여 군집들 사이의 관계를 분석하는 다변량분석기법

별도의 반응변수 필요없음, 개체간의 유사성에만 기초하여 군집 형성

이상값탐지에도 사용, 심리학, 사회학, 경영학, 생물학 다양한 분야 이용

계층적 군집, 분리군집, 밀도-기반군집, 모형-기반군집, 격자-기반군집, 커널-기반군집, SOM

 

1. 계층적 군집

가장 유사한 개체를 묶어 나가는 과정을 반복, 원하는 개수의 군집을 형성하는 방법

보통 계통도, 덴드로그램의 형태로 결과가 주어짐 개체는 하나의 군집에 포함

개체간의 유사성에 대한 다양한 정의 가능, 연결법에 따라 군집 결과가 다름

 

- 병합적 방법 : 작은 군집을 출발하여 군집을 병합

단계마다 그룹 간의 거리를 계산하여 가까운 순으로 병합 수행, 개가 남을 까지 계속

그룹 혹은 항목의 상대적 거리가 가까울수록 유사성이 높음

 hclust{stats}{cluster} 패키지의 agnes(), mclust() 함수

dist()는 거리(또는 비유사성)행렬을 제공하는 함수

- method= 옵션에는 "euclidean", "maximum", "manhattan", "binary", "minkowski"

hclust(method= 옵션에는 "ward", "single" , "complete", "average", "centroid" )

cutree() : 군집 결과를 이용 트리의 높이나 그룹 수를 옵션으로 지정하여 원하는 그룹으로 나눔

agnes( metric=거리공식)

daisy( ) : 데이터 관측치 사이의 거리 계산, 자료의 형태가 수치 형일 필요 없음


 

- 분할적 방법 : 군집을 분리해나감

 {cluster} 패키지의 diana( ), mona( ) 함수

 

- 덴드로그램

구조적 관계를 쉽게 파악, 항목간의 거리, 군집간의 거리 있고 유사성 정도 파악 가능 견고성 해석가능


 

거리 측정 방법

1) 최단연결법, 단일연결법

군집 사이의 거리를 하나씩 관측값에서 나타나는 최소의 거리값

사슬 모향으로 생기고, 고립된 군집을 찾는데 중점을 방벙

2) 최장연결법, 완전연결법

군집 사이의 거리를 하나씩 관측값에서 나타나는 최대의 거리값

같은 군집에 속하는 관측치는 알려진 최대 거리보다 짧고, 내부 응집성에 중점을 방법

3) 중심연결법

군집의 중심간의 거리 측정, 결합시 새로운 군집의 평균은 가중 평균을 통해 구함

4) 평균연결법

모든 항목에 대한 거리 평균을 구하고 군집화 하기 때문에 계산량이 불필요하게 많음

5) 와드연결법

군집내의 오차제곱합에 기초하여 군집 수행 (거리 기반 아님)

군집이 합해지면 병합된 군집의 오차제곱합은 병합 이전의 군집보다 커지게

증가향이 가장 작아지는 방향으로 군집을 형성해나가는 방법

크기가 비슷한 군집끼리 병합하는 경향


 

 

거리 기반 공식

- 수학적 거리 : 유클리드 거리, 맨하튼 또는 시가 거리, 민코우스키 거리,

- 통계적 거리 : 표준화 거리(변수 측정단위 표준화), 마할라노비스 거리(변수간 상관성 고려)

- 체비세프거리, 켄버라거리, 유사성측도 코사인거리, 상관계수

 

명목형 자료에 대한 거리 유사성 측도 : 단순일치계수, 자카드계수

순서형 자료에 대한 순위상관계수

유사성과 거리는 반대 개념임을 유의

 

특징

- 단계에서 지역적 최적화를 수행해 나가는 방법 사용 결과가 전역적인 최적해가 아님

- 병합적 방법에서 한번 군집이 형성되면 군집에 속한 개체는 다른 군집으로 이동할 수가 없음

- 중심연결법, 와드연결법 등에서는 군집의 크기에 가중을 두어 병합함으로 크기가 군집과의 병합 유도

 

2. k-평균 군집

원하는 군집 수만큼(k) 초기값 지정

개체(데이터) 가까운 초기값에 할당하여 군집 형성

군집의 평균을 재계산하여 초기값갱신

갱신된 답에 대해 위의 할당화 과정을 반복하여 k개의 최종 군집 형성

 

알고리즘

1단계 : 초기 (군집의) 중심으로 k개의 객체를 임의로 선택한다.

2단계 : 자료를 가장 가까운 군집 중심에 할당한다.

    군집의 중심점(평균)으로부터 오차제곱합이 최소가 되도록 자료를 할당하는 과정

3단계 : 군집 내의 자료들의 평균을 계산하여 군집의 중심을 갱신하다.

4단계 : 군집 중심의 변화가 거의 없을 (또는 최대 반복수)까지 2,3단계 반복한다.

 


 

특징 장점

군집의 수는 미리 정해줘야

초기 중심값은 임의로 선택 또는 무작위로 선택, 멀리 떨어져 있어야함, 초기값에 따라 결과 변화

탐욕적 알고리즘 : 군집 중심으로부터의 오차제곱합을 최소화 하는 방향으로 군집 형성(부분최적화)

안정된 군집 보장하나 최적을 보장하지 못함

단순하고 빨라서 계층적군집보다 많은 양의 자료 가능

거리 계산에 기반함으로 모든 변수가 연속적이야함

 

단점

- 잡음이나 이상값에 영향을 받음

- 볼록한 형태가 아닌 u형태 군집일 경우 성능이 떨어짐

 

이상값에 민감한 단점 보완

- k-중앙값 군집 pam( ) 함수 이용,  {flexclust} 의 kcca( ) 함수

- 수행전에 탐색적 자료 분석을 통한 이상값 제거

 

kmeans( ) 함수 사용

nstart = 옵션 25 추천, 다중의 초기값에 대한 군집 수행

set.seed( ) 초기값에 따라 결과 변경을 없애기 위해 난수 고정

scale( ) 함수 : 단위 표준화

wssplot( ) : 군집수 설정 함수

k - 평균군집 : kmeans {stats}, kcca {flexclust}, cclust{flexclust} , cclust{cclust}, Kmeans {amap}

k - 중앙값군집 : pam( ) 함수를 통해 수행할 수 있다. pam은 partitioning around medoids

 

군집 결정 방법

- Nbclust 통한 적절한 군집 수에 대한 정보 얻음

- 군집수에 따른 집단 제곱합 그래프

 

3. 혼합 분포 군집

모형-기반 군집방법

데이터가 k개의 모수적모형(정규분포, 다변량 정규분포 가정) 가중합으로 표현되는 모집단 모형으로부터

모수와 함께 가중치를 자료로 추정하는 방법 사용

추정된 k개의 모형 어느 모형으로부터 나왔을 확률이 높은지에 따라 군집의 분류

모수와 가중치의 추정(최대가능도추정)에는 EM알고리즘 사용

 


- (왼쪽) 3 정도의 정규분포의 결합

- (오른쪽) 여러 개의 이변량 정규분포의 결합

정규분포로 제한할 필요는 없음

 

EM알고리즘 (혼합분포에 대한 최대가능도추정)

편의상 모집단을 구성하는 집단의 분포는 정규분포를 따르고

자료가 M개중 어느 클래스에 나온지 안다면 모수 추정이 어렵지 않음

그러나 데이터가 어느 집단으로부터 나오는지 모르므로, 정보만 추정하면 최대 가능도 추정 문제 해결

잠재변수, 조건부분포(어느집단에 속할지에 대한)로부터 조건부 기댓값


 

특징

- k-평균군집의 절차와 유사하나 확률 분포를 도입하여 군집을 수행하는 모형-기반 군집 방법

- 군집을 몇 개의 모수로 표현 가능

- 서로 다른 크기가 모양의 군집을 찾을 있음

- 이상값에 대해 민감하여 사전조치 필요

- EM알고리즘 이용한 모수 추정 , 데이터가 커지면 수렴하는데 시간이 오래 걸리고

군집의 크기가 너무 작으면 추정도가 떨어짐

 

4. SOM(Self-Organizing Maps)

자기조직화지도, 코호넨

비지도 신경망으로 고차원의 데이터를 이해하기 쉬운 저차원의 뉴런으로 정렬하여 지도 형태 형상화

입력 변수의 위치를 그대로 보존, 입력변수가 가까이 있으면 지도상에도 가까운 위치 나타남

입력 변수의 정보와 그들의 관계가 지도상에 그대로 나타남

 

2개의 인공신경망 층으로 구성

- 입력층 : 입력벡터를 받는

입력 변수의 개수와 동일하게 뉴런수가 존재

- 경쟁층 : 2차원 격차로 구성됨, 입력의 벡터의 특성에 따라 벡터가 점으로 클러스팅 되는

사용자가 미리 정해놓은 군집 만큼 뉴런수가 존재

지도(map) : 입력층의 자료는 학습을 통해 경쟁층에 정렬

완전연결 : 입력층에 있는 각각 뉴런은 경쟁층에 있는 각각 뉴런과 연결됨


 

프로토타입 벡터와의 유클리드 거리 계산하고 비교

BMU : 표본 벡터에 가장 가까운 프로토타입 벡터 선택

승자독점 학습 규칙에 따른 위상학적 이웃에 대한 연결 강도 조정

경쟁 학습으로 각각의 뉴런이 입력 벡터와 얼마나 가까운지 계산하여 연결강도를 반복적으로 재조정

승자 독식 구조로 인해 경쟁층에는 승자 뉴런만 나타남

SOM 이용한 군집분석은 역전파 알고리즘과 달리,

하나의 전방패스 사용함으로 속도가 매우 바르고

실시간 학습처리가 가능

고차원의 데이터를 저차원의 지도 형태로 형상화, 시각적으로 이해하 쉽고 보존하기에 실제와 유사함

 

4 연관 분석

 

1. 연관규칙

1) 연관규칙의 개념

항목들 간의 '조건-결과'식으로 표현되는 유용한패턴

이러한 패턴, 규칙을 발견하는 것이 연관 분석, 장바구니 분석

- 사용하는 데이터 형태 : 장바구니 데이터

- 특정고객, 장바구니 하나에 해당하는 정보 : 트랜잭션

트랜잭션 사이의 연관성을 살펴보고 빈번히 나타나는 규칙을 찾아냄 (맥주-기저귀)

 

교차판매위해 효과적임

연관성 규칙의 조건과 반응 (if - then) : If - A then B

 

2) 연관규칙의 측정지표

인구통계학적 자료 불필요, 판매시점에서 기록된 거래와 품목의 정보 포함

얼마나 유의미한지 파악이 필요

 

- 지지도 : 전체 거래 A, B 동시에 포함되는 거래 비율

연관규칙이 나왔을 작용성이 있는지 판단, 불필요한 분석 줄임

 

- 신뢰도 : 품목 A 포함된 거래 중에서 품목 A, B 동시에 포함하는 거래

연관성의 정도를 파악가능, A B BA 다른의미


 

- 향상도 : 품목 B 구매한 고객 대비 품목 A 구매한 품목 B 구매하는 고객에 대한 확률

연관규칙 A B 품목 A 품목 B 구매가 서로 관련 없음 향상도는 항상 1

1보다 크면 결과를 예측하는데 우수함, 양의 관계로 A 구매하고 B 구매할 확률 높음

1이면 서로 독립적인 관계

1보다 작으면 우연적 기회, 연관성이 없음, 음의 관계


 

지지도를 높은 값에서 낮은 값으로 낮추어 가면서 실행해야 효율적임

 

3) 연관 분석 절차

Apriori 알고리즘 : 최소지지도를 갖는 연관규칙을 찾는 방법

최소 지지도보다 집합만을 대상으로 높은 지지도를 갖는 품목 집합을 찾는

 

최소 지지도 설정

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

2에서 찾은 개별 품목만을 이용하여 최소 지지도를 넘는 2가지 품목 집합을 찾음

위의 절차에서 찾은 품목 집합을 결합하여 최소 지지도를 넘는 3가지 품목 집합 찾음

반복적으로 수행하여 최소 지지도가 넘는 빈발품목 집합 찾음

 

4) 연관분석의 장점

- 탐색적인 기법 : 조건반응으로 표현되는 연관 분석의 결과를 이해하기 쉽다.

- 강력한 비목적성 분석기법 : 분석 방향이나 목적이 특별하게 없는 경우 목적변수가 없으므로 유용하다.

- 사용이 편리한 분석 데이터 형태 : 거래 내용에 대한 데이터 변환없이 자체로 이용하는 간단 자료 구조

- 계산이 용이성 : 분석을 위한 계산이 상당히 간단

 

5) 연관분석의 단점

- 상당한 수의 계산 과정 : 품목수가 증가하면 분석에 필요한 계산은 기하급수적으로 늘어남

- 적절한 품목의 결정 : 너무 세분화된 품목이면 연관규칙을 찾으면 의미없는 결과가 나올수 있음

- 품목의 비율 차이 : 상대적으로 거래량이 적은 품목은 당연히 적고, 규칙 발견시 제외 가능성

 

6) 순차 패턴

시간에 따른 구매 정보를 활용하여 이루어짐

순차적 패턴의 발견은 구매 순서가 고려되어 상품간의 연관성이 측정되고

유용한 연관규칙을 찾는 기법 구매 시점에 대한 정보가 필요

 


1 통계학 개론

 

1. 통계 분석 개요

1) 통계학의 정의

경제통계, 사회조사분석통계, 실험결과 분석 통계 다양한 형태

자료로부터 유용한 정보를 이끌어 내는 학문, 자료 수집과 정리, 이를 해석하는 방법 모두 포함

2) 모집단과 표본

모집단(=추출단위, 원소) : 유용한 정보의 대상이 되는 , 우리가 알고자 하는 전체

- 유한모집단 : 유한 개의 개체로 이루어진 모집단

- 무한모집단 : 무한 개의 개체로 이루어진 모집단으로 보통의 개념적인 모집단 지칭

조사 : 모집단의 개체 모두 조사하는 방법 ex) 인구 주택 총조사

표본 : 모집단의 일부분

표본조사 : 일부분인 조사하여 모집단에 대해 추론하는

모수 : 모집단에 대해 알고자 하는

통계량 : 모수를 추론하기 위해 구하는 표본의 값들

3) 표본추출의 방법

모집단의 정의, 표본의 크기, 조사방법, 조사기간, 표본추출 방법

분석결과 해석은 차이가 발생

 

표본 추출 방법

- 단순랜덤추출법 : 랜덤으로 임의 번호를 선택하여 추출

- 계통추출법 : 일련 번호를 부여하고 k개씩 n 구간으로 나누고 구간별 선택,  ex)4, 14, 24, 34 ...

- 집락추출법 : 몇 개의 클러스터로 결합된 형태에서 집락을 랜덤으로 선택하고 집락에 임의 추출

- 층화추출법 : 이질적인 원소로 구성된 모집단에서 계층을 고루 대표할 표본을 추출하는

원소들을 서로 유사한 것끼리 층으로 나눈 , 층에서 표본 랜덤 추출

 

실험 : 표본 조사 이외의 자료를 수집하는 방법

특정 목적하에서 실험대상에게 처리를 가한후 결과를 관측해 자료를 수집

ex) 새로운 강의법과 기존 강의법을 실험한 성적 조사, 암치료제 효과 분석

 

4) 자료의 종류

측정 : 추출된 원소, 실험단위로부터 주어진 목적에 적합하도록 관측해 자료를 얻는

질적자료

- 명목척도 : 어느 집단에 속하는지 분류하는 척도

ex) 성별(, ), 출생지(서울, 부산 )

- 순서척도 : 특성이 가지는 서열 관계를 관측하는 척도, 일정한 순서

ex) 서비스 만족도 5단계 구분

양적자료

- 구간척도 : 속성의 양을 측정하는 , 숫자로 표현, 절대적인 원점이 없음

ex) 사이의 비율은 의미 없는 온도, 지수

- 비율척도 : 절대적 기준인 0 존재하고, 모든 사칙연산 가능, 제일 많은 정보

ex) 무게, 나이, 연간소득, 제품가격 일반적인 자료 특성

 

2. 통계 분석

특정한 집단이나 불확실한 현상을 대상으로 자료를 수집해 대상집단에 대한 정보를 구하고

적절한 통계 분석 방법을 이용해 의사결정 하는 과정

 

통계적 추론 : 수집된 자료를 이용해 대상 모집에 대해 의사결정 하는

- 추정 : 대상 집단의 특성값(모수) 무엇일까? 추측

- 가설검정 : 대상 집단에 대해 특정한 가설을 설정한 가설의 채택여부를 결정하는

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

 

기술통계 : 수집된 자료를 정리, 요약하기 위해 사용되는 기초적인 통계 통계분석을 위한 사전단계

- 평균, 표준편차, 중위수, 최빈값, %

- 막대그래프, 원그래프, 꺽은선 그래프

 

3. 확률 확률분포

 

1) 확률의 정의

확률 : 특정사건이 일어날 가능성의 척도

표본공간 : 통계적 실험이 실시할 나타날 있는 모든 결과들의 집합

사건 : 표본공간의 부분집합

- 근원사건 : 사건 오직 개의 원소로만 이루어진 사건

 

사건 E 대한 확률


 

- 모든 사건 E 확률값은 0 1사이에 있다.

- 전체 집합 확률은 1이다

- 서로 배반인 사건들의 합집합은 확률의 사건들의 확률의 합이다.


  배반사건이란, 교집합이 공집합인 사건

 

2) 조건부 확률과 독립사건

조건부 확률 : 사건 A 일어났다는 가정하의 사건 B 확률

           , P(A) > 0 일때

 

사건 A, B   만족하면 

, A B 독립사건이면  사건 B 확률은 A 연관 없다

 

3) 확률변수와 확률분포

확률변수 : 특정값이 나타날 가능성이 확률적으로 주어짐

 정의역이 표본공간, 치역이 실수값인 함수

- 이산형 확률변수 : 사건 확률이 사건들이 속한 점들의 확률 합으로 표현

확률질량함수, 0보다 값을 갖는 점들

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

- 연속형 확률변수 : 사건 확률이 사건 위에서 0보다 값을 갖는 함수의 면적으로 표현

확률밀도함수, 점에서의 확률은 0 되고, 0보다 값을 갖는 구간의 확률값

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

- 결합 확률분포 : 확률변수 X, Y 결합확률분포가 이산형인 경우 결합확률질량함수

    확률변수 X, Y 결합확률분포가 연속형인 경우 결합확률밀도함수

 

4) 확률변수의 기댓값과 분산

이산형 확률변수 기댓값 

연속형 확률변수 기댓값  면적을 적분

분산 

표준편차 

 

5) 백분위수


연속형 확률변수 X q분위 백분위수 (0q100)

 

 

4. 추정과 가설검정

모수 : 모집단의 확률분포 특징, 평균, 분산, 표준편차, 백분위수

통계적 추론

- 추정

- 점추정

- 구간추정

- 가설검정

 

1) 추정

가장 참값으로 여겨지는 하나의 모수 값을 택하는

모수가 특정한 값일 것이라고 추정하는

표본평균 : 모평균을 추정하기 위한 확률표본의 평균값 

표본분산 : 모집단 분산을 추정하기 위한 추정량 

 

2) 구간추정

점추정의 정확성을 보완

일정한 크기의 신뢰수준으로 모수가 특정한 구간에 있을 것이라고 선언

신뢰수준은 90, 95, 99% 확률 사용

: 한 개의 모집단에서 동일한 방법으로 동일한 자료의 확률표본은 추출하여 신뢰구간을 구하면

  해당하는 % 구간에서 미지의 모수를 포함한다는 의미

 

3) 가설검정

모집단에 대한 어떤 가설을 설정한 표본 관찰을 통해 가설의 채택여부를 결정하는 분석 방법

귀무가설 H0 : 대립가설과 반대의 증거를 찾기 위해 정한 가설

대립가설 H1 : 확실하게 증명하고 싶은 가설, 증거가 있어야 채택되는 가설, 결과가 값비싼 가설

 

검정통계량

- 표본평균

- 표본분산

- p-value : 귀무가설이 사실일 , 관측된 값보다 대립가설을 지지하는 검정통계량이 나올 확률

미리 주어진 기준값인 유의수준보다 작으면 기무가설을 기각 (0.01, 0.05, 0.1 1 사용)

- 기각역 : 귀무가설을 기각하는 통계량의 영역

 

1 오류 : 귀무가설H0 옳은데도 H0 기각

2 오류 : 귀무가설H0 옳지 않은데도 H0 채택


오류는 서로 상충관계가 있음, 1 오류의 크기 고정해서 2 오류가 최소가 되도록 기각역 설정

 

5. 비모수 검정

모수적 검정 방법 : 검정하고자 하는 모집단의 분포에 대한 가정하에 검정통계량과 분포 유도하여 검증

비모수적 검정 방법 : 모집단의 분포에 대해 아무 제약 가하지 않고 실시, 특정분포를 따른다고 가정 없음

ex) 부호검정, 순위합검정, 부호순위합검정, U검정, 런검정, 스피어만의 순위상관계수

 

차이점

- 가설의 설정에서 모수정 검정에는 가정된 분포의 모수에 대한 가설 설정하나

비모수 검정에는 가정된 분포가 없음, 단지 분포가 동일한지 형태 여부만 설정

- 모수적 검정에서는 관측된 자료를 이용한 표본평균, 표본분산을 이용해 검정 실시

  비모수적 검정에서는 관측값의 절대적 크기에 의존하지 않는 순위나 차이 부호를 이용해 검정

 

2 기초 통계 분석

 

1. 기술통계

자료를 요약하는 기초적 통계

> head(Animals)  # 내용 확인 가능, n 보여지기 가능
                    body brain
Mountain beaver     1.35   8.1
Cow               465.00 423.0
Grey wolf          36.33 119.5
Goat               27.66 115.0
Guinea pig          1.04   5.5
Dipliodocus     11700.00  50.0
> mean(Animals$body) #평균
[1] 4278.439
> median(Animals$body) #중앙값
[1] 53.83
> sd(Animals$body) #표분편차
[1] 16480.49
> var(Animals$body) #분산
[1] 271606563
> quantile(Animals$body) # 백분위수
       0%       25%       50%       75%      100%
    0.023     3.100    53.830   479.000 87000.000
> summary(Animals$body)
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max.
    0.02     3.10    53.83  4278.44   479.00 87000.00

 

2. 회귀분석

 

1) 단순회귀분석과 다중회귀분석의 개념

회귀분석 : 하나, 이상의 변수들이 다른 변수에 미치는 영향에 대해 추론하는 통계기법

- 종속변수(반응변수) : 영향을 받는 변수

- 독립변수(설명변수) : 영향을 주는 변수

 

단순회귀분석 : 개의 독립변수와 개의 종속변수로 이루어져 있음, 오차항이 있는 선형관계

최소제곱추정량 : 제곱오차를 최소로 하는

 

다중회귀분석 : 두개 이상의 독립변수 사용하여 종속변수의 변화를 설명

 

체크사항

- 모형이 통계적으로 유의미한가

F통계량 확인, 유의수준 5%하에서 p-value 값이 0.05보다 작으면 유의하다

- 회귀계수들이 유의미한가

해당 계수의 t통계량과 p- 또는 이들의 신뢰구간 확인

- 모형은 얼마나 설명력이 있나?

결정계수 확인, 0~1사이 값을 가지며 높은 값일 수록 설명력이 높다

- 모형이 데이터를 적합하고 있는가?

잔차를 그래프로 그리고 회귀진단을 한다

- 데이터가 아래의 모형 가정을 만족 시키는가?

- 선형성 (독립변수의 변화에 따라 종속변수도 일정 크기로 변화)

- 독립성 (잔차와 독립변수이 값이 관련되어 있지 않음)

- 등분산성 (독립변수의 모든 값에 대해 오차들의 분산이 일정)

- 비상관성 (관측치들의 잔차들끼리 상관이 없어야함)

- 정상성 (잔차항이 정규분포를 이뤄야함)

 

2) 회귀분석의 종류


 

단순선형회귀분석 : lm(종속변수 ~ 반응변수, 데이터이름) 함수 사용

 

다중선형회귀분석 : lm(종속변수~독립변수+독립변수+독립변수)

 

Summary 함수를 통해 결정계수, F통계량, 잔차의 표준오차 확인 가능

F통계량 : F-statistic, p-value 유의수준 5% 하에서 추정된 모형인지 확인 가능

결정계수 : R-squared 0~1사이에서 1 가까워야 설명을 하고 있다고 판단

잔차의 표준오차 : 값들의 p-value 0.05보다 작으면 회귀계수의 추정치가 통계적으로 유의함

 

다항회귀분석 : 데이터를 산점도 확인했을 , 선형이 아니라 곡선형이면 다항회귀분석을 진행함

회귀식의 잔차도가 뚜렷한 곡선 패턴 오차항의 평균 0이고 분산이 일정하지 않음 (등분산성 오류)

2차함수를 사용할 , 다소 안정된 형태의 잔차를 보임

 

3) 최적회귀방정식의 선택 : 설명변수의 선택

반응변수, 종속변수 y 영향을 미치는 설명변수, 독립변수 x1, x2, x3…

회귀모형 선택의 2가지 원칙

- y 영향을 미칠 있는 모든 설명변수 x들을 y 값을 예측하는데 참여시킴

- 가능한 범위내에서 적은 수의 설명변수 포함, x 많아지면 관리하는게 노력이 필요함

서로 이율배반적인 원칙으로 타협이 이루어져야함, 적절한 설명변수 선택이 중요

 

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

모든 가능한 독립변수들의 조합에 대해 회귀모형 고려해 AIC, BIC 기준으로 적합한 모형 선택

- AIC : k 모수의 개수 가장 작은 값을 갖는 모형


- BIC : n 자료개수의 차이, 가장 작은 값을 갖는 모형


 

단계적 변수선택

- 전진선택법 : 중요하다고 생각되는 설명변수부터 차례로 추가

가장 제곱합의 기준으로 가장 설명을 잘하는 변수를 고려하여 유의하면 추가, 아니면 중단

- 후진제거법 : 모든 후보를 포함한 상태로 출발하여 제곱합의 영향이 적은 변수부터 제거

이상 유의하지 않은 변수가 없을 때까지 설명변수 제거하고 모형 선택

- 단계별방법 : 전진선택법에 의해 추가하며 변수에 기인해 기존 변수 중요도가 약화되면 변수 제거

단계별로 추가 또는 제거되는 변수의 여부를 검토해 이상 없을 중단

 

Step(lm(종속변수~설명변수, 데이터세트), scope=list(lower=~1, upper=~설명변수), direction="선택법")

- lm : 회귀분석

- scope : 고려할 변수의 범위 설정

- direction : 변수 선택방법, forward, backward, both

 

3 다변량 분석

 

1. 상관분석

데이터 안의 변수 간의 관계

상관계수 : 상관관계를 알아보기 위한 계수

- 피어슨 상관계수 : 등간척도 이상으로 측정되는 변수간의 상관관계

- 스피어만 상관계수 : 서열척도인 변수들의 상관관계

 

양수일 때는 x 증가 하면서 y 증가하나, 음수일 때는 x 증가면 y 감소


 

1) 피어슨 상관계수

공분산의 크기는 X, Y 단위에 따라 영향을 받음


, 이고 X Y 독립이면 

 

cor : 두변수의 상관계수를 파악

Hmisc 패키지의 rcorr 함수 사용 : 모든 변수들 사이의 상관계수와 H0 : 대한 p-value 출력

rcorr(as.matrix(데이터세트), type="pearson")

 

cov : 공분산

 

2) 스피어만 상관계수

비선형적인 상관관계를 나타낼 있음, 변수를 단조 증가함으로 다른 변수에 나타나는 정도

변수를 모두 순위로 변환시킨 , 순위 사이의 피어슨 상관계수로 정의

     : x 순위 : y 순위

rcorr(as.matrix(데이터세트), type="spearman")

 

2. 다차원 척도법

여러 대상 간의 거리가 주어져 있을 , 동일한 상대적 거리를 가진 실수공간의 점들로 배치시키는 방법

자료들의 상대적 관계를 이해하는 시각화 방법의 근간

특정변수들의 관측치는 없어도 개체간의 유사성에 의한 자료를 사용하여 산점도 표현 가능

 

cmdscale(데이터세트) : 거리를 2차원으로 계산하여 공간상에 표현

 

3. 주성분 분석

상관관계가 있는 고차원 자료를 자료의 변동을 최대한 보존하는 저차원 자료로 변환시는 방법

자료의 차원을 축약

주성분들은 서로 상관관계가 없고, 분산의 합은 변수들의 합과 같음

희생되는 정보가 가장 적은 방향으로 결정

 

princomp(데이터세트, cor=TRUE) : cor=TRUE 상관계수 행렬, cor=F 공분산행렬

→ summary, loadings(가중치, 주성분들의 로딩 벡터) 결과 확인 가능

 

주성분 개수 선택법

- 스크리 그림(Scree plot) : 주성분의 분산의 크기를 그림으로 표현

주성분 분산의 감소가 그래프상 급격히 줄면 미미한 지점에서 개수 산정

- 분산의 비율 70~90% 사이가 되는 주성분의 개수 선택

 

biplot : 변수의 화살표 방향이 비슷하고, 주성분과 평행하면 영향력이

 

4 시계열 예측

 

1. 정상성

시계열 자료 : 시간의 흐름에 따라서 관측된 데이터

정상성 : 시점에 상관없이 시계열의 특성이 일정하다는 , 시계열 분석은 정상성을 만족 해야함

평균이 일정하다

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

공분산은 단지 시차에 의존하고 시점 자체에는 의존 하지 않는다.

하나라도 만족하지 못할 경우 : 비정상 시계열 (대부분의 시계열자료는 비정상임)

 

정상성을 만족하는지 판단하는 과정

시계열 자료의 그림 파악

자료의 이상점과 개입 파악

정상성 만족 여부와 개략적인 추세 유무 관찰

이상점 이상점 제거, 개입 회귀분석 수행

추세를 보이는(평균이 일정하지 않으면) 차분 진행 : 시점의 자료값 - 시점의 자료값

여러시점 전의 자료를 빼는 것을 계절 차분, 계절성을 가진 비정상 시계열은 계절 차분 사용

시간에 따라 분산이 일정하지 않으면 변환 진행

 

2. 시계열 모형

 

1) 자기회귀 모형(AR모형) AP(p)

시점의 자료가 p 시점 전의 유한개의 과거 자료로 설명 있음

시점의 시계열 자료에 번째 자료까지 영향을 주는지 알아내야

과거 1 시점 이전 자료만 영향 주면 1 자기회귀모형, AP(1)모형

 

백색잡음과정 : 대표적 정상 시계열, 시계열 분석에서 오차항 의미

독립이고 같은 분포를 따르며 평균이 0이고 분산이 확률변수

 

모형식별을 위해서는 자기상관함수(ACF), 부분자기상관함수(PACF) 이용

ACF 시차가 증가함에 따라 점차 감소, PACF p+1시차 이후 급격히 감소하여 절단된 형태


 

2) 이동평균모형(MA모형) MA(p)

시계열 자료를 모형화

시점 자료를 유한개의 백색잡음의 선형결합으로 표현 되어있기 때문에 항상 정상성 만족 가정 불필요

1 이동평균모형, MA(1) : 가장 간단한 이동평균모형, 같은 시점의 백색잡음 + 바로 시점의 백색잡음

 

PACF 시차가 증가함에 점차 감소, ACF p+1 시차 이후 절단된 형태


 

3) 자기회귀누적이동평균모형(ARIMA 모형)

대부분의 많은 시계열 자료, 기본적으로 비정상 시계열 모형

차분이나 변환을 통해 AR, MA, ARMA 모형으로 변환

ARIMA(p, d, q) :  차수 p = AR모형,  p = 0 → IMA(d,q)모형 → d 차분하면 MA(q)모형

    차수 d = ARMA모형, d = 0 → ARMA(p,q)모형, 정상성 만족

    차수 q = MA 모형, q=0 → ARI(p,d)모형 → d 차분하면 AR(p)모형

 

diff(데이터세트, differences=n) : n 차분, 그림으로 확인해야함

acf(데이터세트, lag.max=n) 자기상관함수 분석, n 적절한 설정 필요

pacf(데이터세트, lag.max=n) 부분자기상관함수 분석

forecast 패키지의 auto.arima(데이터세트) 함수 사용하여 적절한 모형 확인

arima(데이터세트, order=c(p,d,q)) 시계열 자료 결정 forecast 함수로 예측 자료 생성

 

4) 분해시계열

시계열에 영향을 주는 일반적인 요인을 시계열에서 분리해 분석하는 방법

추세요인 : 자료가 어떤 특정한 형태를 취할 , 추세에 따르는 경우, T

계절요인 : 고정된 주기에 따라 자료가 변화할 경우, 요일, , 분기, 변화, S

순환요인 : 알려지지 않은 주기를 가지고 자료가 변화할 , C

불규칙요인 : 3가지 요인이 아닌 회귀분석에서 오차에 해당하는 요인, I

구성요인을 정확하게 분리하는 것이 중요, 이론적 약점 존재

decompose(데이터세트) : 4가지 요인 분석 가능


1 R 기초

- R 장점 : 오픈소스, 가장 빠르게 발전, 보급됨

 

SAS

SPSS

R

프로그램 비용

유료, 고가

유료, 고가

오픈소스

설치용량

대용량

대용량

적음

다양한 모듈 지원 비용

별도 구매

별도 구매

오픈소스

최근 알고리즘 기술 반영

느림

다소 느림

매우 빠름

학습자료 입수의 편의성

유로 도서 위주

유로 도서 위주

공개 논문 자료 많음

질의를 위한 공개 커뮤니티

NA

NA

매우 활발

 

1. 분석 환경의 이해

 

1) 통계 패키지 R

- 복잡한 계산이나 시각화 기법을 사용할 있는 무료 소프트웨어

- 오픈 소스 무료 소프트웨어, 사용자 직접 제작한 패키지 사용 가능, 상용 소프트웨어 만큼 강력한 시각화

 

2) R 역사

- 'S' : 1975 "to turn ideas into software, quickly and faithfully." 통계 프로그램 C언어

- R : 1993 뉴질랜드 'Scheme' 개념의 다른 S 언어 프로그램

- 자유 소프트웨어 재단의 일반 공증 사용 허가서로 인한 무료 공개, S언어 사용 가능, Unix계역

 

3) R 특징

. 그래픽 처리

- 고해상도의 그래프와 그림, 매우 세부적인 부분까지 사용자 지정 가능, 빠른 처리시간

. 데이터 처리 계산 능력

- 백터, 행렬, 배열, 데이터 프레임, 리스트 등의 다양한 형태의 데이터 구조 지원

- 복잡한 구조 내의 개별 데이터에 접근하는 절차 간단 데이터 핸들링 간편

. 패키지

- 패키지 : 스스로 개발하는 새로운 함수, 특정 분석 기법을 사용

- 확장성 → 최근 이론이나 기법 사용하기 용이, 그래픽 처리 용이(고급 기능 사용가능)

 

4) R Studio

- 통합개발환경(IDE), 메모리에 저장되어 있는 변수 사용, 수정 용이

- 스크립트 문서화, 무료로 제공되는 운영체제

 

2. 기본 사용법

 

1) R R Studio 구성

. R 구성


① 메뉴 바 : R에서 사용할 수 있는 다양한 기본 기능들이 나열되

② 단축 아이콘 툴바  : 자주 사용하는 기능들의 단축 아이콘이 나열

 좌측부터 순서대로 스크립트 열기, 작업공간 불러오기, 작업공간 저장하기, 복사, 붙여넣기,  복사 후 붙여넣기, 현재 수행 중인 연산 중단, 인쇄하기

③ R 콘솔 : 콘솔은 R 명령어가 입력되고, 결과가 출력되는 R의 핵심적인 작업공간이다.

④ 스크립트 창 : 콘솔 창에서는 한 번에 한 줄의 명령어를 입력하고 바로 실행하여야 하기 때문에

긴 프로그래밍 코드를 작성하는 경우 사용하기가 불편하다.

이런 경우 별도로 실행시킬 수 있는 스크립트 창을 열어 여러 줄의 코드를 한 번에 작성하고

한 줄 씩 실행시킬 수 있으며 스크립트 창에 입력된 코드를 별도의 스크립트 파일로 저장할 수 있다 

 

. R Studio 구성


① 스크립트 창: 기존의 R 에서 별도로 열 수 있는 스크립트 창과 동일한 기능을 한다.

R에서 작성하여 저장한 스크립트를 불러올 수 있으며 여러 스크립트를 동시에 열어 작업할 수도 있다

② R 콘솔: 기존의 R에서 볼 수 있었던 콘솔창과 동일하다.

R 명령어를 실행한 결과가 콘솔 창에 나타나며 콘솔에 명령어를 입 력하여 실행할 수도 있다.

이 경우 한 줄 씩의 코드만 입력할 수 있다는 점에 유의하자.

③ 환경 및 히스토리 : 랩을 통해 환경 설정과 히스토리를 살펴볼 수 있다.

환경 창에서는 현재 실행중인 R 프로젝트에서 선언된 변수, 함수, 데이터셋 등의 정보를 살펴볼 수 있다.

히스토리 창에서는 현재까지 정상적으로 실행한 명령어들이 나열된다.

④ 현재 문서들이 저장되는 폴더나 R을 이용해 그린 그림들

 불러온 패키지들과 도움말 등을 별도의 한 영역에서 확인할 수 있다.

ctrl + Enter = run 버튼

 

2) R 패키지 설치하기

. 상단 메뉴바의 패키지 툴에서 패키지 설치하기 클릭

. 명령어로 패키지 설치하기

> install.packages("패키지이름")

불러오기

> library(패키지 이름)

 

3) R 도움말 (help)

- 해당 함수에 대한 기본적인 설명, 인수 설명, 옵션 목록 예제 : ?, help

> ?par

> help(par)

 

4) R 언어와 문법

- # : 주석

 

. R 데이터 구조

 

벡터

하나의 스칼라값, 하나 이상의 스칼라 원소를 갖는 단순한 형태 집합

원소 : 숫자, 문자, 논리 연산자 숫자는 숫자, 문자는 문자 벡터가

- 논리 연산자 → 숫자로 사용하려면 TRUE = 1, FALSE = 0

- 대소문자 구분하기에 모든 글자는 대문자로 기입

명령어 : C 'concentration(연결)'

> x = c(1, 20, 23, 40)

> y = c("사과", "바나나", "오렌지")

> z = c(TRUE, FALSE, TRUE)

> x <- c(1, 20, 23, 40)

> y <- c("사과", "바나나", "오렌지")

> z <- c(TRUE, FALSE, TRUE)

 

벡터와 벡터의 결합 : 숫자와 문자 벡터가 합쳐지면 문자형 벡터로 인식됨

> x <- c(1, 20, 23, 40)

> y <- c("사과", "바나나", "오렌지")

> xy <- c(x,y)

> xy
[1] "1"      "20"     "23"     "40"     "사과"  "바나나" "오렌지"

 

행렬

행과 열을 갖는 m * n 형태의 직사각형

명령어 : matrix(데이터를 묶은 벡터, ncol() or nrow() 옵션, byrow=T)

> mx = matrix(c(1,2,3,4,5,6), ncol=2)
> mx
     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6
> mx = matrix(c(1,2,3,4,5,6), ncol=2, byrow = T)
> mx
     [,1] [,2]
[1,]    1    2
[2,]    3    4
[3,]    5    6

 

벡터 합쳐서 새로운 행렬 생성 가능

rbind : 기존의 행렬에 행을 추가하는 형태

cbind : 기존의 행렬에 열을 추가하는 형태

> r1=c(10,20)
> c1=c(20,20,20)
> rbind(mx,r1)
   [,1] [,2]
      1    2
      3    4
      5    6
r1   10   20

> cbind(mx,c1)
             c1
[1,] 1 2 20
[2,] 3 4 20
[3,] 5 6 20

명령어들을 이용해 데이터 프레임을 합치면 데이터 프레임 형태로 합침

 

데이터 프레임

행렬과 유사한 2차원 목록 데이터 구조, 행렬과 다르게 열이 서로 다른 타입 가질 있음

다루기가 쉽고 정보를 많이 담아 가장 많이 쓰임

명령어 : data.frame 여러 개의 벡터를 하나의 프레임으로 합침

> income = c( 100, 200, 150, 300, 900)
> car = c("kia", "hyundai", "kia", "toyota", "lexus" )
> marriage = c(FALSE, FALSE, FALSE, TRUE, TRUE )
> mydat = data.frame(income, car, marriage)
> mydat
  income     car marriage
1    100     kia    FALSE
2    200 hyundai    FALSE
3    150     kia    FALSE
4    300  toyota     TRUE
5    900   lexus     TRUE

 

. 외부 데이터 불러오기

 

CSV파일 불러오기

명령어 : read.table(header=T 줄을 변수명으로 지정, sep="," 쉼표로 구성된 파일임을 지정)

     read.csv 사용해도 가능 sep="," 구분자 표시 필요 없음

data1 <- read. table("D:\\DATA\\example.csv", header=T, sep=".")

\ 대신 \\ 사용함을 유의,  / 사용해도 무관

 

txt파일 불러오기

명령어 : read.table, sep="," 사용하지 않으면 텍스트 파일 불러오게됨

data2 < - read.table("D:\\DATA\\example.txt")

 

엑셀 파일 불러오기

- 엑셀을 csv 파일 형식으로 변경하여 불러오기

- RODBC 패키지 불러와서 엑셀 파일 가능하도록

> library(RODBC) # 패키지 열기

> new < - odbcConnectExcel(" c:\\data\\mydata" ) # 엑셀파일의 경로입력

> yourdata <- sqlFetch(new, "Sheet1") # 엑셀파일의 워크시트(sheet) 이름 입력

> close( new)

확장자를 생략하고 작성, 워크시트 대소문자 구분

 

. R 기초 함수

 

수열 생성하기

숫자를 반복해서 생성해줌

rep : 번째 인수 만큼 두번째 인수만큼 반복

> rep(1,3)
[1] 1 1 1
> rep(2:5, 3)
 [1] 2 3 4 5 2 3 4 5 2 3 4 5

 

seq : 번째 인수부터 1 증가하여 두번째 인수까지 수열 생성

 by = n 옵션 추가하여 n 증가 가능

 length = m 옵션 추가 전체 범위의 개수가 m 되도록 생성

> seq(1,3)
[1] 1 2 3
> 1:3                #seq 같은 방법
[1] 1 2 3
> seq(1, 11, by=2)
[1]  1  3  5  7  9 11
> seq(1, 11, length=6)
[1]  1  3  5  7  9 11
> seq(1, 11, length=8)
[1]  1.000000  2.428571  3.857143  5.285714  6.714286 8.142857  9.571429 11.000000

 

기초적인 수치 계산

사칙연산

> a=1:10
> a
 [1]  1  2  3  4  5  6  7  8  9 10
> a+a
 [1]  2  4  6  8 10 12 14 16 18 20
> a-a
 [1] 0 0 0 0 0 0 0 0 0 0
> a*a
 [1]   1   4   9  16  25  36  49  64  81 100
> a/a
 [1] 1 1 1 1 1 1 1 1 1 1

 

기본적은 벡터 생성 전치행렬 t(a) 1 3열로 변경하여 행렬 가능

명령어 : %*%

> a=c(2,7,3)
> a
[1] 2 7 3
> t(a)   #전치행렬
     [,1] [,2] [,3]
[1,]    2    7    3
> A=a%*%t(a)
> A
     [,1] [,2] [,3]
[1,]    4   14    6
                =  2,7,3 * 2       
[2,]   14   49   21
              =  2,7,3 * 7
[3,]    6   21    9
                =  2,7,3 * 3

 

행렬 * 연산 실행하면 단순 스칼라 결과

> mx=matrix(c(23,41,12,35,67,1,24,7,53), nrow=3)
> mx
     [,1] [,2] [,3]
[1,]   23   35   24
[2,]   41   67    7
[3,]   12    1   53
> 5*mx
     [,1] [,2] [,3]
[1,]  115  175  120
[2,]  205  335   35
[3,]   60    5  265

 

행렬의 역행렬 명령어 : solve

> solve(mx)
            [,1]        [,2]        [,3]
[1,] -0.35743822  0.18466969  0.13746848
[2,]  0.21069087 -0.09389813 -0.08300555
[3,]  0.07695411 -0.04004034 -0.01069087

 

평균 mean, 분산 var, 표준편차 sd

> a = 1:10
> mean(a)
#평균
[1] 5.5
> var(a) #분산
[1] 9.166667
> sd(a) #표준편차
[1] 3.02765

 

sum, 중앙값 median, 자연로그 log

> sum(a) #
[1] 55
> median(a) #중앙값
[1] 5.5
> log(a) #자연로그
 [1] 0.0000000 0.6931472 1.0986123 1.3862944 1.6094379
 [6] 1.7917595 1.9459101 2.0794415 2.1972246 2.3025851

 

서로 다른 벡터에 대한 공분산 cov, 상관계수 cor

> b=log(a) #자연로그값 생성
> cov(a,b)
#공분산
[1] 2.112062
> cor(a,b) #상관계수
[1] 0.9516624

 

summary 함수 : 사분위수, 최소값, 최대값, 중앙값, 평균

> summary(a)
   Min. 1st Qu.  Median    Mean  3rd Qu.    Max.
   1.00    3.25    5.50  
        5.50     7.75   10.00

 

. R 데이터 핸들링

: R 객체지향 언어, 변수내 요소 참조 직관적

 

벡터형 변수

문자형 변수를 [ n 번째] 지정해주면 해당하는 값만 불러옴

[ -n번째 ] 해당 원소만 제외하고 값을 불러옴

여러 원소 불러오고자 때는 c 명령어 사용하여 가능

> b[2] # 2번째 값만
[1] "b"
> b[-2] # 2번째 값만 빼고
[1] "a" "c" "d" "e"
> b[c(2,3)] # 2,3 번째 원소만 불러올때 C 명령어 사용
[1] "b" "c"

 

행렬/데이터 프레임 형태의 변수

데이터 프레임에 대해서도 특정 원소/요소 참조 가능

[ m번째, n번째 ] 값을 지정하거나 [-m, ] 또는 [ ,-n] 제외 가능

다만, [-m,-n]으로 지정하여 하나의 원소 제외 불가능

하나의 숫자 아니라 여러 숫자형 벡터도 적용 가능

> mydat[3,2] #3 2열의 값을 불러옴
[1] kia
Levels: hyundai kia lexus toyota
> mydat[,2] #2열의 값을 불러옴
[1] kia     hyundai kia     toyota  lexus 
Levels: hyundai kia lexus toyota
> mydat[4,] # 4행의 값을 불러옴
  income    car marriage
4    300 toyota     TRUE
> mydat[-3,] # 3행의 값만 빼고 불러옴
  income     car marriage
1    100     kia    FALSE
2    200 hyundai    FALSE
4    300  toyota     TRUE
5    900   lexus     TRUE
> mydat[,-2] # 2열의 값만 빼고 불러옴
  income marriage
1    100    FALSE
2    200    FALSE
3    150    FALSE
4    300     TRUE
5    900     TRUE

 

. 반복 구문과 조건문

 

for 반복 구문

for 조건 하에 i 값을 하나씩 증가시켜 { } 안의 구문을 반복 실행

> a = c() # a 벡터 생성
> for (i in 1:9){
+   a[i]
= i*i       #1~9까지의 곱을 이루게

+ }

> a
[1]  1  4  9 16 25 36 49 64 81

 

조건 : 1~100까지 i 1 증가하여 100 반복하여 더하기

> isum = 0
> for (i in i:100){
+   isum = isum+i
+ }
> cat("1~100 sum = ", isum, "
\n")
1~100 sum =  5014

 

while 반복 구문

for 구문과 다르게 괄호안의 조건이 만족 , 중괄호 안의 구문 반복

for 구문은 반복 횟수를 정하는 반면, while 구문은 정해지 않음

> x=1
> while(x<5){
+   x=x+1
+   print(x)
+ }
[1] 2
[1] 3
[1] 4
[1] 5

 

if~else 조건문

if 조건의 특정 조건이 만족되는 경우 구문 실행, 만족 안되면 else 이하의 조건 부여

> StatScore = c(88, 90, 78, 84, 76, 68, 50, 48, 33, 70 , 48, 66, 88, 96, 79, 65, 27, 88, 96,
+               33, 64, 48, 77, 18, 26, 44, 48, 68, 77 , 64, 88, 95, 79, 88, 49, 30 , 29, 10, 49, 88)
> over70 = rep(0,40)
          # 0 40개인 숫자 벡터
> for (i in 1:40) {
  
+ if(StatScore[i]>=70) over70[i]=1
     #70 이상이면 i 값을 1 변경 나머지는 0으로
+ else over70[i]=0 }
> over70
 [1] 1 1 1 1 1 0 0 0 0 1 0 0 1 1 1 0 0 1 1 0 0 0 1 0 0 0
[27] 0 0 1 0 1 1 1 1 0 0 0 0 0 1
> sum(over70)
[1] 18

 

 

. 사용자 정의 함수

function : 사용자가 직접 복잡한 함수 구성 사용 가능

함수 이름 = function(x,y,z) 으로 인수 작성

> addto = function(a){
+   isum=0
+   for(i in 1:a){
+     isum=isum+i
+   }
+   print(isum)
+ }
> addto(100)
[1] 5050
> addto(50)
[1] 1275

 

 

. 기타 유용한 기능들

 

paste

- 입력받은 문자열을 하나로 붙여줌

- 'sep=' 옵션을 통해 붙이고자 하는 문자열 사이 구분자를 삽입

> number=1:10
> alphabet=c("a","b","c")
> paste(number, alphabet)
 [1] "1 a"  "2 b"  "3 c"  "4 a"  "5 b"  "6 c"  "7 a"
 [8] "8 b"  "9 c"  "10 a"
> paste(number, alphabet, sep = " to the ")
 [1] "1 to the a"  "2 to the b"  "3 to the c"
 [4] "4 to the a"  "5 to the b"  "6 to the c"
 [7] "7 to the a"  "8 to the b"  "9 to the c"
[10] "10 to the a"

 

substr

- 주어진 문자열에서 특정 문자열 추출

> substr("BigDataAnalysis", 1, 4)
[1] "BigD"
> country=c( "Korea" , "Japan" , "China" , "Singapore" , "Russia" )
> substr(country, 1,3)
[1] "Kor" "Jap" "Chi" "Sin" "Rus"

 

자료형 데이터 구조 변환

- 주어진 객체의 데이터 구조를 다른 구조로 변경 가능

 

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

as.list(x) : 리스트 형식으로 변환

as.matrix(x) : 형렬 형식으로 변환

as.matrix 데이터 프레임을 행렬로 변환 가능, 숫자는 문자 강제변환

as.vector(x) : 벡터 형식으로 변환

as.factor(x) : 팩터 형식으로 변환

as.integer(x) : 정수형 벡터 변환

as.numeric(x) : 수치형 벡터로 변환

as.character(x) : 문자형 벡터로 변환

 

논리형 변환

as.numeric(TRUE / FALSE) = FALSE 0, TRUE1

as.logical(x) : 0이면 FALSE, 0 아닌 모든 값을 TRUE

> as.numeric(FALSE)
[1] 0
> as.numeric(TRUE)
[1] 1
> as.logical(0)
[1] FALSE
> as.logical(0.45)
[1] TRUE

 

문자열을 날짜로 변환

Data 객체 변환

as.Data() : 기본으로 yyyy-mm-dd 가정함, 다른 형으로 변경 'format='옵션활용

→ format="%m/%d/%Y" 형으로 변경 사용 가능, Y 대문자

Sys.Data() : 현재 날짜를 변환

> as.Date("2015-01-13")
[1] "2015-01-13"

> as.Date("01/13/2015",format="%m/%d/%Y")
[1] "2015-01-13"

> Sys.Date()
[1] "2018-08-22"

 

날짜를 문자열로 변환

format(데이터, 포맷)

as.character()

> format(Sys.Date())     #아래와 같은 형식으로 나타남, 형식 변환을 주고 싶음 포맷 안에 포맷 기준작성
[1] "2018-08-22"
> as.character(Sys.Date())
[1] "2018-08-22"
> format(Sys.Date(),format="%m/%d/%Y")
[1] "08/22/2018"

 

> format(Sys.Date(),'%a')   #요일
[1] "수"
> format(Sys.Date(),'%b')   #
[1] "8"
> format(Sys.Date(),'%m')   #, 두자리 숫자
[1] "08"
> format(Sys.Date(),'%d')   #, 두자리 숫자
[1] "22"
> format(Sys.Date(),'%y')    #연도, 두자리 숫자
[1] "18"
> format(Sys.Date(),'%Y')    #연도, 네자리 숫자
[1] "2018"

 

5) 그래픽 기능

낮은 단계 그래픽 : 설정, 색변경

높은 단계 그래픽 : 함수들을 이용해서 하나의 그래프 구현 패키지 활용 가능

R 스튜디오에서는 Plot 탭에서 확인 가능

 

. 산점도 그래프

plot(x,y) 또는 plot(y ~ x)

평면에 점을 찍어 표현

> height = c( 170,168,174, 175,188,165,165,190 ,173, 168,159,170,184,155,165)
> weight = c(68,65,74,77 ,92 ,63,67 ,95,72,69,60 ,69,73, 56,55 )
> plot(height, weight)

> plot(weight~height)


 

 

. 산점도 배열

pairs(변수, main = 최상단 제목표기, pch= 찍히는 점의 모양, bg=백그라운드 색상)

각각의 변수들에 대해서 각각의 산점도를 한눈에 있도록 행렬

> pairs(iris[1:4], main="Andreson's Iris Data",

pch=21, bg=c("red", "green3", "blue")[unclass(iris$Species)])

 


 

. 히스토그램과 상자그림

hist(벡터값, prob=T 상대도수 표시)

boxplot(벡터값)

> hist(StatScore)
> hist(StatScore, prob=T)
#상대도수 표시, 중간 그래프
> boxplot(StatScore
)

 


 

2 데이터 마트

 

모델링 : 데이터 마이닝에서 다양한 분석기법을 적용해 모델을 개발하는 과정

모델링 도구 : DB에서 직접 값을 가져다 변형할 있는 기능 제공

모델링 분석에 앞서 수집, 변형 과정 필요 정리된 데이터 개발하면 신속한 모델링 가능

데이터 마트 : 데이터의 부분, 특정 사용자가 관심 갖는 데이터를 담은 작은 규모의 데이터 웨어하우스

사용자의 요구 항목에 따라 체계적으로 분석하기 위한 다양한 정보를 담은 경영 활동을 도울 시스템

데이터 웨어하우스와는 사용자의 기능 제공 범위를 기준으로 구분함(데이터 웨어하우스는 정부기간)

 

1. R reshape 활용한 데이터 마트 개발

데이터 셋에 대한 일종의 변형 필요 , 데이터 재정렬 기법이 필요

밀집화(aggregation) : 복잡한 데이터를 축소하거나 재정렬, 엑셀 - 피벗테이블, 정보 손실 발생

reshape : 정보를 그대로 유지하는 것이 차이점

- melt : id 있는 변수를 기준으로 변수를 variable 이름의 데이터를 만들고, value 저장하여 표준형식 변환

- cast : melt 데이터를 ~ 이용해 y, x측의 변수 값으로 표시

> install.packages("reshape")
Installing package into ‘C:/Users/YGL_EDU/Documents/R/win-library/3.5’
(as ‘lib’ is unspecified)
trying URL '
https://cran.rstudio.com/bin/windows/contrib/3.5/reshape_0.8.7.zip'
Content type 'application/zip' length 168728 bytes (164 KB)
downloaded 164 KB

package ‘reshape’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
        C:\Users\YGL_EDU\AppData\Local\Temp\RtmpycHm6F\downloaded_packages
> library(reshape)

> data("airquality")
> head(airquality)
  Ozone Solar.R Wind Temp Month Day
1    41     190  7.4   67     5   1
2    36     118  8.0   72     5   2
3    12     149 12.6   74     5   3
4    18     313 11.5   62     5   4
5    NA      NA 14.3   56     5   5
6    28      NA 14.9   66     5   6
> head(airquality, 10)
   Ozone Solar.R Wind Temp Month Day
1     41     190  7.4   67     5   1
2     36     118  8.0   72     5   2
3     12     149 12.6   74     5   3
4     18     313 11.5   62     5   4
5     NA      NA 14.3   56     5   5
6     28      NA 14.9   66     5   6
7     23     299  8.6   65     5   7
8     19      99 13.8   59     5   8
9      8      19 20.1   61     5   9
10    NA     194  8.6   69     5  10
> names(airquality) #변수명(컬럼명) 확인
[1] "Ozone"   "Solar.R" "Wind"    "Temp"    "Month" 
[6] "Day"   
> names(airquality) = tolower(names(airquality)) # 변수명 대소문자 변경
> names(airquality)
[1] "ozone"   "solar.r" "wind"    "temp"    "month" 
[6] "day"   

 

> aqm = melt(airquality, id=c("month", "day"), na.rm=TRUE)
> aqm
    month day variable value
1       5   1    ozone  41.0
2       5   2    ozone  36.0
3       5   3    ozone  12.0
4       5   4    ozone  18.0
5       5   6    ozone  28.0
6       5   7    ozone  23.0

 

> a <- cast(aqm, day ~ month ~ variable)
> a
, , variable = ozone

month
day    5  6   7   8  9

 

 

, , variable = solar.r

month
day    5   6   7   8   9
  1  190 286 269  83 167

 

, , variable = wind

month
day     5    6    7    8    9
  1   7.4  8.6  4.1  6.9  6.9

 

, , variable = temp

month
day   5  6  7  8  9
  1  67 78 84 81 91

 

> b <- cast(aqm, month ~ variable, mean) #mean 함수 적용하여 평균값 산출
> b
  month    ozone  solar.r      wind     temp
1     5 23.61538 181.2963 11.622581 65.54839
2     6 29.44444 190.1667 10.266667 79.10000
3     7 59.11538 216.4839  8.941935 83.90323
4     8 59.96154 171.8571  8.793548 83.96774
5     9 31.44828 167.4333 10.180000 76.90000

 

> c <-cast(aqm, month~ . |variable, mean) # | 이용하여 산출물을 분리해서 표시
> c
$`ozone`
  month    (all)
1     5 23.61538
2     6 29.44444
3     7 59.11538
4     8 59.96154
5     9 31.44828

$solar.r
  month    (all)
1     5 181.2963
2     6 190.1667
3     7 216.4839
4     8 171.8571
5     9 167.4333

$wind
  month     (all)
1     5 11.622581
2     6 10.266667
3     7  8.941935
4     8  8.793548
5     9 10.180000

$temp
  month    (all)
1     5 65.54839
2     6 79.10000
3     7 83.90323
4     8 83.96774
5     9 76.90000

> d <- cast(aqm, month ~ variable, mean, margins = c("grand_row", "grand_col")) # margin 총계 구하기
> d
  month    ozone  solar.r      wind     temp    (all)
1     5 23.61538 181.2963 11.622581 65.54839 68.70696
2     6 29.44444 190.1667 10.266667 79.10000 87.38384
3     7 59.11538 216.4839  8.941935 83.90323 93.49748
4     8 59.96154 171.8571  8.793548 83.96774 79.71207
5     9 31.44828 167.4333 10.180000 76.90000 71.82689
6 (all) 42.12931 185.9315  9.957516 77.88235 80.05722

 

> e <- cast(aqm, day ~ month, mean, subset=variable=="ozone") # 오존에 대한 결과값만 subset 으로 확인
> e
   day   5   6   7   8   9
1    1  41 NaN 135  39  96
2    2  36 NaN  49   9  78
3    3  12 NaN  32  16  73
4    4  18 NaN NaN  78  91

 

> f <- cast(aqm, month ~ variable, range) # range 최소 X1, 최대 X2 동시에 표시해
> f
  month ozone_X1 ozone_X2 solar.r_X1 solar.r_X2 wind_X1 wind_X2 temp_X1
1     5        1      115          8        334     5.7    20.1      56
2     6       12       71         31        332     1.7    20.7      65

 

 

2. sqldf 이용한 데이터 분석

표준 SQL 사용되는 문장 처리 가능, 특수문자는 ' ' 묶어줘서 사용 가능

 

> install.packages("sqldf")
Installing package into ‘C:/Users/YGL_EDU/Documents/R/win-library/3.5’
(as ‘lib’ is unspecified)
trying URL '
https://cran.rstudio.com/bin/windows/contrib/3.5/sqldf_0.4-11.zip'
Content type 'application/zip' length 78176 bytes (76 KB)
downloaded 76 KB

package ‘sqldf’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
        C:\Users\YGL_EDU\AppData\Local\Temp\RtmpycHm6F\downloaded_packages
> library(sqldf)
필요한 패키지를 로딩중입니다: gsubfn
필요한 패키지를 로딩중입니다: proto
필요한 패키지를 로딩중입니다: RSQLite
Warning message:
패키지 ‘sqldf’는 R 버전 3.5.1에서 작성되었습니다
> data("iris")
> sqldf("select*from iris")
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1            5.1         3.5          1.4         0.2     setosa
2            4.9         3.0          1.4         0.2     setosa

> sqldf("select*from iris limit 10")    # 10개만 보여주기 가능 head 에서 숫자 지정해서 보여주기와 같은 기능
   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1           5.1         3.5          1.4         0.2  setosa
2           4.9         3.0          1.4         0.2  setosa
3           4.7         3.2          1.3         0.2  setosa
4           4.6         3.1          1.5         0.2  setosa
5           5.0         3.6          1.4         0.2  setosa
6           5.4         3.9          1.7         0.4  setosa
7           4.6         3.4          1.4         0.3  setosa
8           5.0         3.4          1.5         0.2  setosa
9           4.4         2.9          1.4         0.2  setosa
10          4.9         3.1          1.5         0.1  setosa

> sqldf("select count(*) from iris where Species like 'se%'") # like 사용시  ' '작은 따옴표 붙여서 사용
  count(*)
1       50

 

3. plyr

데이터를 분리하고 처리한 다음, 다시 결합하는 데이터 처리 기능 제공

- apply : 데이터와 출력변수를 동시에 배열로 치환하여 처리할 있도록 도와줌

- multi-core

 

d = 데이터 프레임(data.frame), a = 배열(array), l = 리스트(list)

 

입력되는 데이터 형태

 

데이터 프레임

리스트

배열

데이터 프레임

ddply

ldply

adply

리스트

dlply

llply

alply

배열

daply

laply

aaply

dlply = 데이터 프레임으로 들어와서 리스트 형태로 출력되는

 

> set.seed(1)  # 난수 생성시에 일정하게 고정 시키는 역할
> d = data.frame(year=rep(2012:2014, each = 6), count =round(runif(9,0,20)))
> print(d)
   year count
1  2012     5
2  2012     7
3  2012    11
4  2012    18
5  2012     4
6  2012    18
7  2013    19
8  2013    13
9  2013    13
10 2013     5
11 2013     7
12 2013    11
13 2014    18
14 2014     4
15 2014    18
16 2014    19
17 2014    13
18 2014    13

runif = 생성할 난수의 개수, 최소값, 최대값

 

> ddply(d, "year", function(x){
+   mean.count = mean(x$count)
  # 평균값
+   sd.count = sd(x$count)
             # 표준편차
+   cv = sd.count/mean.count
        # 변동계수
+   data.frame(cv.count=cv)
+ })
  year  cv.count
1 2012 0.5985621
2 2013 0.4382254
3 2014 0.3978489

 

> ddply(d, "year", summarise, mean.count = mean(count)) #summarise 새로 생긴 변수 값만 보여줌
  year mean.count
1 2012   10.50000
2 2013   11.33333
3 2014   14.16667
> ddply(d, "year", transform, total.count = sum(count)) #transform 계산시 사용된 변수도 함께 보여줌
   year count total.count
1  2012     5          63
2  2012     7          63
3  2012    11          63
4  2012    18          63
5  2012     4          63
6  2012    18          63
7  2013    19          68
8  2013    13          68
9  2013    13          68
10 2013     5          68
11 2013     7          68
12 2013    11          68
13 2014    18          85
14 2014     4          85
15 2014    18          85
16 2014    19          85
17 2014    13          85
18 2014    13          85

 

4. 데이터 테이블

데이터 프레임과 유사하지만, 보다 빠른 그룹화와 순서화, 짧은 문장 지원이 가능

64비트 RAM 충분히 많을 효율적

행번호가 : 으로 되어 있고 데이터 프레임에서 데이터 테이블 형식으로 쉽게 변환

데이터 프레임보다 데이터 테이블로 생성하는 것이 빠르고 자료를 검색에도 빠름(무조건 빠른것은 아님)

데이터 프레임이 벡터 검색 방식이고 데이터 테이블은 인덱스를 활용한 바이너리 검색 방법

system.time 으로 검색 속도 있음

 

> install.packages("data.table")
Installing package into ‘C:/Users/YGL_EDU/Documents/R/win-library/3.5’
(as ‘lib’ is unspecified)
trying URL '
https://cran.rstudio.com/bin/windows/contrib/3.5/data.table_1.11.4.zip'
Content type 'application/zip' length 1829590 bytes (1.7 MB)
downloaded 1.7 MB

package ‘data.table’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
        C:\Users\YGL_EDU\AppData\Local\Temp\RtmpycHm6F\downloaded_packages
> library(data.table)
data.table 1.11.4  Latest news: http://r-datatable.com

다음의 패키지를 부착합니다: ‘data.table’

The following object is masked from ‘package:reshape’:

melt

Warning message:
패키지 ‘data.table’는 R 버전 3.5.1에서 작성되었습니다

 

> DT = data.table(x=c("b","b","b","a","a"), v=rnorm(5)) #rnorm 정규분포에서 5 난수 생성
> DT
   x            v
1: b -1.539950042
2: b -0.928567035
3: b -0.294720447
4: a -0.005767173
5: a  2.404653389

> data(cars)
> head(cars)
  speed dist
1     4    2
2     4   10
3     7    4
4     7   22
5     8   16
6     9   10
> CARS <- data.table(cars)
> head(CARS)
   speed dist
1:     4    2
2:     4   10
3:     7    4
4:     7   22
5:     8   16
6:     9   10

> tables()      # 테이블의 크기, 용량에 대해서 있다.
   NAME NROW NCOL MB       COLS KEY
1: CARS   50  
       2      0   speed,dist   
2:   DT  
     5          2      0          x,v   
Total: 0MB

> sapply(CARS,class)
    speed      dist
"numeric" "numeric"

> DT[2,] #2번행 조회 DT[2] 로도 검색 가능
   x         v
1: b -0.928567
> DT[DT$x=="b"]
   x          v
1: b -1.5399500
2: b -0.9285670
3: b -0.2947204

> setkey(DT,x)    #키가 x 정해지고 정렬되었다.
> DT
   x            v
1: a -0.005767173
2: a  2.404653389
3: b -1.539950042
4: b -0.928567035
5: b -0.294720447
> tables()              #키가 x 정해짐을 있음
   NAME NROW NCOL MB       COLS      KEY
1: CARS 
      50     2      0    speed,dist   
2:   DT   
        5      2      0            x,v         x
Total: 0MB
> DT["b",]
   x          v
1: b -1.5399500
2: b -0.9285670
3: b -0.2947204

> DT["b",mult="first"]    # 첫번째 결과
   x        v
1: b -1.53995
> DT["b",mult="last"]   # 마지막 결과
   x          v
1: b -0.2947204

 

3 결측값 처리와 이상값 검색

 

1. 데이터 탐색

1) 데이터 기초 통계

head(테이블이름) : 앞선 6줄만 먼저 보여줌

head(테이블이름, n) : 앞선 n줄만 보여줌, 원하는 개수 넣을 있음

str(테이블이름) : 데이터의 구조를 파악 가능

summary(테이블이름) : 기초 통계량 확인, 최소값, 최대값, 사분위값, 평균값, 중위값, 범주형이면 빈도수

cov(테이블 내의 범위) : 공분산

cor(테이블 내의 범위) : 상관계수

선형 상관관계 강도 파악

 

2. 결측값 처리

결측값도 의미있는 경우가 있음, 어떻게 처리하느냐가 전체 작업속도에 영향을

결측값 처리 패키지 : Amelia II, Mice, mistools

결측값 : NA

불가능한값 : NaN (0으로 나누는 경우 )

결측값 여부 확인 : is.na

Amilia imputation 사용하면 효율적으로 데이터 결측값을 변경할 있음

 

> y <- c(1,2,3,NA)
> is.na(y)
    # 결측값 여부
[1] FALSE FALSE FALSE  TRUE

 

> mydata[mydata$v1==99, "v1"]<-NA     # 99 NA 변경할때

> mydata[!complete.cases(mydata),]       #넓은 범위의 결측값을 삭제할

 

 

> x<-c(1,2,NA,3)
> mean(x)
                    #결측값이 포함되어 있다면 결과는 NA
[1] NA
> mean(x, na.rm=T)    # 결측값을 제외하기
[1] 2

 

3. 이상값 검색

전처리를 어떻게 할지 결정할 , 부정사용방지 시스템에서 규칙을 발견할 사용

관련 알고리즘 : ESD(평균으로 표준편차 만큼 떨어진 ), MADM

일반적으로 사분위값으로 판단 주요 변수 특성 파악, 부정사용방지 프로젝트는 집중적으로 봐야함

 

a1 : 의도하지 않게 잘못 입력한 경우

a2 : 의도하지 않게 입력되었으나 분석 목적에 부합하지 않아 제거해야 하는 경우, 수작업을 거래 정보 입력

a3 : 의도하지 않은 현상이지만 분석에 포함해야 하는 경우, 고객 행동분석

b1 : 의도된 이상값, 사기(fraud)

→ a1, a2 bad data, a3, b1 이상값

 

- 상자그림으로 식별 가능

> x=rnorm(100)
> boxplot(x)
> x=c(x, 19, 28, 30)
  #임의의 결측값 넣어줌
> outwith=boxplot(x)
> outwith$out
           #결측값 확인 가능
[1] 19 28 30

 

 

 

 

- outliers 패키지 사용

outliers() : 평균과 가장 차이가 있는

> library(outliers)
> set.seed(1234)
> y=rnorm(100)
> outlier(y)
   #평균과 가장 차이나는 출력
[1] 2.548991
> outlier(y, opposite = TRUE) #반대방향으로 가장 차이 나는
[1] -2.345698

 

> dim(y) = c(20,5) # 20, 5 행렬 생성
> outlier(y)
# 열의 평균과 가장 차이가 나는 열별로 출력
[1] 2.415835 1.102298 1.647817 2.548991 2.121117
> outlier(y, opposite = TRUE)
[1] -2.345698 -2.180040 -1.806031 -1.390701 -1.372302
> boxplot(y)


1 마스터 플랜 수립

 

1. 분석 마스터 플랜 수립 프레임워크

- 우선순위 설정 : 전략적 중요도, 비즈니스 성과 ROI, 분석과제의 실행 용이성

- 적용범위 방식 고려 : 업무 내재화 적용 수준, 별도의 분석 화면 일단 적용할지

 분석 데이터 /외부 적용 수준 고려, 분석 기술 적용 수준


 

- 정보전략계획 ISP(Information Strategy Planning) : 기업, 공공기관 시스템 중장기 로드맵 정의 절차

 

2. 수행 과제 도출 우선순위 평가

- 정의된 데이터 과제에 대한 실행 순서를 정하는

- 업무 영역별로 도출된 분석 과제를 평가기준에 따라 평가, 과제의 후행 관계 고려, 적용 순위 조정

- 전략적 중요도, 실행 용이성 기업에서 고려하는 중요 가치 기준에 따라 다양한 관점 우선순위 수립


 

- 과제 우선순위 평가기준

1) 전략적 중요도

- 전략적 필요성 : 전략적 목표 업무에 직접적이 연관관계가 밀접한 정도

    이슈 미해결 발생하게 위험 손실에 대한 정도

- 시급성 : 사용자 요구사항, 업무능률 향상을 위해 시급히 수행되어야 하는 정도

 향후 경쟁우위 확보를 위한 중요성 정도

2) 실행 용이성

- 투자 용이성 : 기간 인력 투입 용이성, 비용 투자 예산 확보 가능성

- 기술 용이성 : 적용 기술의 안정성 검증, 응용시스템, 하드웨어 유지보수 용이성

 개발 스킬 성숙도 신기술 적용성 정도

 

- 빅데이터 4V

- 투자비용측면 : 크기 - 저장에 따른 비용 투자

    다양성 - 유형에 따라 정형/비정형/반정형, 외부/내부/소셜 등을 입수하는 투자

   생성속도 - 빠르게 가공, 분석하는 기술 요구, 아키텍쳐의 변형에 따른 투자

- 비즈니스 효과 : 가치 - 데이터 분석 통한 달성하고자 하는 목표 가치 


 

- ROI 요소 고려한 우선순위 평가 기준

- 전략적 중요도에 따른 시급성이 가장 중요한 기준 : 현재 또는 미래 적정 시기 고려

- 분석순위를 고려한 난이도 : 비용, 범위 측면에서 적용하기 쉬운지, 어려운지

- 과제 범위를 시범과제 형태로 할지, 처음부터 크게 할지, 소스는 /외부 어디까지 쓸지


 

-포트폴리오 4분면 분석을 통한 과제 우선순위 선정 기법


- 우선적인 분석 과제 적용 3영역, 가장 늦은 것은 2영역

- '시급성' : 3 → 4 → 2

1영역은 경영진, 담당자의 의사결정에 따라 조정 가능 난이도 조율에 따라 3으로 변경

- '난이도' : 3 → 1 → 2

기본 시스템 영향 최소화, 별도 분리해서 난이도 조절하면 우선순위 조절 가능

- 분석과제를 일관적으로 할지, 부분적으로 할지에 따른 의사결정 필요


 

3. 이행계획 수립

1) 로드맵 수립

- 사분면 분석 이후 과제별 적용범위 방식을 고려하여 우선순위 최종 결정 단계적 구현 로드맵


2) 세부 이행계획 수립

- 폭포수 방식 또는 정련의 과정 반복하여 완성도 높힘, 혼합형 적용


 

2 분석 거버넌스 체계 수립

 

1. 거버넌스 체계 개요

- 의사결정 강조될수록 데이터 분석 활용을 위한 관리 중요해짐, 기업문화로 정착하고 분석 업무 고도화

- 거버넌스 체계

- Organization : 분석 기획, 관리 추진 조직

- Process : 과제 기획, 운영 프로세스

- System : 분석 관련 시스템, IT 시스템

- Data : 데이터 거버넌스

- Human Resource : 분석 관련 교육, 마인드 육성 체계

 

2. 데이터 분석 성숙도 모델 수준 진단

- 데이터 분석 수준 진단을 통해 무엇을 준비하고 보완해야 하는지 유형 분석 방향성 결정

- 경쟁력 확보를 위해 선택과 집중, 보완점 등의 개선방안 도출

 

1) 분석 준비도(Readiness)

  • 분석 업무 파악 : 발생한 사실 분석 업무, 예측 분석 업무, 시물레이션 분석 업무,

최적화 분석 업무, 분석 업무 정기적 개선

  • 인력 조직 : 분석 전문가 직무 존재, 분석 전문가 교육 훈련 프로그램, 관리자들의 기본적 분석 능력

전자 분석업무 총괄 조직 존재, 경영진 분석 업무 이해 능력

  • 분석 기법 : 업무별 적합한 분석기법 사용, 분석 업무 도입 방법론, 분석기법 라이브러리

분석기법 효과성 평가, 분석기법 정기적 개선

  • 분석 데이터 : 분석 업무를 위한 데이터 충분성/신뢰성/적시성

비구조적 데이터 관리, 외부 데이터 활용 체계, 기준 데이터 관리(MDM)

  • 분석 문화 : 사실에 근거한 의사결정, 관리자의 데이터 중시, 회의 등에서 데이터 활용

경영진의 직관보다 데이터, 데이터 공유 협업 문화

  • IT 인프라 : 운영시스템 데이터 통합, EAI/ETL 데이터 유통체계, 분석 전용 서버 스토리지

빅데이터 분석 환경, 통계 분석 환경, 비주얼 분석 환경

 

2) 분석 성숙도(Maturity)

- CMMI (Capability Maturity Model Integration) : 소프트웨어 공학에서 개발 능력과 조직 성숙도 파악

단계

도입단계

활용단계

확산단계

최적화단계

설명

분석을 시작하여

환경과 시스템 구축

분석 결과를

실제 업무 적용

전사 차원

분석 관리 공유

분석 진화하여

혁신 성과 향상에 기여

비즈니스

부문

실적분석 통계

정기보고 수행

운영데이터 기반

미래 결과 예측

시물레이션

운영 데이터 기반

전사 성과 실시간 분석

프로세스 혁신 3.0

분석 규칙 관리

이벤트 관리

외부 환경분석 활용

최적화 업무 분석

실시간 분석

비즈니스 모델 진화

조직/역량

부문

일부 부서에서 수행

담당자 역량 의존

전문 담당부서

분석기법 수행

관리자 분석 수행

전사 모든 부서 수행

분석 COE 조직 운영

데이터 사이언티스트 확보

데이터 사이언티스트 그룹

경영진 분석 활용

전략 연계

IT 부문

데이터 웨어하우스

데이터 마트

ETL/EAI

OLAP

실시간 대시보드

통계 분석 환경

빅데이터 관리 환경

시물레이션 최적화

비주얼 분석

분석 전용 서버

분석 협업환경

분석 Sandbox

프로세스 내재화

빅데이터 분석

 

3) 분석 수준 진단 결과

- 준비형 : 낮은 준비도, 낮은 성숙도 → 사전 준비가 필요한 유형

- 정착형 : 낮은 준비도, 약간의 성숙도 → 분석의 정착이 필요한 유형

- 도입형 : 분석기업은 부족하지만, 조직 인력은 준비가 되어 있음 데이터 분석 바로 도입 가능

- 확산형 : 6가지 분석 구성요소 모두 갖추고 부분적으로 도입해 지속적인 확산이 가능한 기업


 

3. 분석 지원 인프라 방안 수립

- 단위별로는 복잡하고 비용 증대란 부작용, 분석 마스터 플랜을 장기적으로 안정적 고려 필요


 

- 플랫폼 : 분석 서비스를 위한 응용 프로그램이 실행될 있는 기초 시스템, 환경 제공


 

4. 데이터 거버넌스 체계 수립

- 전사 차원의 데이터 관리체계필요 : 중복 비표준에 따른 오류, 활용 저하의 문제점

- 전사 차원의 모든 데이터에 대하여 표준화된 관리 체계 수립하고 운영을 위한 프레임워크, 저장소 구축

- 관리 대상 : 마스터 데이터, 메타 데이터, 데이터 사전

- 가용성, 유용성, 통합성, 보안성, 안정성 확보 가능

- 독자적 수행 또는 전사 차원의 IT 거버넌스나 EA 구성 요소로 구축

- 빅데이터 관리, 데이터 최적화, 정보보호, 생명주기 관리, 카테고리별 관리 책임자 지정

 

- 데이터 거버넌스 구성요소

- 원칙 : 데이터 유지 관리 위한 지침과 가이드, 보안, 품질기준, 변경관리

- 조직 : 데이터를 관리할 조직의 역할과 책임, 데이터 관리자, 데이터베이스 관리자, 데이터 아키텍트

- 프로세스 : 데이터 관리를 위한 활동과 체계, 작업절차, 모니터링 활동, 측정 활동

 

1) 데이터 표준화

- 데이터 표준 용어 설정 : 표준단어사전, 표준도메인사전, 표준 코드 구성, 상호점검 가능 프로세스

- 명명 규칙수립 : 언어별로 작성되어 매핑상태 유지

- 메타데이터 구축, 데이터 사전 구축 : 데이터 구조 체계 형성, 구조체계나 엔티티 관계 그래프 제공

2) 데이터 관리 체계

- 정합성 효율성을 위한 메타데이터와 데이터 사진의 관리 원칙 수립

- 항목별 상세 프로세스 생성, 관리, 운영을 위한 담당자 조직별 역할 책임 준비

- 데이터 생명 주기 관리 방안 수립 필요, 데이터 가용성 관리 비용 증대 문제 발생

3) 데이터 저장소 관리(Repository)

- 데이터 관리 체계 지원을 위한 워크플로우 관리용 응용 소프트웨어 지원

- 관리 대상 시스템과 인터페이스 통한 통제 필요

- 구조 변경에 따른 사전 영향 평가 수행, 효율적인 활용 가능

4) 표준화 활동

- 표준 준수 여부 주기적 점검, 모니터링 실시

- 안정적인 정착을 위한 계속적인 변화관리 주기적 교육 진행

- 표준화 개선 활동을 통한 실용성 증대

 

5. 데이터 조직 인력방안 수립

- 데이터 분석 조직

목표 : 기업의 경쟁력 확보를 위한 가치 발견, 최적화 목표

역할 : 업무 전반에 걸친 분석 과제 발굴, 의미있는 인사이트 찾아 실행하는 역할 수행

구성 : 다양한 분야의 지식과 경험을 가진 인력과 업무 담당자로 구성된 전사 또는 부서 조직


 

- 분석 조직 인력 구성 고려사항


 

- 분석 조직 구조

1) 집중형 조직구조

- 조직내 별도의 전담조직, 분석을 담당하여 전사의 분석 과제 우선순위 추진 가능

- 현업 부서와 분석 업무가 중복 또는 이원화 가능성

2) 기능 중심의 조직구조

- 일반적형태, 해당 업무 부서에서 직접 분석

- 전사적 관점의 핵심 분석 어려움, 특정 부서에 국한될 수도 중복될 수도 있음

3) 분산된 조직 구조

- 분석 조직 인력이 현업 부서에 배치함

- 전사적 차원의 우선순위 선정 수행 가능, 분석 결과 신속히 실무에 적용 가능


분석 전문 부서에 모아 인재들을 모아 구성, 조직 경쟁력 극대화 필요


 

6. 분석 과제 관리 프로세스 수립

- 과제 발굴 : 개별 조직이나 개인 아이디어 발굴, 과제화하여 풀로 관리하면서 프로젝트 선정

- 과제 수행 모니터링 : 팀을 구성하여 과제 실행, 지속적인 모니터링과 과제 결과 공유 개선

조직 분석 문화 내재화 경쟁력 확보 가능, 풀을 축적 관리 함으로 시행착오 최소화 가능


 

7. 분석 교육 변화 관리

- 분석 가치를 극대화, 내재화 하는 안정적인 추진기로 들어가기 위해서는 교육 마인드 육성 필요

- 분석 도입에 대한 문화적 대응


- 데이터 분석 방법 분석적 사고 교육


1 분석 기획 방향성 도출

분석기획 : 실제 분석 수행 , 수행할 과제의 정의 의도했던 결과를 도출할 있도록 관리할 사전 방안을 계획하는 작업

어떠한 목표(What) 달성하기 위해서(Why) 어떤 데이터를 가지고 어떤 방식으로(How) 수행할지 계획 수립

 

1. 분석 기획의 특징

-IT  기술 분석 기법에 치우치는 경향을 조심해야함, 균형잡힌 시각을 가지고 방향성 계획 수립

1) Math&Statistics

2) Information Technology

3) Domain Knowledge

 

- 분석의 대상(what) 분석의 방법(how) 따른 분석 주제 유형

1) 최적화(Optimization) : 분석 대상을 인지하고, 해결 방법도 알고 있는 경우

2) 솔루션(Solution) : 분석 대상은 인지했으나, 해결 방법을 모르는 경우

3) 통찰(Insight) : 분석 대상은 모르나, 기존 분석 방식 활용할 경우

4) 발견(Discovery) : 분석 대상도 모르고, 분석방법도 모르나 자체적으로 새롭게 도출 경우


최적화로 접근했지만 새로운 유형 발견하거나 새로운 솔루션 도출 하는 경우도 발생, 넘나듬

 

- 목표 시점 분석 기획 방안

- 과제 중심적인 접근 방식 : 과제 단위로 명확한 해결 위해 Quick - Win 방식

- 장기적인 마스터 플랜 방식 : 분석 문화 내재화를 위해 전사적이고 장기적 관점이 바람직함

- 문제해결을 위한 단기적인 접근방식과 분석과제 정의를 위한 중장기적인 마스터 플랜 접근 방식 융합

 

당면한 분석 주제의 해결

(과제 단위)

지속적 분석 문화 내재화

(마스터 플랜 단위)

1 목표

Speed & Test

Accuracy & Deploy

과제의 유형

Quick-Win

Long Term View

접근 방식

Problem Solving

Problem Definition

 

- 의미있는 분석 : 분석기술, IT 프로그래밍, 분석 주제 도메인 전문성, 의사소통, 마스터 플랜 도출

- 분석가 3가지 기본 역량 + 프로젝트 관리 역량, 리더십 역랑 필요

 

2. 분석 기획 고려사항

 

1) 가용한 데이터

: 데이터 확보가 필수적, 유형에 대한 분석이 우선시 되어야

- 정형데이터(DB 자료) / 비정형데이터(문자형) / 반정형데이터(스트리밍, 머신데이터 )

2) 적절한 유스케이스

: 바퀴를 재발명하지 마라, 기존에 구현되어있는 유사 솔루션 활용 공감대 얻음

3) 분석과제 수향을 위한 장애 요소

: 정확도를 위해 기간, 비용 상승 / 분석가만 이해하는 것이 아니라 사용자가 쉽게 사용할수 있는

: 실제 환경에서 갑작스러운 문제 발생에 대한 고려 / 일회성 분석이 아닌 조직 내재화를 위한 교육, 문화화


 

 

2 분석 방법론

 

1. 분석 방법론 개요

- 합리적의 의사결정이 장애물 : 고정관념, 편향된 생각, 프레이밍효과(동일한 상황에서 개인 판단이 변화)

체계화한 절차와 방법이 정리된 데이터 분석 방법론의 수립 필수적

: 상세한 절차, 방법, 도구와 기법, 템플릿과 산출물로 구성되어 어느정도 지식만 있음 활용 가능함

 

- 방법론 생성과정 : 선순환 과정을 통한 조직내 방법론 완성


 

- 방법론에 따른 다양한 모델

1) 폭포수 모델 : 순차적으로 진행하는 방법, 하향식모델, 단계 돌아가는 피드백 과정 수행

2) 나선형 모델 : 반복을 통한 점증적 개발 방법, 처음 시도하는 프로젝트 적용, 복잡도 상승 가능성

3) 프로토타입 모델

 

- 계층적 프로세스 모델

1) 단계(Phase) : 최상이 계층, 프로세스 그룹을 통해서 완성된 단계별 산출물 생성

  단계를 기준선으로 설정되어 관리, 버전관리 등을 통한 통재

2) 태스크(Task) : 단계는 태스크로 구성, 단위활동으로 물리적 또는 논리적 단위로 품질 검토 항목

3) 스텝(Step) : WBS(Work Breakdown Structure) 워크패키지에 해당

입력자료, 처리 도구, 출력자료로 구성된 단위 프로세스


 

2. KDD 분석 방법론

: Knowledge Discovery in Databases, 1996 Fayyad 체계적으로 정리한 데이터 마이닝 프로세스

: 데이터베이스에서 의미있는 지식 탐색하는 데이터 마이닝, 기계학습, 인공지능, 패턴인식, 시각과 응용가능

 

- 데이터 패턴 분석 절차

• 분석 대상 비즈니스 도메인의 이해

• 분석 대상 데이터셋 선택과 생성

• 데이터에 포함되어 있는 노이즈(Noise)와 이상값(Outlier) 등을 제거하는 정제작업이나 선처리

• 분석 목적에 맞는 변수를 찾고 필요시 데이터의 차원을 축소하는 데이터 변경

• 분석 목적에 맞는 데이터 마이닝 기법 선택

•분석 목적 에 맞는 데이터 마이닝 알고리즘 선택

• 데이터 마이닝 시행

데이터 마이닝 결과에 대한 해석

• 데이터 마이닝에서 발견된 지식 활용


 

1) 데이터셋 선택(Selection)

비즈니스 도메인에 대한 이해와 프로젝트 목표 설정

선택 프로세스를 통한 데이터 마이닝에 필요한 목표 데이터 구성, 요구되는 경우 반복 가능

2) 데이터 전처리(Preprocessing)

데이터셋에 포함되어 있는 잡음과 이상값, 결측치 식별, 필요시 제거 → 정제작업, 반복가능

3) 데이터 변환(Transformation)

분석 목적에 맞는 변수를 선택, 데이터의 차원 축소, 마이닝 가능한 데이터 셋으로 변경하는 프로세스 수행

4) 데이터 마이닝(Data Mining)

분석 목적에 맞는 데이터 마이닝 기법 알고리즘 선택 데이터 패턴 찾거나 분류 또는 예측 작업 시행

필요에 따라 전처리, 변환 프로세스 병행 가능

5) 데이터 마이닝 결과 평가(Interpretation/Evaluation)

결과에 대한 해석과 평가, 분석 목적과의 일치성 확인, 전체과정 반복 수행 가능

 

3. CRISP-DM 분석 방법론

: Cross Industry Standard Process for Data Mining, 1996 유럽연합 프로젝트에서 시작

: 계층적 프로세스 모델로 4 레벨 구성

 

1) 단계 : 최상위 레벨, 일반화 태스크를 단계별로 포함

2) 일반화 태스크 : 데이터 마이닝의 단일 프로세스를 완전하게 수행하는 단위

3) 세분화 태스크 : 일반화 태스크를 구체적으로 수행하는 레벨

ex) 데이터 정제의 일반화 태스크 범주형 또는 연속형 데이터 정제로 구체화 세분화 실행

4) 프로세스 실행 : 데이터 마이닝을 위한 구체적인 실행


 

- 프로세스 6단계 (폭포수 모델과 같은 일방향 아님, 단계 피드백 통해서 단계별 완성도 높힘)

1) 업무 이해

도메인 지식을 데이터 분석을 위한 문제 정의로 변경, 초기 프로젝트 계획 수립

- 업무 목적 파악, 상황 파악, 데이터마이닝 목표 설정, 프로젝트 계획 수립

2) 데이터 이해

데이터 수집, 속성 이해하기 위한 과정, 품질에 대한 문제점 식별, 인사이트 발견

- 초기 데이터 수집, 데이터 기술분석, 데이터 탐색, 데이터 품질 확인

3) 데이터 준비

적합한 데이터 셋을 편성하는 단계, 많은 시간 소요

- 분석용 데이터 선택, 데이터 정제, 분석용 데이터셋 편성, 데이터 통합, 데이터 포맷팅

4) 모델링

모델링 기법, 알고리즘 선택, 파라미터 최적화 단계, 필요한 경우 데이터 준비 단계 반복

테스트용 프로세스와 데이터셋으로 평가하여 모델 과적합 등의 문제 발견, 대응 방안마련

- 모델링 기법 선택, 모델 테스트 계획 설계, 모델 작성, 모델 평가

5) 평가

프로젝트 목적에 부합하는지 평가, 데이터 마이닝 결과를 수용할 최종 판단하는 과정

- 분석결과 평가, 모델링 과정 평가, 모델 적용성 평가

6) 전개

업무에 적용하기 위한 계획 수립, 모니터링과 유지보수 계획 마련

도메인, 데이터 품지, 운영 모델 등에 따라 생명주이 다양 상세한 전개 계획 필요 종료

- 전개 계획 수립, 모니터링과 유지보수 계획 수립, 프로젝트 종료보고서 작성, 프로젝트 리뷰


 

4. 빅데이터 분석 방법론

 

빅데이터를 분석하기 위한 방법론 : 계층적 프로세스 모델(단계-태스크-스탭)


 

1) 분석 기획

. 비즈니스 이해 범위 실행 : 비즈니스 이해, 도메인 문제점 파악

- 비즈니스 이해 : 도메인 이해, 업무 전문가의 지식 필요, 문제점 파악 필요

- 프로젝트 범위 설정 : 범위를 명확하게 설정, 모든 관계자 이해 일치, 프로젝트 범위 정의서 SOW

. 프로젝트 정의 계획 수립 : 프로젝트 범위 확정 단계, 진행의 기준선 설정

- 데이터 분석 프로젝트 정의 : 목표, KPI 등을 구체화한 정의서 작성, 평가 기준 설정

- 프로젝트 수행 계획 수립 : 수행 계획서 WBS 작성(목적, 배경, 기대효과, 방법, 일정, 조직, 방안 )

. 프로젝트 위험 계획 수립 : 인프라 구축 병행, 기존 시스템과 인터페이스 동반 등의 위험 요소

- 데이터 분석 위험 식별 : 산출물, 정리자료, 전문가 판단을 활용 위험식별, 우선순위 설정

- 위험 대응 계획 수립 : 위험 관리 계획서 (회피, 전이, 완화, 수용 구분된 대응 방안 수립)

 

2) 데이터 준비

. 필요 데이터 정의 : 모든 사람이 함께 작성

- 데이터 정의 : 다양한 원천 데이터 소스로부터 데이터 정의서 작성

- 데이터 획득방안 수립 : 데이터 수집에 따른 구체적 방안 수립 (/외부 데이터 획득 방안)

. 데이터 스토어 설계 : 프로젝트 별로 필요한 데이터 정의하여 전사 차원의 스토어 설계

- 정형 데이터 : 구조화된 형식, DBMS 사용, 논리적 물리적 설계 구분하여 설계

- 비정형 데이터 : 하둡, NoSQL사용, 논리적 물리적 설계 구분하여 설계

. 데이터 수집 정합성 점검 : 품질 통제와 품질 보증 프로세스 수행

- 데이터 수집 저장 : 크롤링 ETL도구, API, 스크립트 프로그램 이용, 데이터 스토어 저장

- 데이터 정합성 점검 : 품질점검을 통한 정합성 확보, 보완작업 진행

 

3) 데이터 분석 : 수립된 프로젝트 목표를 달성하기 위해, 적당한 데이터셋이 없음 준비단계 반복 수행

. 분석용 데이터 준비 : 데이터셋 준비

- 비즈니스 확인 : 프로젝트 목표 확인, 비즈니스 파악

- 정형, 비정형 데이터 추출 분석 가능하도록 구조화된 형태로 구성, 작업공간에 분리

. 텍스트 분석 : 비정형 데이터 존재할 경우, 정형데이터와 통합 모델링 수행

- 텍스트 데이터 확인 추출 : 비정형 데이터 데이터 스토어 확인 추출

- 텍스트 데이터 분석 : 용어 사전 확보, 텍스트 시각화 도구 활용 의미 전달 명확

. 탐색적 분석

- 탐색적 데이터 분석 : 기초통계랑 산출, 데이터 자체 특성(중심성, 분포성, 산포성) 기초자료 준비

- 데이터 시각화 : 시스템화를 위한 시각화, 사용자 인터페이스, 프로토타입 활용

. 모델링 : 가정설정을 통해 통계 모델을 만들거나, 기계학습을 이용한 수행 모델 만드는

- 데이터 분할 : 데이터 셋을 훈련용과 테스트용으로 분할, 교차검증, 앙상블 기법 적용

- 데이터 모델링 : 분류, 예측, 군집 등의 모델 만들어 운영 시스템 적용, 통합 모델링 수행

- 모델 적용 운영 방안 : 알고리즘 설명서 작성, 의사코드 수준의 상세한 작성 필요, 모니터링

. 모델평가 검증

- 모델 평가 : 정의서 평가 기준에 따라 객관적 평가, 별도이 데이터 활용해서 분석

- 모델 검증 : 검증용 데이터 이용 모델 검증 작업 실시, 보고서 작성, 운영용 데이터로 최종 검증

. 모델적용 운영방안 수립

 

4) 시스템 구현

. 설계 구현 : 소프트웨어 개발 생명주기 SDLC 기업내 시스템 방법론 커스터마이징하여 적용

- 시스템 분석 설계 : 응용시스템 구축 설계 프로세스 진행

- 시스템 구현 : BI 패키징 활용, 운영시스템의 커스터마이징 통해 설계된 모델 구현

. 시스템 테스트 운영 : 운영중인 시스템에 적용하거나 프로토타입을 구현하고자 하는 경우

- 시스템 테스트 : 단위/통합/시스템 테스트 실시, 객관성과 완전성 확보

- 시스템 운영 계획 : 운영자, 사용자를 대상으로 필요한 교육을 실시하고 시스템 운영계획 수립

 

5) 평가 전개

. 모델 발전 계획 수립 : 모델의 생명주기 설정하고 주기적 평가 실시, 업데이트 자동화 방안

- 모델 발전 계획 : 지속적인 운영과 기능 향상을 위한 발전계획 수립, 계속성 확보

. 프로젝트 평가 보고 : 분석 기획 단계의 목적 달성 여부 평가, 자산화 진행

- 프로젝트 성과 평가 : 정량적, 정성적 성과로 나눠 성과 평가서 작성

- 프로젝트 종료 : 최종 보고서 작성, 지식 자산화 실행, 의사소통 절차에 따른 보고

 

3 분석 과제 발굴

 

- 하향식 접근 방법(Top Down Approach)

문제가 먼저 주어지고 해답을 찾기 위해 과정이 체계적으로 단계화 되어 수행하는 방식

전통적으로 수행되던 분석 과제 발굴 방식, 하지만 기업환경에서 문제를 사전 정의가 어려워짐

인사이트 도출과 시행착오를 통한 개선이 필요해짐

- 상향식 접근 방법(Bottom Up Approach)

정의가 어려운 경우 데이터를 기반으로 문제 재정의, 해결방안 탐색하고 지속적으로 개선하는 방향

하양식에서 상향식으로 유용성이 점차 증가하고 있는 추세

 


 

- 디자인 사고 프로세스(IDEO)

가능한 옵션 도출하는 상향식의 발산 단계와 분석하고 검증하는 하향식의 수렴 단계 반복적 수행

상호보완, 동적인 환경에서 가치 있는 최적의 의사결정 방식

 


 

 

1. 하향식 접근법

- 현황 분석, 인식된 문제점, 전략으로부터의 기회나 문제 탐색하고

해당 문제를 데이터의 문제로 정의

해결방안 탐색

데이터 분석의 타당성 평가, 분석과제 도출


 

 

1) 문제 탐색 단계

전체적인 관점의 기준 모델 활용 - 비즈니스 모델, 외부 참조 모델

문제를 해결함으로써 발생하는 가치에 중점을 두는 것이 중요

 

. 비즈니스 모델 기반 문제 탐색

- 비즈니스 모델이란 활용, 가치 창출 누락 없이 도출 가능

- 업무, 제품, 고객 단위 문제 발굴 + 규제와 감시, 지원 인프라의 영역으로 기회 추가로 도출


- 업무 : 제품 및 서비스를 생산하기 위해서 운영하는 내부 프로세스 및 주요 자원 관련 주제 도출

예) 생산 공정 최적화, 재고량 최소화 등

- 제품 : 생산 및 제공하는 제품·서비스를 개선하기 위한 관련 주제 도출

예) 제품의 주요 기능 개선,  서비스 모니터링 지표 도출 등

- 고객 : 제품·서비스를 제공받는 사용자 및 고객 이를 제공하는 채널의 관점에서 관련 주제 도출

예) 고객 Call 대기 시간 최소화, 영업점 위치 최적화 등

- 규제와 감사 : 제품 생산 및 전달 과정 프로세스 중에서 발생는 규제 및 보안의 관점에서 주제 도출

예) 제공 서비스 품질의 이상 징후 관리, 새로운 환경 규제 시 예상되는 제품 추출 등

- 지원 : 인프라 분석을 수행하는 시스템 영역 및 이를 운영 ·관리하는 인력의 관점에서 주제 도출

예) EDW 최적화, 적정 운영 인력 도출 등

 

 

- 혁신 : 새로운 문제의 발굴 장기적인 접근을 위해서 기업이 현재 수행하고 있는 비즈니스 뿐만 아니라

    환경과 경쟁 구도의 변화 역량의 재해석을 통한 '혁신'관점에서 분석 기회를 추가 도출

    거시적 관점, 경쟁자 동향, 시장의 니즈 변화, 역량의 재해석 새로운 관점 접근 필요

1) 거시적 관점 : 메가트렌드, 사회 경제적 요인 STEEP

- 사회, 기술, 경제, 환경, 정치

2) 경쟁사의 동향 : 대체재와 신규 진입자 등의 관점 확대하여 분석 기회 발굴의 폭을 넓힘

- 대체재, 경쟁자, 신규 집입자

3) 시장의 니즈 탐색 : 고객과 접촉하는 채널, 의사결정에 영향을 미치는 영향자들에 대한 관점

- 고객, 채널, 영향자들

4) 역량의 재해석 : 보유한 역량 + 해당 조직에 영향을 끼치는 파트너

- 내부역량, 파트너와 네트워크

 

 

. 외부 참조 모델 기반 문제 탐색

- 벤치마킹, 새로운 문제 발굴을 위해서는 동종 환경의 기존 수행한 분석 과제 살펴보기

- 후보 그룹을 통해 'Quick&Easy'방식으로 브래인스토밍을 통해 빠르게 도출

- 산업을 불문하고 분석 사례를 기반으로 분석하고 기회 고려

 

. 분석 유즈 케이스 정의

- 동종 사례를 통해 찾아낸 분석 기회들을 구체적인 과제로 만들기 위해

- 문제에 대한 설명, 발생하는 효과 명시하여 향후 데이터 분석 문제로의 전환 적합성 평가에 활용

 

2) 문제 정의 단계

- 식별된 비즈니스 문제를 데이터의 문제로 변환하여 정의하는 단계

- 필요한 데이터 기법을 정의하기 위한 데이터 분석의 문제로 변환 수행

- 최종 사용자 관점에서 이루어져야함


3) 해결방안 탐색 단계

- 정의된 데이터 분석 문제를 해결하기 위한 다양한 방법 모색

- 소요되는 예산 활용 가능한 도구에 따른 다각도 고려 필요

- 인력을 채용하거나 분석 전문 업체 활용

 

4) 타당성 검토 단계

- 도출된 분석 문제나 가설에 대한 대안을 과제화 하기 위해 다각적인 타당성 분석 수행

. 경제적 타당성

- 비용대비 편익 관점의 접근, 분석 비용에 대한 경제적 가치 산출

. 데이터 기술적 타당성

- 데이터 존재여부, 분석 시스템 환경, 분석 역량 필요

- 기술적 타당성 분석에 따른 역량 확보 방안 사전에 수립 필요 = 비즈니스 지식 + 기술적 지식

- 평가 과정을 거쳐 가장 우월한 대안을 선택, 정의서 형태로 명시하는 후속작업 시행 입력물 활용

 

2. 상향식 접근법

- 경험적 과거 데이터를 무작정 결합하여 상향식으로 정보 혹은 지식을 얻고자 하는 분석 패러다임

- 다양한 원천 데이터로부터 분석을 통하여 통찰력과 지식을 얻는 방법

 

- 기존 하향식 접근법의 한계를 극복하기 위한 분석 방법론

- 기존의 논리적인 단계별 접근법 기반한 문제 해결방식은 최근의 환경에 적합하지 않음

- 디자인 사고 접근법 - 현장 관찰과 감정이입, 대상의 관점으로 전환 수행 / why 아닌 what 관점

- 프로세스 : Empathize → Define → Ideate → Prototype → Test

- 비지도 학습 : 데이터 자체의 결합, 연관성, 유사성 등을 중심으로 데이터의 상태를 표현

ex) 장바구니분석, 군집분석, 기술통계 프로파일링

- 지도 학습 : 데이터 분석 실시, 분류, 추측, 예측, 최적화를 통해 사용자 주도 하에 분석 실시, 지식 도출

- 통계적 분석과 달리 인과관계 뿐만 아니라 상관관계 또는 연관 분석 통한 역추적 방식

 

- 시행착오를 통한 문제 해결

- 프로토타이핑 접근법 : 일단 분석을 시도해보고 결과를 확인해 가면서 반복적으로 개선해 나가는 방식

- 비록 완전하지 못해도 신속하게 해결책이나 모형 제시, 문제를 명확하게 인식, 식별, 구체화

- 프로세스 : 가설생성 디자인 실험 실제환경 테스트 통찰(인사이트) 도출 가설 확인

- 불명확성 감소, 의도했던 결과 도출할 있는 성공 가능성 상승

- 한번의 분석이 아닌 동적 환경에서 최대한 빨리 결과 보여주고, 지속적 반복 수행함

- 필요성

- 문제에 대한 인식 수준 : 새로운 문제일 경우 구체화 하는데 도움

- 필요 데이터 존재 여부의 불확실성 : 데이터 집합이 모두 존재하지 않을 경우 반복 순환적인 협의과정

- 데이터 사용 목적의 가변성 : 지속적으로 변화는 가치에 대하여 목적과 범위 확대 가능

 

3. 분석과제 정의

- 분석과제 정의서 : 향후 프로젝트 입력물로 사용, 이해관계자가 방향 설정, 성공여부 판단하는 자료

필요한 소스 데이터, 분석방법, 입수 분석 난이도, 분석수행주기, 검증 오너십, 과정등

분석 데이터 소스는 비구조적 데이터와 오픈 데이터까지 확장하여 상세하게 작성


 

4 분석 프로젝트 관리 방안

 

- 분석 과제의 주요 5가지 특성 주요 관리 영역

1) 데이터 사이즈 : 분석하고자 하는 데이터 고려한 관리 방안

2) 데이터 복잡도 : BI프로젝트와 달리 다양한 시스템에 원천 데이터 통합 분석 모델 선정 중요

3) 스피드 : 시나리오 측면의 속도 고려, 단위-배치형, 실시간-사기를 탐지, 실시간 수행을 위한 테스트

4) 분석의 정확도와 복잡도 : 복잡하면 정확도가 올라가지만 해석이 어려움, 기준점을 사전에 정의해야함

5) Accuracy & Precision : Accuracy는 모델과 실제값 차이가 적은 정확도, 분석적 활용 측면

 Precision는 모델을 지속적으로 반복했을 때의 편차수준, 안정성 측면


 

1. 분석 프로젝트의 특성

- 분석가 목표 : 분석 정확도 상승, 조율을 수행하는 조정자의 역할

- 프로젝트 관리 : 도출된 분석 과제를 구현하여 원하는 결과 얻고 원활하게 활용하는 전체적 과정 고려

- 프로토타이빙 방식의 어자일 프로젝트 관리 방식에 대한 고려 : 재해석을 통한 지속적 반복 정교화

- 분석과제 정의서를 기반으로 지속적인 개선 변경을 두고 기간내의 가능한 최선의 결과 도출

 

2. 분석 프로젝트 관리 방안

- 프로젝트 관리 지침


 

- 프로젝트 영역별 주요 관리 항목


+ Recent posts