Python/[코칭스터디 10기] Beyond AI Basic

[쇼핑데이터를 활용한 머신러닝] 12. 하이퍼 파라미터 튜닝

김초송 2023. 5. 16. 18:01

6. 하이퍼 파라미터 튜닝과 앙상블

1) 하이퍼 파라미터 튜닝

- 하이퍼 파라미터

  • A hyperparameter is a parameter whose value is used to control the learning process. By contrast, the values of other parameters (typically node weights) are learned
  • 학습 과정에서 조절하는 파라미터 값
  • 모델이 학습하기 전에 사람이 설정해줘야 하는 파라미터

- 파라미터

  • 학습 과정에서 배워나가는 값

- 하이퍼 파라미터 튜닝

  • Choosing a set of optimal hyperparameters for a learning algorithm
  • 하이퍼 파라미터를 최적화하는 과정

- 하이퍼 파라미터 튜닝 방법

  1. Manual Search
    : 자동화 툴을 사용하지 않고 매뉴얼하게 실험할 하이퍼 파라미터 셋을 정하고 하나씩 바꿔가면서 테스트
  2. Grid Search
    : 테스트 가능한 모든 파라미터 셋을 하나씩 다 테스트 해보면서 어떤 하이퍼 파라미터의 성능이 좋은지 기록하는 방식
    하이퍼 파라미터 개수가 많다면 비효율적
    Grid Search
  3. Random Search
    : 탐색 가능한 하이퍼 파라미터에서 랜덤하게 값을 가져와서 테스트
    일반적으로 grid search 보다 더 성능이 좋은 하이퍼 파라미터를 찾아냄
    Random Search
  4. Bayesian Optimizer
    : 처음에는 랜덤하게 -> 히스토리에서 성능이 잘 나온 하이퍼 파라미터 영역에 집중적으로 탐색 (+ 가끔 랜덤)
    오래할 수록 성능이 잘 나옴
    대부분 하이퍼 파라미터 튜닝 툴들이 사용하는 방식
    Bayesian Optimizer

- Boosting Tree 하이퍼 파라미터

  • Learning Rate: 모델의 학습률
  • Tree depth: 트리 모델의 최대 깊이
  • Number of leaves: 한 트리의 최대 리프 수
  • Early stop: 검증 성능이 향상하지 않으면 조기 종료
  • Row sampling ratio: 데이터 일부를 무작위로 선택하는 비율
  • Column sampling ratio: 피처의 하위 집합을 무작위로 선택하는 비율
  • L1 / L2 norm penalty: L1/L2 정규화

- Optuna

  • 오픈소스 하이퍼 파라미터 튜닝 프레임워크
  • 주요 기능
    1. Eager search spaces
      • Automated search for optimal hyperparameters using Python conditionals, loops, and syntax
      • 최적화된 하이퍼 파라미터를 자동화된 방식으로 찾는 기능들 제공
    2. State-of-the-art algorithms
      • Efficiently search large spaces and prune unpromising trials for faster results
      • 하이퍼 파라미터 튜닝 최신 모델 알고리즘 제공
    3. Easy parallelization
      • Parallelize hyperparameter searches over multiple threads or processes without modifying code
      • 병렬화 가능 -> 대규모 하이퍼 파라미터 탐색을 분산 머신을 통해 시행
  • 기본 개념
    1. 최적화 함수 (목적 함수) 정의
    2. 탐색할 x 값의 범위 지정
    3. study 객체를 생성하고 optimizer 와 trial 지정
    • direction = 'maximize' : accuracy 는 높을 수록 좋기 때문에

LightGBM 적용

  • 하이퍼 파라미터 탐색 결과 저장
    • Storage API를 사용해서 하이퍼 파라미터 검색 결과 저장 가능
    • RDB, Redis와 같은 Persistent 저장소에 하이퍼 파라미터 탐색 결과를 저장함으로써 한 번 탐색하고, 다음에 다시 이어서 탐색 가능

  • 하이퍼 파라미터 Visualization

중요도 visualization

  • x 가 가장 중요한 하이퍼 파라미터
    -> x 가 모델 성능에 크게 관계있음

히스토리 visualization

  • 낮을 수록 모델의 성능이 좋은 것

Slice Visualization

  • 각 하이퍼 파라미터별로 최적화하려는 목적 함수 값이 어떻게 변하는지 볼 수 있음
    개별 하이퍼 파라미터와 objective value 의 관계
  • 최소화 하는 것이 목적

Contour Visualization

  • 여러 개 하이퍼 파라미터와 objective value 를 한꺼번에 볼 수 있음
  • x, y 모두 최소화 하는 것이 목적 (밝을 수록 좋음)

Parallel Coordinate Visualization

  • 각각 objective value가 하이퍼 파라미터를 값에 따라 어떻게 달라지는지