240910 TIL #489 AI Tech #27 ML 대회 / EDA / 데이터 전처리

김춘복·2024년 9월 10일
0

TIL : Today I Learned

목록 보기
490/571

Today I Learned

드디어 프로젝트 주차 시작!!


강의 복습

ML 대회

  • 일반적인 프로세스
    EDA&인사이트 -> Feature Engineering -> 모델개발 -> 모델+피처 성능 확인 -> 토의 및 피드백 -> 다시 첫 단계

  • 먼저 문제에 대한 정의와 평가지표에 대한 이해가 필요하다.

  • EDA를 통해 데이터구조를 파악하고, 결측치-이상치를 처리하고, 변수 간 관계를 파악해 모델링 방향성을 설정해야 한다.

  • Feature Engineering을 통해 데이터를 정제해 모델 안정성을 높인다.

  • 일반적으로는 정형데이터에선 트리 기반 모델이 성능이 좋다.

  • validation은 한번만 하지 않고 cv를 사용하는게 좋다. 과적합 방지는 필수!

  • 앙상블 : 여러 모델의 예측값을 혼합해 더 좋은 결과를 만드는 것.
    단순히 섞거나 예측값을 평균내기만 해도 성능 향상을 기대할 수 있다.


EDA

데이터셋의 주요 특성을 이해하고 숨겨진 패턴, 이상치, 구조 등을 시각적으로 탐색하는 과정

  • 현실에서 데이터는 상당히 더럽다. 결측치, 이상치 처리가 매우 중요하다.

  • 데이터 이해 -> 전처리 -> 요약 및 시각화의 단계로 진행된다.

  • 데이터 요약
    수치형 : 중심 경향성(평균, 중앙값, 최빈값), 산포측정(분산, 표준편차), 관계성(상관관계)
    범주형 : 도수분포표

데이터 시각화

  • 단변량 분석 (Univariate Analysis) : 단일 변수의 분포, 중심경향, 산포도 등을 이해
    수치형 - 히스토그램, boxplot
    범주형 - pie chart, 막대그래프

  • 이변량 분석 (Bivariate Analysis) : 두 변수간 관계나 연관성(or 잠재적 인과성)을 분석
    수치형 - 산점도, 상관 행렬도
    범주형 & 수치형의 관계 - box plot, violin plot

  • 다변량 분석 (Multivariate Analysis) : 3개 이상의 변수를 동시에 분석
    주성분 분석, 클러스터 분석, 다변량 회귀분석 등을 사용한다.


Feature Engineering

머신러닝 모델의 성능을 향상시키기 위해 새로운 피처 생성 + 기존 피처를 변형

  • 기존의 feature를 잘 변형해서 새로운 feature로 만드는 것이 중요하다.

  • 어떤 변수가 중요한 변수인지 판단하는 기준은 예측 성능(predictive performance) 측면과 인사이트 도출(insight extraction) 측면이 있다.

  • 예측 성능 측면에서는 변별력(변수와 목표변수간 강한 상관관계가 있나?)과 정보량(변수가 모델이 학습할 수 있을정도로 충분한 정보인가?)이 중요하다.

  • 인사이트 도출은 해석 가능성(면수가 뭘 의미하는지 해석이 되나?)과 변수 대표성(변수가 데이터의 본질적인 특징을 잘 드러내는지?)이 중요하다. 이쪽은 정량화가 다소 어렵다.

  • SHAP value : 각 feature가 최종 예측에 얼마나 기여했는 지를 나타내는 값

  • Permutation importance : 적합된 모델의 변수를 랜덤하게 섞어서 얼마나 성능이 하락했는지를 보고 변수의 중요성을 파악하는 방법


데이터 전처리

데이터 클렌징(데이터 정제)

데이터의 품질을 향상시키기 위해 오류를 수정하거나 불필요한 데이터를 제거하는 과정

  • 결측치-이상치 처리, 중복데이터 제거, 데이터 형식 변환, 표준화 및 정규화 과정이 있다.

  • 이상치 찾는 방법은 IQR이나 Z-Score가 +-3을 벗어난 경우를 주로 사용
    그냥 두기, 제거, 정해진 최소or최대값으로 대체하는 방법 3가지 대처가 있다.

  • 결측치는 처리할 때 주의해야 하는데, 결측치 자체가 데이터 특성을 반영할 수도 있다.
    평균, 중간, 최빈값 대체 방법이 있다. 아니면 다른 예측 모델로 채울 수도 있다(MICE).

스케일링

데이터의 범위를 조정하는 것. 데이터의 분포는 건들지 않고 범위만 조정한다!

  • Standardization : =Z-score. 평균 0, 표준편차 1로 변환한다.

  • Normalization : 데이터의 범위를 0~1 사이로 만든다.

Transform

데이터의 범위 + 분포를 조정하는 것. 정규분포에 가까울수록 학습이 잘 된다.

  • 먼저 tranform을 하고 스케일링을 하는 것이 낫다.

  • log transform : 로그함수를 적용해 양수인 데이터 분포를 정규분포에 가깝게 만들려하는 기법

  • box-cox transform : log보다 일반적. λ\lambda값을 사용한다.
    λ\lambda는 변환 파라미터로 1일때는 거의 변환하지 않고 0일때는 log transform과 유사하고 0.5일때는 제곱근을 취한 변형과 비슷하다.

  • Power transform : box-cox + 기하평균 개념.

  • Quantile transform

Encoding

  • label encoding : 범주형 데이터를 정수로 변환(사전순).
  • ordinal encoding : 지정한 순서로 범주형 데이터를 정수로 변환
  • one-hot encoding : 내가 속한 범주만 1이고 나머지는 0인 벡터로 변환

피어세션

  • 팀 프로젝트에 대한 초기 세팅과 어떻게 해야할 지에 대해 오랫동안 토의했다. 할 게 많은 프로젝트인데 끝나고 나면 배울 것이 많을 것 같다.
profile
Backend Dev / Data Engineer

0개의 댓글