최대 가능도 추정량
정규분포 형태로 데이터를 바꿔줘야 학습이 잘 된다.
- sigmoid, 이진분류
- softmax, 다중분류
이진분류/다중분류
- confusion_matrix:무조건 히트맵 그려봐야 어느 데이터를 잘 맞추는 지 볼 수 있다.
- 평가: f1-score
앙상블
https://colab.research.google.com/drive/14Hsv3uMtIdonLMIB9nUytOPzrzb4Cci0#scrollTo=QtI46tTOsrMn
Google Colab Notebook
Run, share, and edit Python notebooks
colab.research.google.com
- 모델 연결 (bagging, boosting,voting, stacking)
- 앙상블 나온 이후로 모든 경진대회에서 1등 먹었다.
Bagging
- bagging(데이터 복원 추출해서 여러번 학습)+random forest ( 성능 좋으나 overfitting문제) => 성능 향상
Boosting
- random forest 기반
- boosting: 전체 데이터를 학습하여 학습양이 bagging보다 많아서 압도적으로 성능이 좋다. 또한 bagging은 데이터 불균형시 한쪽에서만 복원추출할 수 있어서 불리하다.
- Boosting은 약한 모델이 잘못 분류한 데이터에 더 많은 가중치 부여, 훈련하고, 여러개 약한 학습기가 순차적 결합하여 강한 학습기를 만든다.
- Gradient Boost : 순차적으로 학습, 오래 걸린다.
- XGBoost : eXtreme Gradient Bossting, 병렬학습이라 빠르다. GPU도 지원함. 모든 경우의 수를 연산. 메모리 많이 잡아 먹음.
- feature importance, heatmap(confusion table)을 꼭 찍어보고 새로운 feature을 뽑는 가설을 세워야 한다.
- Light GBM: Light Gradient Machine, XGBoost의 단점 개선. 불균형 트리. 최대 손실 값을 갖는 리프 기준 분할하여 깊고 비대칭적 트리 생성. 빠르고 가볍다. 내부적으로 알아서 문자열 인코딩 해준다. 원핫인코딩은 안해줌.
- 공홈 보면서 하이퍼파라미터 숙지하고 튜닝해보기!
- random_state:42로 고정해서 오버피팅할 때까지 전처리하고, 그 이후 튜닝하자.
import os
import numpy as np
import random
import torch
def reset_seeds(seed=42):
random.seed(seed)
os.environ['PYTHONHASHSEED'] = str(seed) # 파이썬 환경변수 시드 고정
np.random.seed(seed)
torch.manual_seed(seed) # cpu 연산 무작위 고정
torch.cuda.manual_seed(seed) # gpu 연산 무작위 고정
torch.backends.cudnn.deterministic = True
# cuda 라이브러리에서 Deterministic(결정론적)으로 예측하기 (예측에 대한 불확실성 제거 )
# 매 셀마다 실행해야 한다.
- Catboost Categorical Boosting, 범주형 변수 많을 때 쓰기
프로젝트에 적용하는 기술을 업데이트하기 위해서는, 프로젝트 마무리한 후에 다시 업그레이드하는 것을 추천한다.
깊이를 더해가자.
competition 시 주의점.
random_state 고정하기, 테스트셋을 학습시 사용하지 말기, 사용한 주피터 노트북이 그대로 실행 안되면 탈락.
테스트셋은 전처리만 가능.
- voting 기법: hard voting: 예측값 다수결 결정, soft voting: 예측 결과값 확률 평균하여 최종 클래스 결정
- stacking 기법: 좋지만 hyperparameter가 많아서 빡세고 오래 걸린다. n_jobs= -1(가용 cpu 전부 다 쓴다)
- train_test_split, stratify, 분류모델일 때 타겟을 기준으로 비율을 유지해달라.
HPO (HyperParameter Optimization)
https://colab.research.google.com/drive/13vrFjnnE2i-mjN8BpIo_ikrKN-J4lCfP#scrollTo=HH03jbDocqJt
Google Colab Notebook
Run, share, and edit Python notebooks
colab.research.google.com
- Grid Search : 일일이 하이퍼파라미터 찾지 않고 자동화
- Random Search: 그리드 서치 보다 더 빠르고 좋다.
- Bayesian Search 더 낫다. 최적의 파라미터를 찾아줌!
'개발공부 > SK Networks Family AI bootcamp 강의노트' 카테고리의 다른 글
21일차 [ 불균형 데이터셋 전처리 / cross validation / ML flow] (0) | 2025.02.13 |
---|---|
20일차 [ 비지도 학습 (데이터 차원 축소 및 행렬 분해) ] (0) | 2025.02.12 |
18일차 [ 지도 학습 ] (0) | 2025.02.10 |
[플레이데이터 SK네트웍스 Family AI캠프 10기] 2월 1주차 회고 (0) | 2025.02.10 |
17일차 [data encoding, scaling] (0) | 2025.02.07 |