[ Data Analysis Process ]
1. 분석 주제 정의
2. 데이터 수집
3. 데이터 전처리
1) 데이터 정제
2) 분석 변수 처리
4. 데이터 분석 및 모델링
5. 결과 해석 및 시각화
데이터 전처리
2. 분석 변수 처리
1) 변수 선택
: 적절한 변수를 선택하는 것은 계산의 효율성을 향상하고 과적합을 방지해, 모델의 성능을 향상하고 해석의 용이성을 높임
(1) 변수 유형
① 독립 변수(x) : 설명/예측/원인 변수, 위험인자, 공변량(연속형), 요인(범주형)
② 종속 변수(Y) : 반응/결과/표적 변수
(2) 변수 선택 방법
① 도메인 지식 활용 : 도메인에 대한 전문지식을 참고해 중요한 변수를 선택
② 필터 기법 : 데이터의 통계적 특성을 이용, 빠르고 간단하게 적용 가능
- 상관분석 : 종속 변수와 독립 변수 간의 상관관계를 분석
- ANOVA : 범주형 변수와 연속형 변수 간의 관계를 분석
- 카이제곱 검정 : 범주형 변수 간의 독립성을 검정
③ 래퍼 기법 : 변수 조합을 평가해 최적의 변수 집합을 선택, 계산 비용이 많이 들지만 성능이 우수
- 전진 선택법(Forward Selection) : 변수를 하나씩 추가하며 모델의 성능을 평가해 중요 변수를 선택
- 후진 제거법(Backward Elimination) : 모든 변수를 포함한 모델에서 시작해, 중요하지 않은 변수를 제거
- 단계적 선택법(Stepwise Selection) : 전진 선택법과 후진 제거법을 결합한 방법, 변수 추가/제거를 반복
④ 임베디드 기법 : 모델 자체에 변수 선택 포함
- 변수 중요도 : Random Forest, GBM(Gradient Boosting Machine) 등으로 변수 중요도를 활용
- Regularization 기법 : LASSO 회귀 등으로 불필요한 변수를 제거
2) 차원축소
: 데이터의 복잡성을 줄이고, 중요한 정보를 보존하면서 분석의 효율성을 높임
① 선형 차원축소
- 주성분 분석(PCA) : 데이터의 분산을 최대한 유지하면서 대표적인 차원의 주성분을 생성해 전체 데이터 구조를 설명
- 선형 판별 분석(LDA) : 독립 변수(정량적)를 이용해 종속 변수(명목형)의 집단 구분을 예측
- 특이값 분해(SVD) : M x N 행렬에 적용하여 차원을 축소하는 행렬 분해 기법
- 요인 분석(Factor Analysis) : 잠재변수가 존재하는 경우, 잠재 요인을 도출하여 데이터의 구조를 해석
- 독립 성분 분석( ICA) : 차원 간의 관계를 독립적으로 분리해 차원을 축소 (비정규분포)
② 비선형 차원축소
- 다차원 척도법(MDS) : 데이터에 내재된 구조를 찾아 자료를 함축적으로 표현
- t-SNE : 고차원 데이터의 구조를 저차원 공간에 비선형적으로 매핑해 데이터의 군집 구조를 시각화
- Isomap : 고차원 데이터의 비선형 구조를 저차원으로 매핑 (균일한 데이터에서 👍)
- LLE : 데이터의 국소적 선형 구조를 보존하면서 비선형적으로 차원을 축소 (노이즈에 민감)
3) 파생변수 생성
① 단위 변환 : 변수 단위, 척도를 변환
② 요약통계량 변환
③ 변수 분해 : 기존 변수를 세부적 요소로 분해해 새로운 변수를 생성
④ 변수 결합: 기본 연산, 조건문을 활용해 여러 변수를 결합하여 새로운 변수를 생성
4) 변수 변환
① 스케일링 : 특정 구간을 바꿈
- 표준화 : 정규분포(평균 0, 분산 1)로 변환
- 최소-최대 정규화 : 데이터를 0~1 사이의 값으로 변환
- Z-score 정규화
② 로그/지수 변환 : 분포가 치우친 변수를 로그/지수로 변환하여 기울어짐을 감소
③ 제곱근 변환 : 데이터의 스케일을 줄여서 분포를 변환
④ Box-Cox 변환 : 역변환, 제곱근 변환을 적용해 정규분포에 가깝게 만들거나, 분산을 안정화 함
⑤ 이산화(Binning)
- 구간화 : 연속형 데이터를 일정한 구간으로 나눔
- 빈도 기반 이산화 : 데이터의 빈도에 따라 구간을 나눔
⑥ 함수 변환
- 다항식 변환 : 데이터에 다항식을 적용해 변환
- 역수 변환 : 데이터의 역수를 계산해 변환
⑦ 비율 변환
- 백분율 변환
- Log-Odds 변환
⑧ 범주형 변환
- 라벨 인코딩 : 범주형 변수를 정수로 변환
- One-Hot 인코딩 : 각 범주형 값에 대해 하나의 이진 열을 생성 (범주에 해당하면 1, 아니면 0 할당)
- 순위 변환 : 순서형 변수를 정수로 변환
- Binary 인코딩 : 각 범주형 값을 정수로 변환 후 이진수로 변환 (메모리 사용량 ↓)
5) 불균형 데이터 처리
(1) 불균형 데이터
: 클래스 간 표본 수가 크게 차이나는 데이터 셋
- 대부분의 머신러닝 알고리즘은 클래스 간 표본 수가 균형잡혀 있다고 가정
- 불균형 데이터에서 다수 클래스를 더 잘 예측하게 되고, 소수 클래스의 예측력 감소
- 다수 클래스의 정확도는 높지만, 소수 클래스의 재현율이 낮아지는 문제점 발생
* - 정확도(Accuracy) : 전체 예측에서 옳은 예측의 비율
- 재현율(Recall) : 실제 값이 True인 것에 대해 예측 값이 True인 지표
- 정밀도(Precision) : 예측 값이 True인 것에 대해 실제 값이 True인 지표
(2) 불균형 데이터 탐지
: 데이터 셋의 클래스 분포를 분석해 불균형 데이터를 탐지
- 히스토그램
- Box-Plot
- 클래스 분포 통계 : 클래스별 표본 수 계산해 분포를 분석
(3) 불균형 데이터 처리
① 과소표집 (UnderSampling) : 다수 클래스의 데이터를 샘플링해 클래스 간 균형을 맞춤
- 랜덤 언더 샘플링 : 무작위 선택
- ENN(Edited Nearest Neighbors) : 소수 클래스 주위에 인접하 다수 클래스 데이터 제거
- 토멕 링크 방법(Tomek Link Method) : 다수 클래스의 토멕 링크(클래스 부분 경계선에 근접한 데이터) 제거
- CNN(Condensed Nearest Neighbor) : 다수 클래스에 밀집된 데이터가 없을 때까지 제거해 대표적 데이터만 남김
- OSS(One Sided Selection) : 토멕 링크 + CNN, 토멕 링크 방법으로 제거 후 CNN 방법으로 제거
② 과대표집 (OverSampling) : 소수 클래스의 샘플 수를 늘려 클래스 간 균형을 맞춤
- 랜덤 오버 샘플링 : 무작위 복제
- SMOTE : 소수 클래스 중심-주변 데이터 사이에 가상의 직선 만들어 그 위에 데이터 추가
- Borderline-SMOTE : 다수 클래스와 소수 클래스의 경계선에서 SMOTE
- ADASYN(ADAptive SYNthetic) : 모든 소수 클래스에서 다수 클래스의 관측 비율 계산해 SMOTE 적용
③ 임계값 이동 (Threshold-Moving)
- 임계값 : 어떤 현상이 다르게 나타나기 시작하는 경계의 수치 값, 데이터 값을 분류할 기준
- 모델의 결정 임계값을 조정해 소수 클래스에 대한 민감도를 높임
- 소수 클래스에 대해 민감해지도록 다수 클래스 쪽으로 임계값 이동
- ROC 곡선 분석을 통해 최적의 임계값 찾음
- Precision-Recall 곡선을 사용해 적절한 임계값을 설정
④ 앙상블 기법 : 서로 같거나 다른 여러 모형들의 예측/분류 결과를 종합
- 배깅(Bagging)
- 부스팅(Boosting)
- Random Forest
'Data Analysis > Process' 카테고리의 다른 글
3. 데이터 전처리_(1) 데이터 정제 (0) | 2024.06.19 |
---|---|
2. 데이터 수집 (0) | 2024.06.19 |
1. 분석 주제 정의 (0) | 2024.06.19 |
4. 데이터 분석 및 모델링 _ (2-4) 데이터 유형에 따른 분석 모형 (0) | 2024.06.13 |
4. 데이터 분석 및 모델링 _ (2-3) 머신러닝 기반 분석 모형 (0) | 2024.06.13 |