2. Overview
• 분석 프로세스 정립
• 목적: 분석을 수행하는 사람이나 데이터 형식과 목적(모델)에 따라 달라질 수 있는 분석의
품질을 관리하고 효율적으로 수행하기 위함
• 공유 대상: 분석가
• ‘분석 프로세스’: 예측 및 이상 탐지를 목적으로 데이터를 받아 분석 결과를 적용하기까지
의 여러 단계들을 의미함. 단, 본 분석 프로세스는 프로세스 자동화를 포함하고 있지 않음
• 7-step 분석 프로세스
• 모델 수립에 따라 데이터 준비 및 전처리 단계를 다시 거쳐야 할 수 있음
• 모델 검증 단계나 모델 평가 단계의 기준에 따라 데이터 탐색, 데이터 전처리 및 변수 선택,
모델 수립 과정을 반복할 수 있음
• 데이터 준비 및 전처리 - 데이터 탐색 - 모델 수립 - 모델 검증 은 각기 다른 환경(tool)에서
수행됨
• 각 step에서 필요한 ‘산출물’ 명시 예정
문제 정의 - 데이터 준비 및 전처리 - 데이터 탐색 - 모델 수립 - 모델 검증
3. • 문제 정의 요소: 요구사항 수집, 문제 범위 결정, 문제 정의 도출
• 요구사항 수집
• 기존 시스템 리뷰, 질의 및 서면 인터뷰를 통해 ‘분석 요구사항’ 도출
• 분석 요구사항: 분석 항목 및 내용, 효과 및 중요도, 예상 사용 빈도, 적용 희망 시기, 관련 데이
터 유무, 기대 수준 등 정리
• 중요도: 1 (“must have”), 2 (“nice to have”, 문제 복잡도 하), 3 (“nice to have”, 문제 복잡도 상)
• 인터뷰 시, 분석 요구사항을 체계적으로 정리할 수 있는‘요구사항 수집’ template 제공 예정
• 문제 범위 결정
• ‘분석 요구사항’의 각 항목을 우선순위로 정렬 (‘분석 요구사항’에 우선순위 항목 추가)
• ‘분석 요구사항’ 내 몇 개의 항목을 언제까지 완료할 지에 대한 계획이 담긴 ‘분석 범위 및
계획’ 도출
• 문제 정의 도출
• ‘분석 범위 및 계획’에 따라 해당 분석 항목에 맞는 ‘문제(가설) 정의’ 도출
문제 정의 - 데이터 준비 및 전처리(1) - 데이터 탐색 - 모델 수립 - 모델 검증
4. • 데이터 준비 및 전처리 요소: 데이터 요청, 데이터 전처리 환경, 데이터 전처리 내용
• 데이터 요청
• 정의된 문제(가설) 해결에 필요한 데이터 요청 - 추가적으로 더 연관된 데이터가 없는지,
충분한 기간의 데이터가 있는지, 신뢰할 수 있는 데이터인지 확인
• 입력(원본) 데이터: 다양한 형식을 모두 지원하나 하기와 같은 text file 선호
• text file(csv) - “,”로 구분되며 첫번째 열은 column 명을 포함함. 단, String field에 “,” 포함 유
무 확인
• 획득 후 field, record 수 확인
• 데이터 전처리 환경
• DBA(Database Architecture) 지원
• Kafka 혹은 Spark에서 데이터에 대한 전처리를 수행하되 지원하기 어려운 전처리 기능 중
일부는 R에서 지원 예정
• ‘가공 데이터’: MySQL* 를 포함한 DBMS 내 table 혹은 data frame으로 저장
*데이터 전처리 시 유용한 dplyr package는 MySQL, PostgreSQL, SQLite, BigQuery의 data table을 지원함
문제 정의 - 데이터 준비 및 전처리(1) - 데이터 탐색 - 모델 수립 - 모델 검증
5. • 데이터 전처리 내용
• Data Cleansing - 표준화된 형식으로 데이터를 변환
• Data 분류: numeric, integer, categorical(factor), ordinal(ordered),
string(character), binary(raw)
• Missing value 처리: 해당 record 삭제, “unknown” class 생성, 동일한 class의 평
균값 사용, 해당 value 추정(Bayesian/decision tree) 중 선택
• 날짜 및 시간 형식 통일: “2016-02-01 14:00:00”
• Inconsistency 제거: cpu usage, CPU_USAGE, Cpu Utilization과 같이 동일한 의
미의 field나 naming을 통일
• 중복 records 삭제. 단, 동일 records가 발생한 현상 자체가 중요한 경우는 삭제하
지 않음.
• Outlier 제거: numeric data의 구간화(binning), regression, clustering 등
• Data Integration - 분석에 필요한 이기종 데이터(database, 파일 등) 통합
문제 정의 - 데이터 준비 및 전처리(2) - 데이터 탐색 - 모델 수립 - 모델 검증
6. • 데이터 전처리 내용 (cont’d)
• Data Transformation
• Smoothing: noise 제거 - cleansing 단계에서도 수행 가능
• 데이터 탐색-plotting 단계를 통해 어떤 smoothing 기법을 쓸 지 반영
• Aggregation: 분석에 사용될 summarization 수행
• Normalization: 서로 다른 변수 scale을 맞춤(min-max, z-score 등)
• Discretization: 연속 변수를 interval attribute으로 변환(binning, histogram, clustering,
segmentation 등) - cleansing 단계에서도 수행 가능
• 새로운 attribute(feature) 생성
• Data Reduction - 동일한 결과를 낼 수 있되, 최대한 작은 데이터로 줄임
• Data Integration 시 발생하는 중복 데이터 처리: column 수가 많을 경우 correlation 분석을 통해
처리 가능
• Hierarchical aggregation: aggregated value만 필요한 경우, 해당 aggregated value로 줄임
문제 정의 - 데이터 준비 및 전처리(3) - 데이터 탐색 - 모델 수립 - 모델 검증
7. • 데이터 전처리 내용 (cont’d)
• 비정형 데이터의 정형화 - 로그: 로그 분석을 위한 로그 메세지 처리가 필요함
• Information retrieval하는 방법은 정의된 문제마다 상이함
• 특정 keyword 수, 로그 길이에 대한 정형화와 특정 keyword 패턴 조합, 로그 발생 간격, 특정
keyword 발생 간격에 대한 정형화는 다름.
• 본 전처리 범위에 NLP나 text mining은 속하지 않으나 하기와 같은 내용들은 information
retrieval을 위한 dictionary를 구성하는데 일부 활용될 수 있음. 단, 영문만 지원함.
• Sentence segmentation: 긴 로그 다음에 오는 새 로그를 분류
• Tokenization: 단어 단위로 쪼갬
• Stemming/lemmatization: 동일한 의미의 단어로 치환
• eating, ate, eat, eats -> eat
• change, alter, modify -> change
• Tagging & Syntactic Parsing: 단어를 패턴으로 치환
문제 정의 - 데이터 준비 및 전처리(4) - 데이터 탐색 - 모델 수립 - 모델 검증
8. 문제 정의 - 데이터 준비 및 전처리 - 데이터 탐색(1) - 모델 수립 - 모델 검증
• 데이터 탐색 요소: 데이터 탐색 환경, 데이터 확인, 변수 선택, 데이터 나누기, 분석용 데이터
결정
• 데이터 탐색 환경: R, Excel, SAS, SPSS 등 언어는 무관 (모델 수립, 모델 검증 환경도 동일)
• 데이터 확인
• 테이블로 보기
• 전처리 결과 확인: 변수명 및 값 유형 확인, top 100, random 선택 명령어로 raw data 값 확인
• 차트로 보기 - 하기 사항 확인
• 데이터 전처리 작업 중 부적절한 것은 없었는지: discretization이 적절한지, 예상치 못한 outlier가 있는
지, smoothing 기법이 적절했는지
• 데이터에 패턴이 있는지: 경향성 유무, cyclic 유무, fluctuation 정도 등
• 데이터간 correlation이 있는지: 추후 모델 수립 시 참고
• 변수 선택 (Feature Selection)
• 인터뷰(expert with domain knowledge)로 target과 연관이 있는 설명 변수(explanatory variable) 추
출
• 설명 변수 간 multicollinearity 확인 - linear model 수립 시 참고
9. 문제 정의 - 데이터 준비 및 전처리 - 데이터 탐색(2) - 모델 수립 - 모델 검증
• 데이터 나누기
• Estimation, validation, test 비율 결정
• 각 데이터 set(subset)의 역할: Estimation: 모델 생성 / Validation: 생성된 모델의 검증 / Test: 새로운
데이터에 대한 모델의 검증
• 전체 데이터가 충분하지 않은 경우, test를 하지 않음. 통상적인 비율은 estimation : validation = 75 :
25이나 다르게 선택할 수도 있음
• 전체 데이터가 충분한 경우, test를 통해 좀 더 robust한 모델을 만들 수 있음. 통상적인 비율은
estimation : validation : test = 6 : 2 : 2이나 다르게 선택할 수도 있음
• Sampling - systematic sampling은 periodic한 데이터 특성 때문에 배제할 예정
• Random sampling
• Stratified sampling
• Disproportional sampling
• Cluster sampling
• 분석용 데이터 제공: 상기의 과정을 통해 모델에 사용될 ‘분석용 데이터’ 도출. 단, 모델 수립-검증 과
정 결과에 따라 다시 본 과정, 혹은 전처리 과정으로 돌아가야 할 수 있음
10. 문제 정의 - 데이터 준비 및 전처리 - 데이터 탐색 - 모델 수립 - 모델 검증
• 모델 수립 요소: 모델 선택 고려사항, 모델 적용 결과
• 모델 선택 고려사항
• 선택된 변수(데이터 탐색 단계)에 따라 가능한 모델 선택. 모델 선택 후 파라미터 조정 필요
• Resource ‘A’의 1초 뒤 CPU_USAGE는 얼마일지? -> Regression, Time Series Analysis
• 데이터 패턴(데이터 탐색 단계)과 변수의 갯수, 변수의 형식에 따라 사용할 수 있는 모델이 상이함
• Regression(회귀): 종속 변수와 나머지의 독립적인 변수들 사이의 관계로 종속 변수를 예측
• TSA(시계열): 연속적이이고 unifrom한 시간 간격이 있는 이벤트들로, 이에 대한 autocorrelation 가정된
상태로 다음 이벤트를 예측
• Metric 값 예측에는 활용할 수 있으나, 시간 간격이 다르고 비연속적인 alarm 이벤트에 대해서는 적용 불가함
• CPU_USAGE와 MEMORY_USAGE는 연관성이 있는지? -> Correlation, Association(Apriori)
• Correlation(상관)은 bidirectional하지만 Association(연관) 대비 sample이 커질수록 spurious 관계가 많
아지는 단점이 있음
• Association 분석은 기존 데이터를 transaction으로 가공하는 단계 필요
• Alarm 이벤트의 transaction화: (CPU_USAGE >70, MEMORY_USAGE>70) -> (CPU_USAGE>90)
11. 문제 정의 - 데이터 준비 및 전처리 - 데이터 탐색 - 모델 수립 - 모델 검증
• 어떤 resource가 1초 뒤에 “error”가 포함된 message를 쓰는지? -> Classification
• Labeled된 데이터(“error”)가 필요하며 변수의 특성에 따라 사용할 수 있는 모델이 상이함
• Binary grouping 가능한 변수: Decision Tree(C4.5, CART)
• Continuous 변수나, 3개 이상의 categorical 변수는 binary로 치환하여 사용
• Numeric 변수 혹은 Mixed 변수: Regression Tree(Random Forest), KNN
• 일부 “error”에 대한 label miss가 있더라도 RF dissimilarity를 정의하여 “error” label 추정 가능
• 비슷한 특성을 가진 resource/metric 그룹을 어떻게 만들지? -> Clustering
• Labeled된 데이터를 만들 거나 grouping으로 데이터 특성을 파악할 때, 데이터 크기를 줄일 때 유용
함
• Sample 데이터로 Cluster 수 결정: Hierarchical (Agglomerative-Ward’s method)
• 단, 첫 번째 decision의 영향력이 매우 크고 데이터 자체의 신뢰도가 높아야 하며 속도가 느림
• 대용량의 데이터로 특정한 n개의 Cluster로 구분: Partitional (K-Means)
• 모델 적용 결과: 상기 모델 중 하나, 혹은 그 이상의 기법이 혼합된 ‘선택 모델’과 ‘분석용 데
이터’에 모델이 적용된 ‘결과 테이블’ 도출
12. 문제 정의 - 데이터 준비 및 전처리 - 데이터 탐색 - 모델 수립 - 모델 검증
• 모델 검증 요소: 모델의 정확성, 모델의 Robustness, 모델 검증 결과
• 모델의 정확성: 모델이 데이터를 얼마나 정확하게 설명하고 있는지 판단
• ROC/AUC
• AIC/BIC
• Association이나 Correlation은 별도의 검증 모델은 없음. 검증 방법으로 K-fold cross
validation 유용
• 모델의 Robustness: 새로운 데이터에 대해 해당 모델이 얼마나 유사한 결과를 낼 수
있는지 판단
• ROC/AUC
• Learning error와 Generalization error가 최소가 되는 지점으로 모델을 선택
• Classification이나 regression 수행 시 발생할 수 있는 overfitting을 방지함
• AIC/BIC - 파라미터 수를 제한하는 기능이 있어 overfitting을 방지할 수 있음
• 모델 검증 결과: 모델의 정확성과 Robustness가 평가된 ‘모델 검증 보고서’ 제공
13. 문제 정의 - 데이터 준비 및 전처리 - 데이터 탐색 - 모델 수립 - 모델 검증
• 모델 반영 요소: 모델의 코드화, 모니터링 및 모델 평가, 모델 반영 결과
• 모델의 코드화: 시스템에 적용하기 위한 코드화 작업 필요
• 알람 코드, 예측치 등 문제 및 환경에 적합한 형식으로 모듈화하여 적용
• 대상 시스템에 적합한 언어로 변환
• In-line: Scala, Python, Java, C++, PMML 등
• SQL
• 데이터 전처리 단계는 필요에 따라 선택적으로 반영
• 모니터링 및 모델 평가: 실제 적용 후 주기적으로 모델에 대한 정확성과
Robustness 확인
• 현 수준의 정확성/Robustness가 만족되지 않을 경우, 변수 선택을 포함한 데이터
탐색 단계로 돌아가 재수행
• 모델 반영 결과: ‘시스템 적용 코드’ 제공
14. Summary
단계 내용 산출물
문제 정의
요구사항을 수집하고, 수집된 요구사항을 바탕으로 우선순
위에 따라 분석 범위를 결정함. 우선순위가 높은 순으로 문
제를 정의함
분석 요구사항
분석 범위 및 계획
문제 정의
데이터 준비 및 전처리
요청하여 받은 데이터로, 1)데이터 형식 표준화, 2)데이터
통합, 3)smoothing, aggregation, 및 normalization, 4)데이
터 reduction, 5) 로그의 정형화 등의 전처리를 수행함
가공 데이터
데이터 탐색
전처리된 결과를 시각화하여 데이터에 패턴이나 연관성이
있는지, 변수 선택은 어떤 걸 할지, 데이터를 어떤 비율로
나누고 sampling할지 결정함
분석용 데이터
모델 수립
목적과 선택된 변수에 따라 모델을 결정하고 파라미터를
조정하며 모델을 수립함. 최종 모델을 선택하기 까지는 검
증 단계와 함께 반복적으로 수행되어야 함
선택 모델
결과 테이블
모델 검증
선택된 모델이 데이터를 얼마나 정확하게 설명하고 있는지
(정확성), 그리고 새로운 데이터에 대해 해당 모델이 얼마나
유사한 결과를 낼 수 있는지(robustness) 판단함
모델 검증 보고서
모델 적용
모델이 적용되는 시스템에 적합한 형식으로 코드화 작업을
수행하고 지속적으로 모델에 대한 정확성과 robustness를
확임함
시스템 적용 코드