< 11주차 02 데이터 EDA와 머신러닝 소개 >
데이터 EDA란?
EDA를 하는 이유
: 효과적인 데이터 분석과 모델링을 위한 기초 마련
-> 데이터 품질 확인 (Garbage in Garbage Out) (현업에서 꺠끗한 데이터란 존재하지 않음)
-> 데이터 특성 확인
- 중복 레코드 체크
- 최근 데이터 존재 여부 체크
- primary key uniqueness 체크
- null 값 확인
- 등
데이터 EDA 기법
- 기술 통계 분석
: 숫자 변수와 카테고리 변수 파악
: 숫자 변수의 경우 값 범위 파악
: 카테고리 변수의 경우 카테고리 수 파악
: 카테고리의 경우 머신 러닝 모델을 만들 때 인코딩 방법 결정
- 결측치 탐지 및 처리
null 값 보유한 필드 찾기 -> 어떻게 처리할지 결정 필요
isnull().sum()
- 이상치 탐지 및 처리
: 아주 크거나 아주 작은 등의 이상한 값
-> 평균, 최소, 최대값 등으로 대체
-> log 함수, binning 적용
-> 이상치에 강한 ML 모델 사용 (Decision Tree)
- Primary Key uniqueness 체크
: 상당수의 데이터셋에는 primary key가 있음
-> 이 값이 유일함을 검증해보는 것이 필요함
- 최신성 체크
: 데이터가 최근 데이터인지 확인
: 타임스탬프 필드를 기준으로 최신 데이터가 있는지 꼭 확인해보기(현업에서!!)
- 레이블(타겟) 체크
: 예측 대상이 되는 필드의 값 분포 확인
-> 레이블이 불균형하다면, 평가 지표를 F1-score 사용
- 부족한 값 추가
* SMOTE(Synthetic Minority Over-sampling Technique)
: 특정 레이블 값을 갖는 데이터의 특성을 파악하여 인위적으로 생성하는 방법
- 변수 간 상관 관계 분석
Correlation 확인 (corr())
: 레이블과 상관관계를 보여주는 변수들이 무엇인지 검사 필요!
- 피처 엔지니어링
: 앞의 모든 기법들이 피처 엔지니어링
+ 고급기법
- PCA를 통해 필드 수 줄이기
- 이름 필드에서 성별 추출하기
- Regression에서 레이블 필드와 약한 상관관게를 갖는 필드들 새롭게 계산하여 새로운 필드 만들기
- 등
https://www.kaggle.com/code/mjamilmoughal/eda-of-titanic-dataset-with-python-analysis
-> 위의 notebook을 copy해서 실습해보자!
머신러닝 소개
머신러닝이란? 배움이 가능한 기계의 개발이다.
결국 머신러닝은 데이터의 패턴을 보고 흉내내는 방식이다.
지도 학습 (Supervised Machine Learning)
: 정답이 존재하는 데이터셋
- 분류(Classification) -> 이진분류, 다중분류
- 회귀(Regression)
비지도 학습 (Unsupervised Machine Learning)
: 클러스터링 등으로 데이터를 몇 개의 그룹으로 분리. 정답이 없음
ex. GPT와 같은 언어 모델의 훈련도 여기에 속함
강화 학습 (Reinforcement Learning)
: 시행착오를 통해 최적의 결정을 학습하는 기계학습 방법
-> 에이전트(강화학습 모델)는 환경과 상호작용하며 최대 보상 전략을 학습!
ex. 알파고 or 자율주행
API란?
: Application Programming Interface의 약자
-> 프로그램을 작성하기 위하 사용하는 인터페이스
- 다양한 종류의 API가 존재
ex. 파이썬 모듈은 기능에 따라 다양한 함수 제공
=> ML 문맥에서 API는 결국 모델을 통해 예측하는 것을 의미!
머신러닝 관련 개념
과적합(Overfitting)이란?
: 모델이 트레이닝 셋에 대해 너무 최적화되어, 새로운 데이터에서 성능이 제대로 나오지 않는 경우
-> 데이터 편향 확인, hold-out보다는 CV활용, 정규화 적용
Hold Out이란?
: 데이터셋을 트레이닝 데이터셋/테스트 데이터셋으로 분리하여 사용
-> 보통 7:3 / 8:2
Cross Validation이란?
K-Fold의 다른 이름, hoid-out 방식보다 우월함. 시간이 오래 걸림
: 먼저 데이터를 K개로 나누고, K개의 폴드에 대해서 훈련을 반복
(해당 폴드를 제외한 나머지 데이터로 모델 빌드 -> 해당 폴드 데이터로 검증)
=> K번의 모델 빌딩과 성능 측정이 수행됨.
모든 폴드 처리 후 K개의 성능 결과 평균을 모델의 전체 성능으로 간주
표준화(Normalization)
: 트레이닝셋이 특정 방향으로 편향되지 않도록 보정해주는 것
(특정 필드의 값이 매우 커서 이것이 더 큰 영향을 끼치는 것을 방지)
ex. 정자세로만 있는 데이터셋으로 학습된 모델이 약간 뒤틀린 자세로 있는 사진도 인식할 수 있도록 하는 용도!
-> train data에 존재하는 feature들의 값을 특정 범위로 제약을 주어
모델의 성능이 트레이닝셋에 따라 달라지는 것 방지
=> 보통 모든 feature들의 값을 동일한 범위에 들어가도록 전처리하는 기법
비용 함수 (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)
정규화 (Regularization)
: 오버피팅을 막기 위한 방법 중 하나, 덜 중요한 피처의 가중치를 줄이거나 0으로 만들어 새로운 데이터를 대비함
-> 손실 함수에 추가 정보(페널티)를 더해 과적합을 방지하는 기술
- L1 정규화(Lasso Regression) : 일부 덜 중요한 피처의 가중치를 0으로 만듦
- L2 정규화(Ridge Regression) : 일부 덜 중요한 피처의 가중치를 아주 작게 만듦
모델 추론 과정 소개
-> 피처 엔지니어링 과정을 모두 API로 설정해두는 것이 좋음!
=> 사람에 따라 다르게하면, 각각의 사람이 입력 데이터를 피처 엔지니어링 해야하기 때문!!
즉, 모델 훈련 시 사용한 것과 동일한 데이터 처리 과정을 지정해주는 것이 중요
모델 추론 과정 모니터링이 중요해짐
-> 모델 빌딩을 하는 사람과 추론 운영을 하는 사람이 보통 다름. 이 곳에서 다양한 문제들 발생
-> 모델을 만들 때 사용했던 데이터 패턴과 시간이 지나면서 들어오는 데이터의 패턴이 달라질 수 있음
=> Data Drift
==> 모델의 중요 feature의 값 분포 모니터링와 모델 관련 중요 지표 모니터링이 필수적이다
이는 세이지메이커로 해결할 수 있다! (후에 나올 예정)
'STUDY > DevCourse' 카테고리의 다른 글
[데브코스][데이터 분석] Regression 모델 만들기 (1) | 2024.05.02 |
---|---|
[데브코스][데이터 분석] Classification 모델 만들기 (0) | 2024.04.30 |
[데브코스][데이터 분석] 선형 회귀와 선형 분류 (2) | 2024.04.26 |
[데브코스][데이터 분석] 지도학습 알아보기 (0) | 2024.04.23 |
[데브코스][데이터 분석] 머신러닝 기초와 수학적 배경 (0) | 2024.04.23 |