데이터 EDA와 머신러닝 소개

2024. 2. 6. 15:49TIL

데이터 EDA 란?

 EDA(Exploratory Data Analysis)는 데이터 분석이나 모델링 전에 꼭 수행해야 하는 작업이다.

  • 효과적인 데이터 분석과 모델링을 위한 기초 마련
  • 데이터 품질 확인
    • 중복 레코드 체크
    • 최근 데이터의 존재 여부 확인
    • Primary key uniqueness가 지켜지는지 체크
    • 값이 비어있는 컬럼 확인
  • 데이터 특성(패턴) 확인
  • 현업에서 깨끗한 데이터는 존재하지 않음
    • 항상 데이터를 믿을 수 있는지 의심
    • 실제 레코드 몇 개를 직접 살펴보기
  • 데이터셋 이해
    • 기계 통계 분석
    • 결측치 탐지 및 처리
    • 이상치 탐지 및 처리
    • 데이터 시각화
    • 상관 관계 분석
    • (고급) 피처 엔지니어링
 데이터 EDA 기법 소개와 실습
  • 데이터 전처리 기법 - 기술 통계 분석
    • 숫자 변수와 카테고리 변수 파악
    • 숫자 변수의 경우 값 범위 파악
    • 카테고리 변수의 경우 카테고리 수 파악
    • 카테고리 변수의 경우 머신 러닝 모델을 만들 때 인코딩 방법 결정
  • 데이터 전처리 기법 - 결측치 탐지 및 처리
    • 빈 값이 있는 필드를 가진 레코드를 찾기
    • 해당 필드를 무시하거나 숫자 필드인 경우 평균값, 최솟값, 가장 흔한 값으로 채움
    • 또는 카테고리 필드인 경우 가장 흔한 카테고리 값을 기본값으로 사용
    • Pandas의 경우 isnull().sum() 함수 사용
  • 데이터 전처리 기법 - 이상치 탐지 및 처리
    • 아주 크거나 작은 값을 갖는 소수의 레코드가 있는 경우
    • 해당 레코드를 전체적으로 무시
    • 전체 평균값이나 최소값, 최댓값으로 교체
    • 다른 값으로 전환(log, binning)
    • ML 모델링 방식 사용(Decision Tree)
  • 데이터 전처리 기법 - Primary Key Uniqueness 체크
    • 데이터에 Primary key가 존재하는 경우
    • Primary key의 값이 유일함을 검증
  • 데이터 전처리 기법 - 최신성 체크
    • 데이터가 최신 데이터이어야 하는 경우
    • 데이터에 존재하는 타임스탬프 필드 기준으로 최신 데이터가 있는지 확인
  • 데이터 전처리 기법 - 레이블 (타켓) 체크
    • 예측 대상이 되는 필드의 값이 어떻게 분포되어 있는지 확인
    • 분류 모델인데 레이블 값 분포가 한쪽으로 치우쳤다면 평가지표를 F1 Score로 사용
    • 부족한 예들을 찾아서 훈련 데이터에 추가하는 노력
  • 데이터 전처리 기법 - 변수간 상관 관계 검사
    • 레이블과 상관관계를 보여주는 변수들이 무엇인지 검사
    • Python Pandas의 경우 corr() 함수 사용
  • 데이터 전처리 기법 - 피처 엔지니어링
    • 앞서 말한 모든 기법이 피처 엔지니어링
    • 고급 피처 엔지니어링은 필드의 수가 너무 커지면 PCA(Principle Component Analysis, 주성분분석) 등을 통해 필드 수를 줄이기,
    • 이름 필드에서 성별 등을 추출해보기, 
    • Regression의 경우 레이블 필드와 약한 상관관계를 갖고 있는 필드들을 곱하거나 더해서 새로운 필드를 만들기

 

Pandas 함수를 사용해서 데이터 전처리를 할 수 있다.

  • CSV 파일 읽기: read_csv를 사용하며 URL을 인자로 사용하는 것이 가능
  • 레코드 일부 확인해보기: head 혹은 tail
  • 전체적인 데이터 특징 살펴보기: unique, describe와 info
  • 데이터 필터링: where, dropna, drop
  • 데이터 시각화: hist, boxplot, plot
머신 러닝 소개

 머신 러닝은 배움이 가능한 기계로 컴퓨터가 학습할 수 있도록 알고리즘과 기술을 개발하는 분야이다. 딥러닝은 머신 러닝의 일부이며 AI는 머신 러닝을 포괄하는 개념이다. 머신 러닝을 통해서 최종적으로 만드는 것이 머신 러닝 모델이다. 머신 러닝 모델은 특정 방식의 예측을 해주는 블랙박스이다. 선택한 머신 러닝 알고리즘에 따라 내부가 달라지며 디버깅은 쉽지 않다. 머선 러닝의 종류에는 지도 기계 학습, 비지도 기계 학습, 강화 학습이 있다.  

  • 지도 기계 학습 (Supervised Machine Learning)
    • 명시적 예제 (트레이닝셋)을 통해 학습: 정답이 존재
    • 분류 지도 학습 (Classification): 이진 분류(Binary)와 다중 분류 (Multi-class)
    • 회귀 지도 학습 (Regression)
  • 비지도 기계 학습 (Unsupervised Machine Learning)
    • 클러스터링 혹은 뉴스 그룹핑처럼 주어진 데이터를 몇 개의 그룹으로 분리
    • GPT 같은 언어 모델의 훈련도 여기에 속함 (Semi-Supervised Machine Learning)
  • 강화 학습 (Reinforcement Learning)
    • 시행착오를 통해 최적의 결정을 학습하는 기계학습 방법
    • 알파고 혹은 자율주행

API(Application Programming Interface)는 프로그램을 작성하기 위해 사용하는 인터페이스(통신하기 위한 방법)를 의미한다. API는 보통 웹상의 다른 서버에 존재하는 특정기능을 사용 가능하게 해주는 인터페이스를 지칭한다. ML에서는 API는 모델을 통해 예측하는 것을 의미한다. 

 

 지도 기계 학습의 예는 타이타닉 승객 생존 여부 예측(Binary Classification), 스팸 웹 페이지 분류기(Classification), 주택 가격 예측(Regression)이 있다. 비지도 기계 학습의 예는 문장의 일부를 보고 비어있는 단어를 확률적으로 맞추는 모델(Language Model)이 있다. 강화 학습은 시행착오를 통해 최적의 결정을 학습하는 기계학습 방법이다. 에이전트(강화학습 모델)는 행동에 대한 보상을 받아 시간이 지남에 따라 최대 보상을 얻을 수 있는 전략을 학습한다. 강화학습의 예는 바둑, 체스, 자율 주행, 로봇 등이 있다.

 

머신 러닝 관련 개념 소개

 과적합(Overfitting)이란 모델이 트레이닝셋 데이터에 너무 최적화된 경우이다. 이를 완화하기 위해서 데이터셋 수집에 편향이 있는지 확인해야 한다. 그리고 모델 성능 평가를 hold-out 테스트보다는 cross-validation 테스트를 사용하고 정규화를 적용한다.

 

 Hold Out은 트레이닝 셋을 트레이닝을 위한 용도와 테스트를 위한 용도로 분리하는 방법이다. 모델 빌드시 트레이닝 데이터만 사용하고 모델의 성능은 테스트 데이터로 측정한다. Cross-Validation은 K-Fold라고도 부르며 데이터를 K개로 나눠 K개의 폴드에 대해서 해당 폴드를 제외한 나머지 데이터로 모델을 빌드하고 해당 폴드 데이터로 검증하는 것을 반복하는 방법이다. K번의 모델 빌딩과 성능 측정이 수행되고 측정 결과의 평균을 모델의 전체 성능으로 간주한다. 

 

  표준화(Normalization)은 트레이닝 셋이 특정 방향으로 편향되지 않도록 보정해 주는 것이다. 표준화를 통해 트레이닝 셋에 존재하는 feature들의 값을 특정 범위로 제약을 주어 모델의 성능이 트레이닝 셋에 따라 달라지는 것을 방지한다. 

 

 비용 함수(Cost Function, Lost Function)은 모델의 예측 정확도를 측정하는 함수이다. 이 함수가 최솟값일 때의 모델이 최적의 모델이다. 비용 함수의 종류는 Absolute loss(Least Absolute Deviation, L1 norm), Square loss(Least Square Error, L2 norm), Hinge loss, Logistic loss, Cross entropy loss, RMSE (Root Mean Squared Error), Logarithmic loss (RMSLE, Root Mean Squared Logarithmic Error)가 있다.

 

 정규화(Regularization)은 손실 함수에 추가 정보(또는 페널티) 추가로 과적합을 방지하는 기술로 일부 피처의 가중치를 0으로 만들거나 아주 작게 만든다. 정규화의 가장 일반적인 두 가지 형태로 L1 정규화와 L2 정규화가 있다. L1 정규화(Lasso Regression)는 일부 덜 중요한 피처의 가중치를 0으로 만든다. L2 정규화(Ridge Regression)는 일부 덜 중요한 피처의 가중치를 아주 작게 만든다.

 

모델 추론 과정 소개

 먼저 훈련용 데이터를 있는 그대로 모델 훈련에 사용하지 않고 숫자가 아닌 값은 무시하거나 숫자로 변환하고 숫자는 표준화 등으로 변환하는 데이터 처리 과정을 한다. 변환은 API 내에서 수행해주는 것이 좋다. 모델 빌딩을 하는 사람과 추론 운용하는 사람이 보통 다르므로 모델 추론 과정을 모니터링하는 MLOps라는 직군이 만들어졌다. 데이터 패턴이 달라지는 Data Drift가 일어나면 모델의 성능이 떨어진다. 그래서 모델 중요 feature의 값 분포 모니터링과 모델 관련 중요 지표 모니터링이 필수이다. 

'TIL' 카테고리의 다른 글

Regression 모델 만들기  (0) 2024.02.09
Classification 모델 만들기  (0) 2024.02.08
Kaggle 소개  (0) 2024.02.05
성능 평가  (0) 2024.02.02
딥러닝  (0) 2024.02.02