머신러닝 프로젝트의 생명주기는 머신러닝 워크플로우 즉, 데이터를 준비하고 모델을 개발하며 성능을 평가하고 배포하는 전체 과정입니다. 워크플로우를 단계별로 정리하면 다음과 같으며, 이 모든 단계는 반복적이며, 새 데이터를 수집하거나 성능 개선이 필요할 때 다시 돌아가 진행합니다.
1. 문제 정의 (Define the Problem)
목적: 해결하고자 하는 문제를 명확히 정의하고 목표를 설정합니다.
- 예: 고객 이탈 예측, 이미지 분류, 매출 예측.
- 출력:
- 문제 유형 정의 (회귀, 분류, 군집 등).
- 평가 지표 설정 (정확도, F1 스코어, RMSE 등).
2. 데이터 수집 (Data Collection)
목적: 문제 해결에 필요한 데이터를 수집합니다.
- 방법:
- 데이터베이스, 웹 스크래핑, API 호출.
- 기존 데이터셋 활용.
- 출력:
- 데이터 파일(csv, JSON 등).
3. 데이터 전처리 (Data Preprocessing)
목적: 모델 학습에 적합한 형태로 데이터를 준비합니다.
- 작업:
- 결측치 처리 (삭제, 대체).
- 이상치 처리.
- 스케일링 및 인코딩.
- 필요 없는 피처 제거.
- 출력:
- 정제된 데이터셋.
4. 탐색적 데이터 분석 (EDA: Exploratory Data Analysis)
목적: 데이터의 특징과 패턴을 이해하고 문제와 관련된 중요한 인사이트를 발견합니다.
- 방법:
- 시각화(히스토그램, 상관관계, 박스플롯).
- 통계 분석(평균, 분산, 상관계수).
- 출력:
- 데이터의 분포와 관계에 대한 인사이트.
5. 피처 엔지니어링 (Feature Engineering)
목적: 모델 성능을 높이기 위해 데이터를 변환하고 새로운 피처를 생성합니다.
- 작업:
- 중요 변수 선택.
- 변수 변환 (로그 변환, 다항식 생성 등).
- 차원 축소 (PCA).
- 출력:
- 모델 학습에 적합한 최적의 피처 셋.
6. 모델 선택 및 학습 (Model Selection & Training)
목적: 문제 유형에 적합한 머신러닝 알고리즘을 선택하고 데이터를 학습합니다.
- 방법:
- 알고리즘 선택 (예: 랜덤포레스트, XGBoost, SVM).
- 하이퍼파라미터 조정.
- 출력:
- 학습된 모델.
7. 모델 평가 (Model Evaluation)
목적: 학습된 모델의 성능을 평가하고 개선점을 발견합니다.
- 방법:
- 테스트 데이터 사용.
- 교차 검증 (Cross-Validation).
- 평가 지표 계산 (MAE, RMSE, Precision, Recall 등).
- 출력:
- 성능 보고서와 개선 방향.
8. 모델 튜닝 (Model Tuning)
목적: 모델 성능을 최대화하기 위해 하이퍼파라미터를 최적화합니다.
- 방법:
- 그리드 서치 (Grid Search).
- 랜덤 서치 (Random Search).
- 베이지안 최적화.
- 출력:
- 최적화된 모델.
9. 배포 (Deployment)
목적: 학습된 모델을 실제 환경에 적용하여 예측값을 제공합니다.
- 방법:
- API 배포(FastAPI, Flask).
- 클라우드 서비스 활용(AWS, GCP, Azure).
- 출력:
- 운영 중인 머신러닝 모델.
10. 모니터링 및 유지보수 (Monitoring & Maintenance)
목적: 배포된 모델의 성능을 지속적으로 추적하고 개선합니다.
- 작업:
- 실제 예측값과 결과 비교.
- 데이터 드리프트 감지.
- 모델 업데이트.
- 출력:
- 성능 보고서와 업데이트된 모델.
Feature engineering vs. EDA(Exploratory Data Analysis)**
Feature engineering과 EDA(Exploratory Data Analysis)는 데이터 분석 및 머신러닝 워크플로우에서 중요한 단계지만, 다른 목적과 프로세스를 가지고 있습니다. 다음은 두 개념의 차이점과 역할입니다:
(1) Feature Engineering
목적:
모델 성능을 향상시키기 위해 데이터셋의 특성을 변형, 생성 또는 선택하는 과정.
-
핵심 활동:
- 새로운 피처(변수) 생성
- 예:
날짜
를 기반으로요일
,월
,분기
와 같은 새로운 변수를 만듦. - 피처 변환
- 로그 변환, 스케일링(표준화), 정규화 등.
- 피처 선택
- 상관관계 분석, 중요도 분석 등을 통해 모델에 유용한 변수만 선택.
- 결측값 처리
- 평균/중앙값 대체, 특정 그룹 기준 대체, 혹은 새로운 피처로 생성.
- 원-핫 인코딩, 임베딩 등 범주형 변수 변환.
-
결과물:
- 머신러닝 모델 학습에 적합한 데이터셋.
-
주요 질문:
- 모델 성능에 어떤 피처가 가장 중요한가?
- 데이터를 어떻게 변형하면 모델이 더 잘 학습할까?
(2) EDA - Exploratory Data Analysis
목적:
데이터를 이해하고 문제에 대한 초기 가설을 세우기 위한 탐색적 분석.
-
핵심 활동:
- 데이터의 분포 확인
- 히스토그램, 박스플롯, 커널 밀도 추정(KDE) 등 시각화를 통해 데이터 패턴 파악.
- 데이터 품질 점검
- 결측값, 이상치 탐지 및 분석.
- 변수 간 관계 탐색
- 상관계수, 산점도, 그룹별 통계 등.
- 통계적 요약
- 평균, 중앙값, 표준편차, 최소/최대값 등의 기초 통계량 계산.
- 데이터 이해를 위한 시각화
- 페어플롯, heatmap 등 다양한 시각화 기법 활용.
-
결과물:
- 데이터의 구조, 특성, 패턴에 대한 인사이트.
- 모델링 전 데이터를 정제하고 피처를 생성할 아이디어.
-
주요 질문:
- 데이터셋에 어떤 패턴이나 문제(결측치, 이상치 등)가 있는가?
- 변수 간의 상호작용은 어떠한가?
주요 차이점
특징 | Feature Engineering | EDA |
---|---|---|
목적 | 모델 성능 최적화를 위한 데이터 준비. | 데이터를 이해하고 가설을 세우기 위한 탐색. |
활동 시점 | 데이터 탐색 후, 모델링 과정 중이나 직전에 수행. | 데이터 파이프라인의 초기에 수행. |
중점 | 피처 생성, 선택, 변환. | 데이터 구조, 분포, 관계 분석. |
도구/기법 | 스케일링, 인코딩, 결측치 대체, PCA 등. | 시각화(Matplotlib, Seaborn), 기초 통계, 상관분석. |
결과물 | 머신러닝 알고리즘이 처리할 수 있는 최적의 데이터셋. | 데이터의 패턴, 문제, 관계에 대한 초기 이해. |
요약하면
- EDA는 데이터의 "문제"를 이해하고, 데이터가 제공하는 "가능성"을 탐색하는 과정입니다.
- Feature Engineering은 데이터를 "문제 해결"에 활용하기 위한 준비 과정입니다.
- 일반적으로 EDA → Feature Engineering → 모델링 순으로 진행됩니다.
스케일링 vs. 인코딩 vs. 결측치 대체 vs. PCA
(1) 스케일링 (Scaling)
정의:
스케일링은 데이터를 특정 범위로 변환하여 모델 학습 과정에서 변수들의 크기 차이에 의한 영향을 줄이는 과정입니다. 특히, 거리 기반 알고리즘(k-최근접 이웃, SVM, K-평균 등)이나 기울기 기반 알고리즘(로지스틱 회귀, 신경망 등)에 중요합니다.
종류:
-
표준화(Standardization):
- 평균을 0, 표준편차를 1로 맞추는 변환.
- 데이터의 분포가 정규분포를 따르지 않아도 적용 가능.
- 공식:
[
z = \frac{x - \mu}{\sigma}
]
여기서 (x)는 값, (\mu)는 평균, (\sigma)는 표준편차. - 사용 예: 선형 회귀, 로지스틱 회귀, SVM.
-
정규화(Min-Max Scaling):
- 데이터를 [0, 1] 범위로 변환.
- 최소값과 최대값의 차이를 기준으로 변환.
- 공식:
[
x' = \frac{x - \text{min}(x)}{\text{max}(x) - \text{min}(x)}
] - 사용 예: 신경망, KNN.
-
로버스트 스케일링(Robust Scaling):
- 이상치(outliers)에 민감하지 않도록 중앙값(median)과 IQR(사분위수 범위)을 사용.
- 공식:
[
x' = \frac{x - \text{median}(x)}{\text{IQR}}
] - 사용 예: 이상치가 많은 데이터셋.
왜 중요한가?
- 스케일이 다른 피처를 동일한 범위로 맞추지 않으면, 특정 피처가 모델에 과도하게 영향을 미칠 수 있습니다.
(2) 인코딩 (Encoding)
정의:
범주형 데이터를 모델이 이해할 수 있는 숫자 형태로 변환하는 과정.
종류:
-
원-핫 인코딩 (One-Hot Encoding):
- 각 범주를 이진 벡터로 변환.
- 예:
색상: 빨강, 초록, 파랑 → 빨강: [1, 0, 0], 초록: [0, 1, 0], 파랑: [0, 0, 1]
- 장점: 범주 간 순서를 암시하지 않음.
- 단점: 범주가 많아질수록 메모리 사용량이 증가(차원의 저주).
-
레이블 인코딩 (Label Encoding):
- 각 범주를 숫자로 매핑.
- 예:
색상: 빨강 → 0, 초록 → 1, 파랑 → 2
- 장점: 간단하고 빠름.
- 단점: 숫자가 크기/순서를 암시할 수 있어, 순서가 없는 범주형 데이터에는 부적합.
-
타겟 인코딩 (Target Encoding):
- 각 범주를 타겟 값의 평균으로 변환.
- 예:
범주 A → 0.8, 범주 B → 0.6
-
임베딩 (Embedding):
- 딥러닝에서 범주형 데이터를 저차원 벡터로 학습.
- 자연어 처리와 같이 고차원 범주 데이터를 다룰 때 유용.
(3) 결측치 대체 (Missing Value Imputation)
정의:
데이터셋에서 누락된 값을 처리하는 방법. 결측치는 모델의 성능에 부정적인 영향을 미칠 수 있으므로 적절히 처리해야 합니다.
처리 방법:
-
삭제 (Removal):
- 결측치가 있는 행(row)이나 열(column)을 제거.
- 장점: 간단.
- 단점: 데이터 손실 발생.
-
단순 대체 (Simple Imputation):
- 평균/중앙값/최빈값으로 대체:
- 수치형: 평균/중앙값 사용.
- 범주형: 최빈값 사용.
- 평균/중앙값/최빈값으로 대체:
-
고급 대체:
- KNN Imputation:
- 결측치가 있는 샘플의 k-최근접 이웃을 기반으로 대체.
- 다중 대체(Multiple Imputation):
- 결측치를 여러 번 대체해 불확실성을 반영.
- 회귀 대체:
- 결측값을 예측하는 회귀 모델 사용.
- KNN Imputation:
-
특별한 처리:
- 결측값 자체를 하나의 범주로 간주(‘Unknown’, ‘Missing’ 등).
(4) PCA (Principal Component Analysis)
정의:
고차원 데이터를 저차원으로 축소하여 핵심 정보를 유지하는 차원 축소 기법.
핵심 개념:
- 데이터의 분산(variance)을 최대한 보존하면서, 상관관계가 있는 변수들을 직교(orthogonal) 축으로 변환.
- 새롭게 생성된 축(주성분)은 데이터의 가장 중요한 패턴을 나타냄.
작동 원리:
-
공분산 행렬 계산:
데이터의 분산과 변수 간의 상관관계 계산. -
고유값 및 고유벡터 계산:
공분산 행렬에서 가장 큰 고유값에 대응하는 고유벡터가 주성분이 됨. -
데이터 변환:
데이터를 새로운 주성분 축으로 투영.
결과:
- 데이터의 차원을 줄이되, 최대한의 정보(분산)를 유지.
- 예를 들어, 10개의 변수 중 95% 정보를 유지하는 3개의 주성분만 사용.
장점:
- 데이터의 노이즈 제거.
- 시각화(2D, 3D) 가능.
- 차원을 줄임으로써 계산 속도와 메모리 사용량 감소.
단점:
해석 가능성이 낮아질 수 있음.
- PCA로 변환된 데이터는 원래 데이터의 의미를 잃을 수 있음.
"데이터의 분산(variance)을 최대한 보존하면서, 상관관계가 있는 변수들을 직교(orthogonal) 축으로 변환한다"는 의미가 뭔지??
이 문장을 쉽게 설명하자면 이렇습니다.!!!
-
"데이터의 분산을 최대한 보존"
- 데이터를 보존한다는 건, 데이터가 가진 중요한 정보를 잃지 않겠다는 뜻이에요.
- 분산(variance)은 데이터가 얼마나 흩어져 있는지를 나타내는데, 분산이 크면 데이터의 특성이 많이 담겨 있다는 뜻이에요.
- 그래서, 데이터를 줄이더라도 중요한 특징(흩어진 패턴)은 유지하려고 하는 거예요.
-
"상관관계가 있는 변수들을 직교(orthogonal) 축으로 변환"
- 데이터에는 서로 비슷한 정보를 담고 있는 변수들이 있을 수 있어요. 예를 들어, 몸무게와 BMI는 서로 밀접한 관계가 있죠.
- 이런 변수를 각각 따로 봐도 되지만, 더 효율적으로는 이 정보를 한눈에 볼 수 있는 새로운 기준(축)을 만드는 게 좋아요.
- 직교(orthogonal) 축은 서로 영향을 주지 않는 독립적인 기준이에요.
- 예를 들어, 우리가 가로축(X)과 세로축(Y)을 보면 서로 독립적이잖아요.
- PCA는 이렇게 독립적인 새 기준(축)을 만들어서 데이터의 중복 정보를 없애는 거예요.
비유로 설명하자면~~~
- 원래 데이터는 큰 짐을 여러 가방에 나눠 담은 상태예요.
- 그런데 가방마다 비슷한 물건(중복된 정보)이 들어 있다면, 가방 수를 줄이고 더 효율적으로 짐을 담고 싶겠죠.
- PCA는 이런 중복된 물건(상관관계)을 분석해서, 최소한의 가방(차원)으로, 그리고 더 깔끔하게 물건을 담는 방법이에요.
결국, 중요한 짐(분산)은 그대로 두면서, 가방(데이터의 차원)을 줄이고 정리한다고 보면 됩니다! 😊