IT 지식 창고

(model) Lightgbm Parameter 튜닝 방법- 경험적 요소 지속적 추가

casim 2020. 6. 22. 00:07

 

2020/06/22

 

https://lightgbm.readthedocs.io/en/latest/Parameters-Tuning.html

 

Parameters Tuning — LightGBM 2.3.2 documentation

This page contains parameters tuning guides for different scenarios. Tune Parameters for the Leaf-wise (Best-first) Tree LightGBM uses the leaf-wise tree growth algorithm, while many other popular tools use depth-wise tree growth. Compared with depth-wise

lightgbm.readthedocs.io

lightgmb의 document에 Parameter Tuning에 대한 글이 자세히 나와있어 이를 참고하여, 학습 한 후 경험적인 요소들을 작성해나갈 생각입니다.

 

우선 Lightgbm은 leaf-wise(best-first) Tree로 가로로 확장하며, 가장 유망한 노드를 우선 탐색하는 알고리즘입니다. depth-wise 알고리즘보다 빠르지만, 적절한 파라미터를 사용하지 않으면 오버피팅이 될 수 있다.

 

leaf-wise tree의 경우 3가지 중요한 파라미터가 있다.

1. num_leaves

  • 이것은 트리모델의 복밥성을 컨트롤하는 주요 파라미터이다.
  • 보통 num_leaves = 2^(max_depth)는 depth-wise tree와 같은 수의 leaves를 가지게 하여, 이보다 작게 설정해야 오버피팅을 줄일 수 있다.
  • 예를 들어, max_depth가 7일 경우 좋은 성능을 보였다면, num_leaves는 127보다 적은 70~80사이에서 더 좋은 성능을 얻을 수 있다.
  • default = 31

2. min_data_in_leaf

  • 오버피팅을 예방하는 데 중요한 파라미터이다.
  • 값을 크게 하면 너무 깊은 tree를 피할 수 있지만, 언더피팅이 생길 수 도 있다.
  • 아주 큰 데이터 셋(최소 10000건 이상)에서는 100~1000의 값이면 충분하다.
  • default = 20

3. max_depth

  • tree의 depth 한계를 지정하는 것
  • default = -1 (가능한 최대, -1일 때 학습하는 모델의 max_depth을 알아내는 것을 찾아볼 것) 

위 내용을 요약하면, 주요 3개의 파라미터를 튜닝할 때 순서는

1. 적절한 max_depth 값을 찾아낼 것

  • max_depth를 찾을 때, 우선 큰 값으로 학습하면 default일 때와 metric이 같은 경우가 있습니다. 그 값을 찾은 이후에 gridsearch 함수나 수동으로... 찾아서 적절한 max_depth를 찾으면 될 것 같습니다.
  • feature 약 280개, 데이터 약 10000건인 경우에 max_depth는 약 20~30 사이인 것 같습니다. 그 수치보다 작게 설정한 후 적절한 num_leaves를 튜닝하면 될 것 같습니다.

2. max_depth 값에 알맞게 num_leaves를 튜닝할 것

3. min_data_in_leaf를 튜닝할 것

 

 

lgbm document와 경험적 요소, 다른 사람들의 내용을 참고하여 지속적으로 추가할 것입니다.