티스토리 뷰

Etc.

LightGBM 파라미터 튜닝

ccc124213131 2021. 10. 25. 18:55
728x90

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

 

Leaf wise tree의 3가지 중요한 파라미터

1. num_leaves

  • 오버피팅을 방지하는데 중요한 파라미터이다. 즉 오버피팅되었다 싶으면 값을 줄이면 된다.
  • 트리의 최대 깊이를 의미한다.
  • 일반적으로 num_leaves를 2^max_depth보다 작게 설정해야한다. 같으면 depth-wise tree와 같은 수의 leaves를 가지게 하여, 오버피팅이 발생할 수 있다.

2. min_data_in_leaf

  • 오버피팅을 방지하는데 중요한 파라미터이다.
  • leaf가 가지고 있는 최소한의 데이터 수
  • 값을 크게 하면 언더피팅이 생길 수 있다.
  • 큰 데이터 셋(10000건 이상)에서는 100~1000의 값이면 충분하다.

3. max_depth

  • tree의 depth 최대치를 지정하는 것이다.
  • default값은 -1로, 가능한 최대로 설정된다.

4. learning_rate

  • 최종 결과인 각 트리에 영향을 미치는 변수로, 일반적으로 0.1, 0.001 등으로 설정한다.

주요 3개의 파라미터를 튜닝할 때 순서는

1. 먼저 적절한 max_depth 값을 찾아낸다.

      - max_depth를 찾을 때, 큰 값으로 설정하여 학습하면 default일 때와 성능이 같은 경우가 있다.

2. max_depth 값에 알맞게 num_leaves를 찾아낸다.

3. min_data_in_leaf를 찾아낸다.

 

더 높은 성능을 위해서는

1. 더 큰 max_bin을 설정한다. (느려질 수 있다.)

2. 더 작은 learning_rate와 더 큰 num_iterations를 사용한다.

3. 더 큰 num_leaves를 사용한다. (오버피팅이 일어날 수 있다.)

4. 더 많은 트레이닝 데이터를 사용한다.

5. boosting type으로 dart를 사용한다.

댓글