EDA 하는 이유
- 현업에서 깨끗한 데이터란 존재하지 않음
- 데이터 품질 체크
- 중복 레코드 체크
- 최근 데이터 존재 여부 체크
- Primary key uniqueness 체크
- 값이 비어있는 컬럼이 있는지 체크
일반적인 방법
- 기술 통계 분석
- 결측치 탐지 및 처리
- 이상치 탐지 및 처리
- 데이터 시각화
- 상관 관계 분석
- (고급) 피처 엔지니어링
EDA 기법 소개
기술 통계 분석
- 숫자 변수와 카테고리 변수 파악
- 숫자 변수의 경우 값 범위 파악
- 카테고리 변수의 경우 카테고리 수 파악
- 카테고리 경우 머신 러닝 모델 만들때 인코딩(일반적으로 원-핫-인코딩) 방법 결정
결측치 탐지 및 처리
- 비어있는 값이 있는 필드를 가진 레코드들 찾기
- 해당 필드들을 어떻게 할지 결정 필요
- 무시하기
- 채우기
- 1) 숫자 필드: 평균값, 최소값, 최대값, 가장 흔한 값등
- 2) 카테고리 필드: 가장 흔한 카테고리 값 기본값으로 사용
- Pandas의 isnull().sum()
이상치 탐지 및 처리
- 숫자 필드의 경우 아주 크거나 작은 값을 갖는 소수의 레코드
- 여러 가지 방법 존재
- 무시하기
- 평균값, 최소값, 최대값, 가장 흔한 값등
- 숫자 필드 값을 다른 값으로 전환 ex) log, binning
- 이상치에 강한 ML 모델링 방식 사용 ex) Decision Tree
Primary key Uniqueness 체크
최신성 체크
- 데이터에 존재하는 타임스탬프 필드를 기준으로 최신 데이터가 있는지 확인
레이블(타겟) 체크
- 예측 대상이 되는 필드의 값이 어떻게 분포되었는지
- 분류 모델이 레이블 값 분포가 한쪽으로 치우쳤다면 평가 지표를 F1으로 사용
변수 간 상관관계
- 특히 레이블과 상관관계를 보여주는 변수들이 무엇인지
- Pandas의 corr()
피처 엔지니어링
- 피처 엔지니어링(머신러닝 훈련에 이용)
- 필드 수가 커지면 pca를 통해 필드 수 줄이기
- 앞선 언급한 이름 필드에서 성별 등을 추출해보기
- Regression의 경우 레이블 필드와 약한 상관관계를 갖고 있는 필드들을 곱하거나 더해서 새로운 필드를 만들기
판다스 사용 전처리
- csv 파일 읽기: read_csv
- 레코드 일부 확인 하기: head, tail
- 데이터 특징 살펴보기: unique, describe, info
- 데이터 필터링: where, dropna, drop
- 데이터 시각화: hist, boxplot, plot