데이터 분석 Data Analytics/프로그래머스 데이터분석 데브코스 2기

[TIL] 데이터분석 데브코스 52일차 - EDA(Exploratory Data Analysis)/ Kaggle 타이타닉 데이터로 EDA 실습

상급닌자연습생 2024. 4. 30. 17:27

EDA(Exploratory Data Analysis)

 

EDA를 하는 이유

  • 효과적인 데이터 분석과 모델링을 위한 기초 마련
  • 데이터 품질 확인(현업에서 깨끗한 데이터란 존재할 수 없음)
    • 중복 레코드 체그
    • 최근 데이터 존재 여부(=최신성) 체크
    • Primary key Uniqueness 체크
    • 값이 비어있는 컬럼 존재 여부 체크
  • 데이터 특성(패턴) 확인

 

 

 

EDA 기법

1. 기술 통계 분석

  • 숫자 변수와 카테고리 변수 파악
  • 숫자 변수의 경우 값 범위 파악
  • 카테고리 변수의 경우에는 카테고리 수 파악
  • 카테고리의 경우 머신러닝 모델을 만들때 인코딩 방법 결정

 

2. 결측치 탐지 및 처리

  • 비어있는 값이 있는 필드를 가진 레코드들을 찾기
  • 널 값이 있는 레코드 무시 가능
  • 널 값이 있는 레코드 채우는 방법 :  
    • 숫자 : 평균값, 최소값, 최대값, 가장 흔한 값등을 기본값으로 사용 가능
    • 카테고리 : 가장 흔한 카테고리값을 기본값으로 사용 가능
  •   Pandas의 경우에는 `isnull().sum()` 함수 사용

 

3. 이상치 탐지 및 처리

  • 해당 레코드들을 전체적으로 다 무시
  • 그 숫자 필드의 값을 전체 평균값이나 최소값이나 최대값등으로 교체
  • 그숫자필드의값을다른값으로전환 (ex. log, binning)
  • 이상치에 강한 ML 모델링 방식을 사용 (ex. DT)

 

4. Primary Key Uniqueness 체크

데이터에 Primary Key가 존재하는 경우, 그 값의 유일성을 검증해야 한다.

 

 

 

5. 최신성 체크

데이터에 존재하는 타임스탬프 필드를 기준으로 최신 데이터가 있는지 확인해야 한다.

 

 

6. 레이블(타겟, 정답) 체크

  • 예측 대상이 되는 필드의 값이 어떻게 분포되어있는지 확인
  • 분류 모델인데 레이블 값 분포가 한쪽으로 치우쳤다면 평가 지표를 F1으로 사용
  • 부족한 예들을 찾아서 훈련 데이터에 추가하는 노력이 필요함
    • 이미지, 오디오 등의 데이터 : Python module 활용
    • 다른 데이터 : SMOTE(Synthetic Minority Over-sampling Technique) 활용
📌 SMOTE(Synthetic Minority Over-sampling Technique)
: 레이블 데이터를 보고 특정 레이블을 갖는 데이터들의 특성을 파악하여 그것과 비슷한 데이터들을 인위적으로 생성해주는 기술

 

 

7. 상관관계(Correlation) 분석

  • 레이블과 상관관계를 보여주는 변수들이 무엇인지 검사
    • 1 : 100% 일치
    • -1 : 정반대의 경우
    • 0 : 전혀 상관관계가 없음
  • 어떤 피쳐(필드)가 중요한지 파악할 수 있음
  • Pandas의 경우 `corr()` 함수 사용
  • 머신러닝의 관점에서 1 혹은 -1일때가 좋은 정보
  • 전부 숫자 데이터일때 사용 가능

 

8. 피처 엔지니어링

훈련 데이터에 있는 피처를 조합해서 새로운 피처를 생성

피처 : 머신러닝 훈련에 사용되는 최종 데이터

  • 필드의 수가 너무 커지면 PCA등을 통해 필드수(=차원)를 줄여보는 것
  • 앞서 언급한 이름 필드에서 성별등을 추출해보는 것
  • Regression의 경우 레이블 필드와 약한 상관관계를 갖고 있는 필드들을 곱하거나 더해서 새로운 필드를 만드는 것 등등

 

 

 

EDA with Pandas

1. CSV파일 읽기

  • `read_csv` ← 인자로 URL 사용 가능

 

2. 레코드 일부 확인하기

  • `head`
  • `tail`

 

3. 전체 데이터 특징 살펴보기

  • `unique`
  • `describe`
  • `info`

 

4. 데이터 필터링

  • `where`
  • `dropna`
  • `drop``

 

5. 데이터 시각화

  • `hist`
  • `boxplot`
  • `plot`

 

 

 

 

 

 


Kaggle 데이터로 EDA 실습

🔗 실습 링크 : 

 

🔗 참고 노트북 : https://www.kaggle.com/code/mjamilmoughal/eda-of-titanic-dataset-with-python-analysis

 

EDA of Titanic dataset with Python (Analysis)

Explore and run machine learning code with Kaggle Notebooks | Using data from multiple data sources

www.kaggle.com

 

 

 

 

 

 

 

 


머신 러닝 관련 개념

1. 과적합(Overfitting)

: 모델이 훈련 데이터셋에 과하게 최적화되어서 새로운 데이터로 학습해보았을 때 성능이 제대로 나오지 않는 상태

 

해결 방법 : 

  • 데이터 셋 수집에 편향(bias)가 있는지 확인
  • 모델 성능 평가를 hold-out 보다는 cross-validation 사용
  • 정규화 적용(L1 normalization, L2 normalization)

 

 

 

2. Hold out

: 과적합 방지를 위한 가장 간단한 방법으로, 훈련 데이터셋을 훈련을 위한 용도와 테스트를 위한 용도로 분리하는 것

  • 보통 (훈련 : 평가)의 비율을 (75% : 25%), (80% : 20%)로 함
  • 모델 학습 시 훈련 데이터 사용
  • 모델 성능 평가는 테스트 데이터 사용

 

 

 

3. Cross-Validation(교차 검증, K-Fold Cross Validation)

  1. 전체 데이터셋을 K개의 덩어리(Fold)로 나눔
  2. 해당 Fold 데이터를 평가 데이터로 사용해서 모델 검증
    해당 Fold를 제외한 나머지 데이터를 훈련 데이터로 사용해서 모델 학습
  3. K개의 Fold에 대해서 위의 과정을 반복 = K번의 모델 학습 + 성능 측정 수행
  4. 모든 Fold를 처리한 후 K개의 성능 결과에 대해 평균을 구하고 이를 모델의 전체 성능으로 간주

 

 

 

4. 표준화 (Normalization)

: 머신러닝 모델이 학습하기 위해서는 입력으로 받는 데이터가 전부 수치화 되어야 하는데, 이 과정에서 특정 컬럼값의 범위가 너무 커서 특정 방향으로 편향되지 않도록 보정해주는 과정

  • 훈련 데이터셋에 존재하는 feature들의 값을 특정 범위로 제약을 주어 모델의 성능이 훈련 데이터셋에 따라 달라지는 것을 방지
    • 보통 모든 feature들의 값을 동일한 범위에 들어가도록 하는 전처리 기법
    • 예) 최대/최소값이 각각 1과 -1이 되도록 표준화
    • 예) 최대/최소값이 각각 1과 0이 되도록 표준화
  • 딥러닝에서는 “Batch Normalization”이라는 것이 존재

 

 

 

 

5. 비용 함수(Cost Function, Loss 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)

 

 

 

 

6. 정규화 (Regularization)

: 손실 함수에 추가 정보(or 패널티)를 부여하여 과적합을 방지하기 위한 기술

(일부 feature의 가중치를 0 혹은 아주 작게 만든다.)

 

정규화 없는 기본 ML 방식 : Linear Regression

 

1) L1 정규화

일부 덜 중요한 피처의 가중치를 0으로 만든다.

► Linear Regression + L1 정규화 = Lasso Regression

 

2) L2 정규화

일부 덜 중요한 feature의 가중치를 아주 작게 만든다.

► Linear Regression + L2 정규화 = Ridge Regression

 

 

 

 

 

 

 

 

 

 

머신 러닝(Machine Learning) 이란?

: 배움이 가능한 기계가 데이터의 패턴을 보고 인간을 모방하는 방식

► 컴퓨터가 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야

 

 

 

머신 러닝 모델 (Machine Learning Model)

: 머신 러닝을 통해서 최종적으로 만드는 결과물

  • 블랙박스 : 내부가 어떤지 모름
    • 선택한 ML 알고리즘에 따라 내부 동작 방식이 다르다.
    • 디버깅이 쉽지 않다.
  • 입력 데이터를 주면 이를 기반으로 예측

 

 

모델 학습(training, building)

: 머신러닝 모델을 만드는 과정

 

 

 

 

머신 러닝 종류

1. 지도 학습(Supervised Machine Learning)

: 훈련데이터 O + 정답(=레이블, 타겟) O

  • 분류(classificaiton) : 정답이 유한한 수의 범주형일때
    • 모델 성과 지표(클수록 good) : accuracy, precision, recall, f1 score
    • binary classification : 예측 대상이 2개
    • multi-class classification : 예측 대상이 2개 이상
  • 회귀(regression) : 연속적인 숫자를 예측하는데 사용되는 ML 모델
    • 활용분야 : 주택 가격 예측, 주식 가격 예측
    • 모델 성과 지표(작을수록 good) : RMSE

 

지도 기계 학습

1단계. 모델 훈련 (Training) ← 데이터 과학자가 진행

  • 훈련 데이터 셋 (X, Y)
    • X : 입력데이터 (feature)
    • Y : 예측값 (label)
  • 학습 알고리즘
  • 머신러닝 모델

2단계. 추론/예측 (Prediction) : 학습시킨 모델을 사용하는 단계 ← 백엔드 엔지니어, 프론트엔드 엔지니어

  • 응용 프로그램단에서 머신러닝 모델이 필요할 때마다 입력 데이터(X)를 준비해서 API를 호출하면, API안에서 머신러닝 모델에 받은 입력 데이터(X)를 input으로 주고, 머신러닝 모델이 반환해준 값은 예측값이 된다. 이를 응용 프로그램에 돌려주는 방식으로 동작
  • 머신러닝 모델을 API 형태로 배포하는 것은 데이터 엔지니어 또는 백엔드 엔지니어가 관여
  • 이러한 과정을 한번에 할 수 있게 하는 프레임워크 : SageMaker

 

📌 API(Application Programming Interface)
: 프로그램을 작성하기 위해 사용하는 인터페이스
= 특정 업무를 수행하기 위해서 호출하는 기능들

◆ 다양한 종류의 API가 존재
ex) Python 모듈은 각기 제공해주는 기능에 따라 다양한 함수 제공 (이것도 API라 할 수 있음)
◆ 보통 API는 웹 상의 다른 서버에 존재하는 특정 기능을 사용 가능하게 해주는 인터페이스를 지칭
◆ 머신러닝에서 API는 모델을 통해 예측하는 것을 의미함

📌 Interface(인터페이스)
: 무엇인가와 통신을 하기 위한 방법

 

 

 

 

 

 

2. 비지도 학습(Unsupervised Machine Learning)

: 훈련데이터 O + 정답 X → 훈련데이터로부터 패턴을 찾음

  • 군집화(clustering) : 데이터로부터 특성을 찾아서 비슷한것끼리 묶어줌
    • 활용분야 : 뉴스 기사 클러스터링
  • 언어모델(LLM; Large Language Model) : 문장의 일부를 보고 비어있는 단어를 확률적으로 예측하는 모델
    • 예시 : GPT

 

3. 강화학습 (Reinforcement Learning)

: 훈련데이터 X → 시행착오를 통해 최적의 결정을 학습하는 ML 학습 방법

  • 에이전트 : 머신러닝 모델
  • 환경 : 규칙이 명확하게 있어야 함
  • 에이전트환경과 상호작용하며(행동에 대한 보상을 받으며) 시간이 지남에 따라 최대 보상 전략을 학습
  • 예시 :  알파고, 자율주행

 

 

 

 

 

 

 

 

 

모델 추론/예측(사용) 과정

예측 데이터를 실제 훈련에 사용되는 데이터로 전환

 

모델 훈련 프로세스

1. Load Data

: 훈련 데이터 불러오기

 

2. Extract features

: 훈련용 데이터가 있는 그대로 모델 훈련에 사용되는 것이 아니라 숫자가 아닌 값들은 무시되거나 숫자로 변환되고 숫자들은 표준화 (01사이) 등으로 한번 변환됨

► 훈련과 추론과정에서 동일하게 진행되어야 한다.

► 추론 과정에서 이러한 변환은 API 내에서 수행하는 것이 좋다.

 

3. Train model

: 모델 학습

 

4. Evaluate

: 모델 성능 평가

 

 

 

모델 추론 API 구조

 

 

 

 

 

모델 추론 과정 모니터링의 중요성

  • 모델 구축하는 사람과 추론 운영 하는 사람이 다름 ► MLOps 팀이 생김
  • 데이터 패턴이 달라지면서 모델 성능이 떨어짐 (Data Drift)