분석 환경 구축
분석 도구(R·Python·SAS·SPSS) 비교, 하둡 생태계와 분산 처리 환경, 데이터 저장 구조와 분석 데이터 분할 전략을 다룹니다.
분석 도구 비교
| 도구 | 성격 | 강점 | 약점 |
|---|---|---|---|
| R | 오픈소스, 통계 전용 언어 | 통계 분석·시각화 패키지(CRAN)가 압도적, 논문 기반 최신 기법 | 대용량 처리·범용 프로그래밍에 약함 |
| Python | 오픈소스, 범용 언어 | 전처리·머신러닝·딥러닝·웹 연계까지 하나로(pandas·scikit-learn·TensorFlow) | 전통 통계 기법 패키지는 R보다 적음 |
| SAS | 상용 | 대용량 처리 안정성, 금융·제약 등 검증된 신뢰성, 기술 지원 | 고가의 라이선스, 유연성 낮음 |
| SPSS | 상용 | GUI 기반으로 비전공자도 사용 가능 | 고가, 고급 기법 확장 제약 |
| Excel | 상용 | 접근성, 간단한 기술통계·차트 | 데이터 규모·재현성 한계 |
시험 포인트는 오픈소스 = R·Python, 상용 = SAS·SPSS의 구분과 "R은 통계·시각화, Python은 범용·머신러닝"이라는 성격 대비입니다. "R은 상용 통계 패키지"라는 선택지는 오답입니다.
주요 라이브러리 대응도 함께 봅니다.
| 목적 | R | Python |
|---|---|---|
| 데이터 처리 | dplyr, data.table | pandas, NumPy |
| 시각화 | ggplot2 | matplotlib, seaborn |
| 머신러닝 | caret, randomForest | scikit-learn |
| 딥러닝 | keras(R) | TensorFlow, PyTorch |
분산 처리 환경 — 하둡 생태계
| 구성요소 | 역할 |
|---|---|
| HDFS | 분산 파일 시스템. 데이터를 블록으로 쪼개 여러 노드에 복제(기본 3) 저장 |
| MapReduce | 분산 병렬 처리 프레임워크. Map(분할·매핑) → Shuffle → Reduce(집계) |
| YARN | 클러스터 자원 관리·작업 스케줄링 |
| Hive | HDFS 데이터에 SQL 유사 질의(HiveQL). 배치 분석용 |
| Pig | 데이터 흐름 언어(Pig Latin)로 대용량 처리 |
| HBase | HDFS 기반 컬럼 지향 NoSQL, 실시간 랜덤 읽기/쓰기 |
| Sqoop | RDB ↔ 하둡 간 정형 데이터 전송 |
| Flume / Kafka | 로그·스트림 데이터 수집(Kafka는 분산 메시지 큐) |
| Oozie | 하둡 작업 워크플로 스케줄러 |
| Zookeeper | 분산 코디네이션(설정·이름·동기화 관리) |
| Spark | 인메모리 기반 분산 처리. RDD·DataFrame, MLlib·Spark SQL·Streaming |
MapReduce vs Spark: MapReduce는 단계마다 디스크에 쓰는 디스크 기반 배치, Spark는 중간 결과를 메모리에 두는 인메모리 처리로 반복 연산(머신러닝)에서 수십 배 빠릅니다. "Spark는 디스크 기반이라 느리다"는 오답입니다.
데이터 저장·처리 구조
| 구분 | 정의 | 특징 |
|---|---|---|
| 데이터 웨어하우스(DW) | 주제 지향으로 통합·정제된 정형 데이터 저장소 | Schema-on-Write, 시계열적·비휘발적 |
| 데이터 마트(DM) | 특정 부서·주제 목적의 소규모 DW | 분석 목적별 추출 |
| 데이터 레이크 | 원천 데이터를 원본 그대로 저장(정형·반정형·비정형) | Schema-on-Read |
| ODS | 운영계 데이터를 통합한 중간 저장소 | 실시간·단기 |
ETL(Extract-Transform-Load) 은 적재 전에 변환하고, ELT는 적재 후에 변환합니다. 데이터 레이크는 통상 ELT와 짝을 이룹니다.
분석 환경 구축 시 고려사항
- 데이터 규모와 처리 방식 — 배치인가 실시간(스트리밍)인가
- 확장성 — Scale-up(장비 성능 향상) vs Scale-out(노드 추가). 분산 환경은 Scale-out
- 재현성 — 코드·패키지 버전 관리, 노트북·컨테이너(Docker)
- 보안 — 개인정보 비식별화, 접근 권한 분리
- 클라우드 활용 — IaaS·PaaS·SaaS, 온디맨드 자원 확보
분석 데이터 분할 전략
| 전략 | 방법 | 쓰는 상황 |
|---|---|---|
| 단순 무작위 분할 | 전체에서 무작위 표본 추출 | 데이터가 충분하고 클래스가 균형일 때 |
| 계층적 분할(Stratified) | 클래스(또는 주요 층) 비율을 유지하며 분할 | 불균형 데이터, 소수 클래스 보존 |
| 시간 기반 분할 | 과거로 학습, 미래로 평가 | 시계열·예측 모형. 미래 데이터로 학습하면 안 됨 |
| 그룹 기반 분할 | 같은 고객·환자를 한쪽에만 배치 | 개체 단위 중복이 있는 데이터 |
시계열 데이터를 무작위로 분할하면 안 됩니다. 미래 정보가 훈련 집합에 섞이는 데이터 누출(data leakage) 이 되어 성능이 과대평가됩니다. 시계열은 항상 시점 기준으로 자릅니다.
불균형 데이터는 분할 이후 훈련 데이터에만 표본 조정을 적용합니다.
| 방법 | 내용 | 주의 |
|---|---|---|
| 과소표집(Under-sampling) | 다수 클래스를 줄임 | 정보 손실 |
| 과대표집(Over-sampling) | 소수 클래스를 늘림 | 과대적합 위험 |
| SMOTE | 소수 클래스 관측치의 KNN 사이를 보간해 합성 데이터 생성 | 단순 복제가 아님 |
"SMOTE는 소수 클래스를 그대로 복제한다"는 오답입니다. SMOTE는 이웃과의 선형 보간으로 새로운 관측치를 합성합니다. 그리고 표본 조정은 평가 데이터에는 절대 적용하지 않습니다.
전처리·스케일링 환경
| 방법 | 식 | 결과 |
|---|---|---|
| 정규화(Min-Max) | (x - 최솟값) / (최댓값 - 최솟값) | 0~1 범위 |
| 표준화(Z-score) | (x - 평균) / 표준편차 | 평균 0, 표준편차 1 |
거리 기반 기법(KNN·K-평균·SVM·주성분분석·신경망)은 스케일에 민감하므로 스케일링이 필수입니다. 반면 의사결정나무·랜덤포레스트 같은 분할 기반 기법은 스케일링이 필요 없습니다.
스케일링 기준값(평균·표준편차·최대·최소)은 훈련 데이터에서만 계산해 검증·평가에 그대로 적용합니다. 전체 데이터로 계산하면 이미 누출입니다.