Try in Colab

early_stopping_rounds는 몇 번으로 해야 할까요? 트리의 max_depth는 얼마로 설정해야 할까요?
가장 뛰어난 성능의 모델을 찾기 위해 고차원 하이퍼파라미터 공간을 탐색하는 것은 매우 빠르게 복잡해질 수 있습니다.
하이퍼파라미터 Sweeps는 모델 간의 배틀 로얄을 조직적이고 효율적으로 수행하고 승자를 결정하는 방법을 제공합니다.
가장 최적의 값을 찾기 위해 하이퍼파라미터 값의 조합을 자동으로 검색하여 이를 가능하게 합니다.
이 튜토리얼에서는 Weights & Biases를 사용하여 3가지 간단한 단계를 거쳐 XGBoost 모델에서 정교한 하이퍼파라미터 Sweeps를 실행하는 방법을 알아봅니다.
미리 보기를 보려면 아래 그림을 확인하세요.

Sweeps: 개요
Weights & Biases로 하이퍼파라미터 스윕을 실행하는 것은 매우 쉽습니다. 3가지 간단한 단계만 거치면 됩니다.- 스윕 정의: 스윕을 지정하는 사전과 유사한 오브젝트를 생성하여 수행합니다. 검색할 파라미터, 사용할 검색 전략, 최적화할 메트릭을 지정합니다.
-
스윕 초기화: 한 줄의 코드로 스윕을 초기화하고 스윕 구성 사전을 전달합니다.
sweep_id = wandb.sweep(sweep_config) -
스윕 에이전트 실행: 또한 한 줄의 코드로 수행됩니다.
wandb.agent()를 호출하고 모델 아키텍처를 정의하고 트레이닝하는 함수와 함께sweep_id를 전달합니다.wandb.agent(sweep_id, function=train)
참고 자료
1. 스윕 정의
Weights & Biases Sweeps는 단 몇 줄의 코드로 원하는 방식으로 스윕을 정확하게 구성할 수 있는 강력한 레버를 제공합니다. 스윕 구성은 사전 또는 YAML 파일로 정의할 수 있습니다. 몇 가지를 함께 살펴보겠습니다.- 메트릭: 이는 스윕이 최적화하려고 시도하는 메트릭입니다. 메트릭은
name(이 메트릭은 트레이닝 스크립트에 의해 기록되어야 함)과goal(maximize또는minimize)을 사용할 수 있습니다. - 검색 전략:
"method"키를 사용하여 지정합니다. Sweeps를 통해 여러 가지 검색 전략을 지원합니다. - 그리드 검색: 하이퍼파라미터 값의 모든 조합을 반복합니다.
- 랜덤 검색: 하이퍼파라미터 값의 임의로 선택된 조합을 반복합니다.
- 베이지안 탐색: 하이퍼파라미터를 메트릭 점수의 확률에 매핑하는 확률 모델을 생성하고 메트릭을 개선할 가능성이 높은 파라미터를 선택합니다. 베이지안 최적화의 목적은 하이퍼파라미터 값을 선택하는 데 더 많은 시간을 투자하는 것이지만, 그렇게 함으로써 더 적은 수의 하이퍼파라미터 값을 시도하는 것입니다.
- 파라미터: 각 반복에서 값을 가져올 하이퍼파라미터 이름과 불연속 값, 범위 또는 분포를 포함하는 사전입니다.
2. 스윕 초기화
wandb.sweep을 호출하면 스윕 컨트롤러가 시작됩니다. 스윕 컨트롤러는 parameters의 설정을 쿼리하는 모든 사용자에게 제공하고 wandb 로깅을 통해 metrics에 대한 성능을 반환하도록 기대하는 중앙 집중식 프로세스입니다.
트레이닝 프로세스 정의
스윕을 실행하기 전에 모델을 생성하고 트레이닝하는 함수, 즉 하이퍼파라미터 값을 입력받아 메트릭을 출력하는 함수를 정의해야 합니다. 또한wandb를 스크립트에 통합해야 합니다.
세 가지 주요 구성 요소가 있습니다.
wandb.init(): 새 W&B run을 초기화합니다. 각 run은 트레이닝 스크립트의 단일 실행입니다.wandb.config: 모든 하이퍼파라미터를 구성 오브젝트에 저장합니다. 이를 통해 저희 앱을 사용하여 하이퍼파라미터 값별로 run을 정렬하고 비교할 수 있습니다.wandb.log(): 이미지, 비디오, 오디오 파일, HTML, 플롯 또는 포인트 클라우드와 같은 메트릭 및 사용자 정의 오브젝트를 기록합니다.
3. 에이전트로 스윕 실행
이제wandb.agent를 호출하여 스윕을 시작합니다.
다음을 포함하는 W&B에 로그인한 모든 시스템에서 wandb.agent를 호출할 수 있습니다.
sweep_id,- 데이터셋 및
train함수
참고:random스윕은 기본적으로 영원히 실행되어 새로운 파라미터 조합을 계속 시도합니다. 소가 집으로 돌아올 때까지 또는 앱 UI에서 스윕을 끌 때까지 계속됩니다.agent가 완료하려는 총 runcount를 제공하여 이를 방지할 수 있습니다.
결과 시각화
이제 스윕이 완료되었으므로 결과를 살펴볼 차례입니다. Weights & Biases는 여러 유용한 플롯을 자동으로 생성합니다.병렬 좌표 플롯
이 플롯은 하이퍼파라미터 값을 모델 메트릭에 매핑합니다. 최고의 모델 성능을 이끌어낸 하이퍼파라미터 조합을 파악하는 데 유용합니다. 이 플롯은 학습기로 트리를 사용하는 것이 학습기로 간단한 선형 모델을 사용하는 것보다 약간 더 나은 성능을 보이지만, 획기적인 수준은 아닌 것으로 보입니다.
하이퍼파라미터 중요도 플롯
하이퍼파라미터 중요도 플롯은 어떤 하이퍼파라미터 값이 메트릭에 가장 큰 영향을 미쳤는지 보여줍니다. 선형 예측기로 취급하는 상관 관계와 결과에 대한 랜덤 포레스트를 트레이닝한 후의 특징 중요도를 모두 보고하므로 어떤 파라미터가 가장 큰 영향을 미쳤는지, 그리고 그 영향이 긍정적인지 부정적인지 확인할 수 있습니다. 이 차트를 보면 위에서 병렬 좌표 차트에서 발견한 추세를 정량적으로 확인할 수 있습니다. 검증 정확도에 가장 큰 영향을 미친 것은 학습기 선택이었고,gblinear 학습기는 일반적으로 gbtree 학습기보다 성능이 좋지 않았습니다.
