본문 바로가기
Programming/Python

기본 개념 정리 4 (hyper-parameter, Ensemble)

출처: AI 엔지니어 기초 다지기 : 네이버 부스트캠프 AI Tech 준비과정

돌다리도 다시 두들겨보고 건너는 개념 복습 게시물

 

 

 

 

Hyper-Parameter

 

1.Learning rate

왼쪽: 너무 적음= 수렴속도 느려짐 // 중간: 적절 // 오른쪽: 너무많음 = 발산 可

 

 

2. Depth, number of leaves  (모델의 깊이와 잎사귀 개수 제한)

 

 

 

3. Column Sampling Ratio: 컬럼 선택 랜덤

하늘색이 선택된, 회색은 선택되지 않은 피쳐. 이를 통해 overfitting 방지

이렇게 계속 랜덤하게 다른 피쳐들로 생성된 트리들을 만든다.

 

 

 

 

4. Row sampling ratio: 컬럼이 아니라 row를 랜덤하게 선택하여 만든다.

 

 

 

 

이러한 파라미터 변수명은 각 모델들마다 약간씩 차이가 있다.

 

Category 변수 사용 가능 여부도 XGboost는 numeric만 가능하므로 전처리가 따로 필요한 반면

LightGBM과 CatBoost는 pandas의 category 타입을 사용할 수 있다.

 

 

Light GBM에서 train log 확인하기
LightGBM에서 트리구조 확인하기

 

하이퍼파라미터 튜닝: 모델 설정값 최적화

 

방법1) Manual Search: 자동화 툴 없이 하나 씩 실험 테스트하는 것

 

방법2) Grid Search: 가능한 모든 것 테스트해서 찾기(완전 탐색 느낌)

문제점: 데이터 크기, 테스트 범위에 따라 시간이 많이 걸릴 수 있음

 

방법3) Random Search: 파라미터 랜덤하게 설정하고 테스트하기

그리드 서치보다 좀 더 효율적으로 하는 것

 

방법4) Bayesian Optimization: 처음에 랜덤서치(방법3)을 수행하다가 성능이 좋은 구간을 집중적으로 탐색하는 방법

오래하면 오래할 수록 잘 나옴. 그러다가 중간중간 랜덤서치를 수행하여 혹여나 놓친 최적 구간을 검토까지 함

요즘 트랜드, 가장 효율적으로 여겨지는 방법

 

 

 

Optuna

하이퍼 파라미터 튜닝 오픈소스 프레임워크: 방법4 제공을 비롯 여러 방법을 제공함

쉬운 Paralleization(병렬화) -> 분산처리에도 용이

 

<간단한 예제>

1. 목적함수(objective) 최적화 정의. 여기서는 최솟값 찾기

2. trial을 이용해 하이퍼파라미터 제안 (x값이 -10에서 10범위 내로)

3. study는 optimize 방법을 100번 시도하는 것을 보여주는 객체

 

 

 

LightGBM에 적용한 예제

 

 

Optuna는 Storage API를 통해 하이퍼 파라미터 검색 결과 저장 可

RDB, Redis와 같은 persistent 저장소에 탐색결과를 저장해서 한 번 탐색 후, 다음에 이어서 다시 可

 

데이터베이스에 연결해서 저장 가능!

 

Optuna는 시각화 기능도 제공한다.

어느 하이퍼 파라미터가 모델 성능향상에 더 중요한지 보여주는 그래프

 

파라미터 trial 히스토리 시각화. 낮은 것이 좋은

 

 

Slice Visualization: 각 하이퍼 파라미터 개별값과&nbsp; 최적화 대상 목적함수 값 사이의 변화 양상 출력

 

Contour Visualization: 여러 개 파라미터와 목적함수 값의 변화 양상을 보는 것 (밝은 색이 좋음)

 

Parallel Coordinate Visualization : 파라미터 값에 따른 변화 양상

 

 

 

 


Ensemble(앙상블): 단일 알고리즘 대신 여러 알고리즘을 합쳐서 성능 좋은 모델을 만들기

Ensemble learning: 여러 개 결정 트리를 결합해 하나의 결정 트리보다 더 좋은 성능을 내는 ML 기법.

핵심: Weak classifier(약 분류기) 결합하여 Strong classifier(강 분류기) 만드는 과정

 

Ensemble Learning

 

 

[기법 1: Bagging = Boostrap Aggregation] : 훈련 set에 중복 허용하여 샘플링  cf) 중복 금지 샘플링은 Pasting(페이스팅)

보통 overfitting 방지에 효과적. ex) Random Forest

 

 

 

 

[기법 2: Voting(보팅)] : 서로 다른 알고리즘이 도출해 낸 결과물에 대한 최종투표 결과를 출력

기법 1과 같은 투표방식이지만 보팅은 다른 알고리즘 model 조합 사용 <-> 배깅은 같은 알고리즘 내 다른 sample 사용

Hard vote: 결과물에 대한 최종 값을 투표해서 결정  (다수결 원칙같은 것)

Soft vote: 최종 결과물이 나올 확률 값을 모두 더해서 각 결과물에 대한 확률을 구한 뒤 최종 값을 도출

왼쪽: hard voting&nbsp; // 오른쪽: soft voting

 

 

 


[기법 3: Boosting] : 순차적으로 이전 오차 보완(학습)하며 가중치 부여 ex) LightGBM, XGBoost, CatBoost

보통 배깅방식보다 성능 좋음

단점: 순차적(Sequential) 학습 특성으로 배깅보다 속도 느리고 overfitting 可이므로 주의 요 

보통 boosting 방식이 예측 성능이 뛰어나 Ensemble에서 많이 사용된다.

 

 

Bagging과 Boosting의 방식 차

 

 

 

 

[기법 4: Stacking] : 여러 모델들을 활용해 각 예측 결과 도출 후, 그 결과를 종합해 최종 예측 결과를 만드는 것

 

base learner: 중간의 여러개 모델들

meta model: 최종 결합

장점: 성능향상. 경진대회에서 보통 마지막으로 성능 쥐어짜내는 트릭으로 사용됨

단점: overfitting 위험, 경진대회에서 짜내는 용도로 쓰기엔 너무 많은 모델 요구해서 구현 어려움

Stacking으로 만든 것은 비현실적이라는 지적 -> 요즘 경진대회는 모델시간 제한 有로 stacking 남발 제한

-> 요즘 잘 안씀

 

 

728x90
반응형