개요
컴퓨터 비전, 자연어 처리 등과 같은 다양한 분야가 있지만 일반적으로 데이터 분석이라 하면 시계열 분석과 정형 데이터 분석으로 나뉨.
시계열 분석
시간의 흐름에 따라 쌓인 데이터를 말함. 데이터가 많고 시간 시간이 여유있다면 LSTM, 빠르고 데이터 양이 많지 않다면 ARIMA를 사용하되, 데이터의 특성에 따라 SARIMA, ARIMAX등의 파생모델 이용
정형 데이터 분석
엑셀시트나 데이터베이스처럼 행과 열로 구성된 데이터. 시간에 여유가 있다면 XGBoost, 아니라면 LightGBM. 하지만 LightGBM이 성능은 비슷하거나 더 좋은 경우가 많이 있음. 범주형 변수(성별, 지역 등 글자로 된 데이터)가 많을땐 CatBoost
선형 모델
위의 각 분야에 대해서 결과에 대한 해석이 중요할 땐 선형 모델을 추가. 시계열 데이터 분석은 예측은 정확하지만 왜 그런 데이터가 나오는지는 알 수 없기 때문.
보통 로지스틱 회귀, 선형 회귀를 사용.
선형회귀는 값이 숫자일때 예측
로지스틱 회귀는 숫자가 아닌 값일때 분류
회귀는 아파트 가격 = 500 * (평수) + 3000 가 있다고 할 때, 계수와 절편을 조합하는 과정.
계수 : 평수가 1평 늘어날때마다 아파트 가격은 500만원씩 증가. 이처럼 각 변수의 영향력과 방향성을 알려줌
절편 : 모든 변수가 0일때의 기본적인 결과값. 0평일때 3000 -> 예측을 시작하는 기본 시작점
세부 분석과정
1. 전처리
1) 결측치 처리 (Handling Missing Values)
- 단순 대치: 평균/중앙값으로 채우는 것은 간단하지만, 데이터의 분포를 왜곡할 수 있음
- 가장 좋은 기술:
- k-최근접 이웃 (k-NN Imputation): 누락된 값을 그 값과 가장 유사한 k개의 다른 데이터 포인트들의 평균으로 채움. 변수 간의 관계를 고려하기 때문에 단순 대치보다 훨씬 정교.
- 모델 기반 대치 (Model-based Imputation): 결측치가 있는 변수를 타겟으로 삼고, 다른 변수들을 이용해 머신러닝 모델(예: 랜덤 포레스트)로 결측치를 '예측'하여 채움. 가장 성능이 좋지만 계산 비용이 높음.
2) 이상치 처리 (Outlier Handling)
- 단순 제거: 이상치를 무조건 삭제하면 중요한 정보를 잃을 수 있음.
- 가장 좋은 기술:
- IQR (Interquartile Range) 기반: 전체 데이터의 중앙값을 기준으로 사분위 범위를 계산하여, 그 범위를 벗어나는 값을 이상치로 판단합니다. Z-score보다 이상치에 덜 민감(robust)하여 안정적.
- Isolation Forest: 데이터를 무작위로 분할하며 고립시키기 쉬운 데이터 포인트를 이상치로 간주하는 트리 기반의 비지도 학습 모델. 다차원의 복잡한 데이터에서도 이상치를 효과적으로 찾아냄.
3) 피처 스케일링 (Feature Scaling)
변수들의 값 범위를 일정하게 맞춰주는 작업으로, 특히 거리 기반 모델(SVM, k-NN)이나 경사 하강법을 사용하는 모델(선형/로지스틱 회귀, 신경망)에 필수적.
- StandardScaler: 데이터를 평균 0, 표준편차 1인 분포로 바꿉니다. 가장 일반적으로 널리 사용되는 표준적인 방법.
- 가장 좋은 기술 (이상치가 있을 때):
- RobustScaler: 중앙값과 IQR을 사용해 스케일링 함. 평균과 표준편차를 쓰는 StandardScaler와 달리 이상치의 영향을 거의 받지 않아 데이터의 안정성을 크게 높여줌.
4) 범주형 데이터 인코딩 (Categorical Data Encoding)
문자열 데이터를 모델이 이해할 수 있는 숫자로 바꾸는 과정.
- One-Hot Encoding: 가장 일반적이지만, 카테고리가 너무 많으면(high cardinality) 차원이 급격히 늘어나는 단점이 있음.
- 가장 좋은 기술:
- 레이블 인코딩 (Label Encoding): 트리 기반 모델(XGBoost, LightGBM)에서는 간단하면서도 매우 효과적. (단, 선형 모델 등에서는 순서가 있다는 잘못된 정보를 줄 수 있어 주의해야 함)
- 타겟 인코딩 (Target Encoding): 성능 향상에 매우 효과적인 고급 기법. 각 카테고리를 해당 카테고리에 속하는 데이터의 타겟 변수(예: 이탈률, 가격 등)의 평균값으로 바꿈. 데이터의 정보를 더 풍부하게 담을 수 있어 모델 성능에 큰 도움이 될 수 있음.
2. 분석
Scikit-learn, tensorFlow등을 옹도에 맞게 사용. sklearn은 보통 정형데이터 분석 시,
tensorflow는 머신러닝으로 해결하기 어려운 비정형 데이터(이미지, 텍스트)나 매우 복잡한 패턴을 다룰 때 사용
데이터 핸들링은 Pandas 이용. 시각화는 seaborn
3. 분석 결과 도출 이후의 프로세스
- 하이퍼파라미터 튜닝
- 하이퍼 파라미터 : 모델이 데이터로부터 학습하는 값이 아니라 사용자가 직접 설정해 줘야 하는 값(예: 학습률, 트리의 깊이 등). 시간여유 있으면 GridSearchCV, 없으면 RandomizedSearchCV
- 교차 검증
- 신뢰도를 높이는 과정으로 모델이 특정 데이터에만 과적합 되는 것을 방지.
- 일반화된 성능을 측정하기 위함으로 방식은 k-fold를 사용
- 모델 성능 평가
- 문제의 종류와 목적에 따라 지표를 선택. 분류 모델 평가와 회귀 모델 평가로 나뉨
- 분류 모델 평가 : 정확도와 정밀도, 재현율/민감도를 측정하는데 정해진 공식이 있음. 상황에 따라 다른 지표 사용. 아래 표 참조
- 회귀 모델 평가 : 직관적이고 해석이 쉬운 MAE, 가장 일반적으로 사용되는 표준지표인 RMSE는 오차가 클수록 더 큰 패널티 부여, R제곱 결정 계수는 0과 1사이의 값으로 1에 가까울수록 모델이 데이터를 잘 설명한다는 의미.
- 문제의 종류와 목적에 따라 지표를 선택. 분류 모델 평가와 회귀 모델 평가로 나뉨
분류 모델 평가표
상황 | 가장 중요한 지표 | 예시 |
FP가 치명적인 경우 (잘못된 긍정 예측) | 정밀도 (Precision) | 스팸 메일 필터, 유튜브 추천 |
FN이 치명적인 경우 (놓치는 긍정 예측) | 재현율 (Recall) | 암 진단, 금융 사기 탐지 |
데이터가 불균형하거나, 정밀도/재현율 모두 중요할 때 | F1 Score | 대부분의 불균형 분류 문제 |
모델의 종합적인 분별 성능을 비교하고 싶을 때 | AUC | 여러 모델의 성능을 객관적으로 비교 |
데이터가 균등하고, 전반적인 정답률이 궁금할 때 | 정확도 (Accuracy) | 개/고양이 이미지 분류 (클래스별 사진 수가 비슷할 때) |