열심히 코딩 하숭!
앙상블 학습, 하이퍼 파라미터 튜닝 | 4주차 | 파이썬 머신러닝 완벽가이드 본문
* 해당 글은 inflearn의 강의 '[개정판] 파이썬 머신러닝 완벽가이드'를 정리한 글입니다.
회색 - 강의 제목
노란색, 주황색 - 강조
1일
사용자 행동 인식 데이터를 이용한 결정 트리 실습
- 4장 4.2 결정트리 참고
앙상블 학습의 개요와 보팅(Voting)의 이해
앙상블 학습
- 여러 개의 분류기를 생성하고 그 예측을 결합함으로써 보다 정확한 최종 예측을 도출
- 유형: 보팅(Voting), 배깅(Baggin), 부스팅(Boosting), 스태킹(Stacking) 등
- 단일 모델의 약점을 다수의 모델들을 결합하여 보완
보팅
- 여러 개의 분류기가 투표를 통해 최종 예측 결과를 결정
1) 하드 보팅
- classifier 간 다수결로 최종 class 결정
2) 소프트 보팅
- classifier들의 class 확률을 평균내서 결정
- predict_proba() 메소드를 이용하여 class 별 확률 결정
-> 일반적으로 하드 보팅보다는 소프트 보팅의 예측 성능이 상대적으로 우수함
-> 사이킷런은 VotingClassifier 클래스를 통해 보팅(Voting) 지원
배깅(Bagging)과 랜덤 포레스트(Random Forest)의 이해
배깅
- 같은 유형의 알고리즘을 가진 분류기가 데이터 샘플링을 서로 다르게 가져가면서 학습 수행
- 대표적인 배깅: 랜덤 포레스트(Random Forest)
랜덤 포레스트
- 배깅 방식으로 전체 학습 데이터에서 데이터 샘플링을 진행, 개별적으로 학습을 수행한 뒤 최종적으로 보팅을 통해 예측 결정
- 각각의 tree들이 병렬로 학습하기 때문에 빠른 수행이 가능
- 부트스트래핑(bootstrapping) 분할 방식: 개별 트리가 학습하는 데이터 세트는 전체 데이터에서 일부가 중첩되게 샘플링
- n_estimators: 서브세트의 개수
- 하이퍼 파라미터
+) 구글링 참고
랜덤 포레스트 실습
부스팅(Boosting)의 이해와 그래디언트 부스팅 소개 및 실습
부스팅
- 여러개의 약한 학습기(weak learner)를 순차적으로 학습-예측하면서 잘못 예측한 데이터나 학습 트리에 가중치 부여를 통해 오류를 개선해 나가면서 학습
- 대표적인 부스팅: 에이다 부스팅(AdaBoost(Adaptive boosting)), 그래디언트 부스팅, XGBoost, LightGBM
에이다 부스팅
- 틀린 예측 값에 대해 가중치를 부여하여 반영함
GBM (Gradient Boost Machine)
- 에이다부스트와 유사하나, 가중치 업데이트를 경사 하강법을 이용함
- loss: 실제값 - 예측값
- loss값이 감소되는 방향으로 가중치 값을 업데이트시킴
2일
XGBoost 소개
XGBoost
- eXtra Gradient Boost
- 주요 장점
- Tree Pruning: 불필요한 부분 가지치기
- 파이썬 래퍼와 사이킷런 래퍼 API 비교
- 파이썬 래퍼와 사이킷런 래퍼 하이퍼 파라미터 비교
- XGBoost 조기 중단 기능 (Early Stopping)
XGBoost를 이용한 위스콘신 유방암 예측(파이썬 Native XGBoost 사용)
XGBoost를 이용한 위스콘신 유방암 예측(사이킷런 Wrapper XGBoost 사용)
3일
LightGBM 소개
LightGBM 장점 (XGBoost 대비)
- 더 빠른 학습과 예측 수행 시간
- 더 작은 메모리 사용량 제공
- 카테고리형 피처의 자동 변환과 최적 분할(원-핫 인코딩 등을 사용하지 않고도 카테고리형 피처를 최적으로 변환하고 이에 따른 노드 분할을 수행)
LightGBM 트리 분할 방식 - 리프 중심
- 균형 트리와 다르게, 리프 중심 트리는 좀 더 예측 오류들을 줄여줄 수 있는 방향으로 이동하기 위해 트리의 높이는 무시함
- 파이썬 구현
LightGBM 하이퍼 파라미터
- 참고: LightGBM과 XGBoost 간의 하이퍼 파라미터 비교
LightGBM을 이용한 위스콘신 유방암 예측
그리드 서치(Grid Search) 기반의 하이퍼 파라미터 튜닝 문제점
하이퍼 파라미터 튜닝 수행 방법 4가지
- Grid Search
- Random Search
- Bayesian Optimization
- 수동 튜닝
하이퍼 파라미터 튜닝의 주요 이슈
- Gradient Boosting 기반 알고리즘은 튜닝해야하는 하이퍼 파라미터의 개수가 많고, 범위가 넓어서 경우의 수가 너무 많다
- 이럴 때 하이퍼 파라미터 튜닝을 하려면 너무 오래 걸림
-> Bayesian 최적화 필요!
베이지안 최적화 개요
베이지안 최적화(Bayesian Optimization)
- 미지의 함수가 반환하는 값의 최소 또는 최대값을 만드는 최적해를 짧은 반복을 통해 찾아내는 최적화 방식
- 새로운 데이터를 입력 받았을 때, 최적 함수를 예측하는 사후 모델을 개선해 나가면서 최적 함수를 도출
베이지안 최적화를 위한 HyperOpt 패키지 소개
HyperOpt
- 최적화 예시
HyperOpt 기본 실습
HyperOpt를 이용한 XGBoost 하이퍼 파라미터 튜닝
4일
분류 실습: 캐글경연대회의 산탄데르 은행 고객 만족 예측
5일
######
느낀점
* 개념에 대해 깊게 알아보지 않고 공부하니까 헷갈린다... 하나하나 구글링해가면서 더 살펴볼 필요가 있을 것 같다.
* 다른 데이터 셋에 적용해보면 감이 더 올 것 같다.