열심히 코딩 하숭!

앙상블 학습, 하이퍼 파라미터 튜닝 | 4주차 | 파이썬 머신러닝 완벽가이드 본문

프로그래밍 언어/python

앙상블 학습, 하이퍼 파라미터 튜닝 | 4주차 | 파이썬 머신러닝 완벽가이드

채숭이 2023. 2. 20. 21:23

* 해당 글은 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일

######


 

느낀점

* 개념에 대해 깊게 알아보지 않고 공부하니까 헷갈린다... 하나하나 구글링해가면서 더 살펴볼 필요가 있을 것 같다.

* 다른 데이터 셋에 적용해보면 감이 더 올 것 같다.