티스토리 뷰
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를 사용한다.
'Etc.' 카테고리의 다른 글
맥북 M1에서 LightGBM, XGBoost 설치하는 방법 (1) | 2021.11.02 |
---|---|
맥에서 터미널 커맨드로 cpu 코어 개수 확인하는 방법 (0) | 2021.10.25 |
[네트워크] 1. 개요 (0) | 2021.10.18 |
#Review 나는 LINE 개발자입니다 (0) | 2021.10.17 |
컴파일러와 인터프리터의 차이 (0) | 2021.10.10 |
댓글