본문 바로가기
Data Analysis/Process

3. 데이터 전처리 _ (2) 분석 변수 처리

by @0-0 2024. 6. 19.
반응형

 

더보기

[  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

 

 

 

 

반응형