[LightGBM()활용]GridSearch 활용한 하이퍼파라미터 값 알아보기★불순도,순수도★클래스
1. LightGBM() 활용 최적의 하이퍼파라미터 찾고 학습하기
%%time
from sklearn.model_selection import GridSearchCV
from sklearn.tree import DecisionTreeClassifier
import lightgbm as lgb
# LightGBM 모델 생성
lgb_model = lgb.LGBMClassifier()
# 그리드 서치를 위한 하이퍼파라미터 그리드 준비
param_grid_lgb = {
'max_depth': [3, 4], # 트리의 최대 깊이
'learning_rate': [0.01, 0.05], # 학습률
'n_estimators': [200, 300, 400], # 트리의 개수
'min_child_samples': [1, 2, 3, 4], # 리프 노드에 필요한 최소 샘플 수
'subsample': [0.05, 0.01], # 트리를 학습할 때 사용할 샘플링 비율
'colsample_bytree': [0.8,0.9, 1], # 트리를 학습할 때 사용할 특성의 비율
'reg_alpha': [0.1,0.2], # L1 정규화 항의 가중치
'reg_lambda': [0.0, 0.1], # L2 정규화 항의 가중치
'ManchesterUNITED': [2, 3] # 유효하지 않은 매개변수 (무시됨)
}
# 그리드 서치 객체 생성
grid_search_lgb = GridSearchCV(lgb_model, param_grid_lgb, cv=10, n_jobs=-1)
# 그리드 서치 수행
grid_search_lgb.fit(X_train, y_train)
# 최적의 모델 및 파라미터 출력
best_model_grid_search_lgb = grid_search_lgb.best_estimator_
best_params_grid_search_lgb = grid_search_lgb.best_params_
print("Best Model (LightGBM):", best_model_grid_search_lgb)
print("Best Parameters (LightGBM):", best_params_grid_search_lgb)
1. LightGBM
LightGBM은 Decision Tree 기반의 그래디언트 부스팅(Gradient Boosting) 알고리즘입니다. 그러나 LightGBM은 Decision Tree 알고리즘을 개선하고 효율적으로 구현한 라이브러리로 볼 수 있습니다.
Decision Tree는 트리 기반의 분류와 회귀 알고리즘이며, 데이터를 분할하여 예측을 수행하는 방식입니다. LightGBM은 이러한 Decision Tree 알고리즘을 확장하고 최적화하여 더 빠르고 효율적인 학습을 제공합니다.
LightGBM은 다양한 기능과 최적화된 구현을 포함하고 있습니다. 예를 들어, LightGBM은 기본적으로 리프 중심 트리 분할 방법을 사용하여 효율적인 분할을 수행하고, 리프 중심 학습을 통해 메모리 사용량을 최소화합니다. 또한, LightGBM은 Light Gradient Boosting Machine의 약어로, 그래디언트 부스팅의 경사 하강법을 사용하여 모델을 학습합니다.
따라서 LightGBM은 Decision Tree의 기본 아이디어를 기반으로 하면서도 Decision Tree 알고리즘을 개선하고 최적화한 형태로 볼 수 있습니다.
https://knowallworld.tistory.com/447
==> DecisionTree()
2. max_depth
max_depth는 LightGBM 모델의 하이퍼파라미터 중 하나입니다. 이 매개변수는 각 트리의 최대 깊이를 제한하는 역할을 합니다.
max_depth의 값은 트리의 깊이를 제한하는데 사용됩니다. 각 트리는 이 값보다 깊게 확장되지 않습니다. 모델의 깊이가 증가할수록 모델의 복잡성은 증가하지만, 과적합의 위험도 증가할 수 있습니다. 따라서 max_depth는 모델의 복잡성과 일반화 사이의 트레이드오프를 제어하는 데 사용됩니다.
일반적으로 max_depth 값이 높을수록 모델의 복잡성이 증가하며, 깊은 트리를 허용하게 됩니다. 반대로 max_depth 값이 낮을수록 모델의 복잡성은 낮아지며, 트리의 깊이가 얕아집니다.
적절한 max_depth 값을 선택하기 위해서는 데이터의 특성과 크기, 모델의 복잡성에 대한 이해 등을 고려해야 합니다. 너무 깊은 트리는 과적합의 원인이 될 수 있으므로, 적절한 값으로 제한하는 것이 중요합니다. 보통 3부터 10 정도의 값이 일반적으로 사용되며, 데이터의 특성에 따라 적절한 값은 달라질 수 있습니다.
하이퍼파라미터 튜닝을 위해 max_depth 값을 그리드 서치(Grid Search)를 활용하여 탐색하면서 최적의 값을 찾을 수 있습니다. 이를 통해 모델의 성능과 일반화 능력을 균형있게 조절할 수 있습니다.
3. learning_rate
learning_rate는 머신 러닝 모델에서 사용되는 하이퍼파라미터 중 하나입니다. 이 매개변수는 각 학습 단계에서 모델이 새로운 트리를 구축할 때 얼마나 크게 업데이트할지를 결정하는 역할을 합니다.
learning_rate 값은 보통 0과 1 사이의 실수로 설정됩니다. 이 값이 작을수록 각 트리의 기여도가 작아지며, 모델의 학습 속도가 느려집니다. 반대로 값이 클수록 각 트리의 기여도가 커지고, 모델의 학습 속도가 빨라집니다.
learning_rate를 작게 설정하면 모델은 더 많은 학습 단계를 거치며, 각 단계에서 예측 오차를 보정하기 위해 새로운 트리를 더 작은 크기로 구성합니다. 이는 모델이 더 많은 트리를 사용하여 복잡한 패턴을 학습하게 되므로, 더 정확한 예측을 할 수 있을 수 있습니다. 하지만 학습 속도가 느려질 수 있습니다.
반대로 learning_rate를 크게 설정하면 모델은 빠른 학습 속도로 오차를 보정하고, 더 큰 트리를 구성하여 더 복잡한 모델을 형성합니다. 이는 학습 속도가 빠르게 진행되지만, 모델이 훈련 데이터에 과적합될 수 있는 가능성이 높아질 수 있습니다.
적절한 learning_rate 값을 선택하는 것은 모델의 학습 속도와 정확도를 조절하는 중요한 요소입니다. 작은 값은 안정적인 학습을 제공할 수 있지만 학습 시간이 오래 걸릴 수 있습니다. 큰 값은 빠른 학습 속도를 제공할 수 있지만 과적합의 위험이 있을 수 있습니다.
하이퍼파라미터 튜닝을 위해 learning_rate 값을 조정하고, 그리드 서치(Grid Search)나 랜덤 서치(Random Search)를 사용하여 최적의 값을 찾을 수 있습니다.
4. n_estimators
n_estimators는 LightGBM 모델에서 사용되는 하이퍼파라미터 중 하나입니다. 이 매개변수는 생성할 트리의 개수를 지정하는 역할을 합니다.
n_estimators의 값은 일반적으로 양의 정수로 설정됩니다. 이 값이 클수록 모델은 더 많은 트리를 생성하며, 학습 시간은 늘어나지만 모델의 복잡성이 증가합니다. 반대로 값이 작을수록 모델은 적은 수의 트리를 생성하며, 학습 시간은 줄어들지만 모델의 복잡성은 낮아집니다.
n_estimators를 적절하게 설정하는 것은 모델의 학습 속도와 일반화 능력 사이의 트레이드오프를 조절하는 중요한 요소입니다. 작은 값으로 설정하면 모델이 더 빠르게 학습되지만, 충분한 수의 트리를 사용하지 않아서 예측 성능이 제한될 수 있습니다. 큰 값으로 설정하면 모델은 더 많은 학습을 수행하므로 복잡한 패턴을 학습할 수 있지만, 학습 시간이 오래 걸릴 수 있습니다.
적절한 n_estimators 값을 선택하기 위해서는 데이터의 특성, 모델의 복잡성, 계산 리소스 등을 고려해야 합니다. 보통 수십에서 수백 개의 트리가 사용되며, 데이터의 규모와 복잡성에 따라 적절한 값은 달라질 수 있습니다.
하이퍼파라미터 튜닝을 위해 n_estimators 값을 조정하고, 그리드 서치(Grid Search)나 랜덤 서치(Random Search)를 사용하여 최적의 값을 찾을 수 있습니다. 이를 통해 모델의 성능과 학습 시간을 균형있게 조절할 수 있습니다.
5. min_child_samples
min_child_samples는 LightGBM 모델의 하이퍼파라미터 중 하나입니다. 이 매개변수는 리프 노드가 되기 위해 필요한 최소한의 샘플 수를 지정하는 역할을 합니다.
min_child_samples 값은 보통 양의 정수로 설정됩니다. 예를 들어, min_child_samples=10으로 설정하면 각 리프 노드가 최소한 10개의 샘플을 가지도록 제한합니다. 이 값은 작을수록 리프 노드가 더 작은 크기의 샘플을 가지게 되고, 모델의 복잡성은 증가하게 됩니다.
min_child_samples를 증가시키면 과적합을 방지하고 모델의 일반화 성능을 향상시킬 수 있습니다. 작은 값으로 설정하면 모델은 작은 리프 노드를 가질 수 있으며, 훈련 데이터에 대해 더 정확하게 적합할 수 있습니다. 그러나 작은 값으로 설정하면 노이즈나 이상치에 민감해질 수 있고, 훈련 데이터에 과적합될 수 있습니다.
min_child_samples 값을 적절하게 설정하기 위해서는 데이터의 특성과 규모, 모델의 복잡성을 고려해야 합니다. 보통 5 이상의 값으로 설정되며, 데이터셋의 크기와 특성에 따라 조정할 수 있습니다. 큰 데이터셋이나 노이즈가 많은 데이터셋에서는 상대적으로 큰 값으로 설정하는 것이 일반적입니다.
하이퍼파라미터 튜닝을 위해 min_child_samples 값을 조정하고, 그리드 서치(Grid Search)나 랜덤 서치(Random Search)를 사용하여 최적의 값을 찾을 수 있습니다. 이를 통해 모델의 성능과 일반화 능력을 균형있게 조절할 수 있습니다.
6. subsample
subsample은 LightGBM 모델의 하이퍼파라미터 중 하나입니다. 이 매개변수는 각 트리를 학습할 때 사용되는 데이터 샘플의 비율을 지정하는 역할을 합니다.
subsample은 0과 1 사이의 값으로 설정됩니다. 기본값은 1로, 전체 훈련 데이터셋을 사용하여 각 트리를 학습합니다. 예를 들어, subsample=0.8로 설정하면 각 트리는 전체 훈련 데이터셋 중 80%의 샘플만을 사용하여 학습됩니다.
이를 통해 랜덤 샘플링을 수행함으로써 트리마다 다른 데이터 샘플을 사용할 수 있습니다. 이는 모델의 다양성을 높이고 과적합을 방지하는 데 도움을 줄 수 있습니다. 특히 데이터셋이 크거나 노이즈가 많은 경우, 일부 데이터를 제외하고 학습하는 것이 모델의 일반화 능력을 향상시킬 수 있습니다.
subsample 값이 1보다 작을 경우, 각 트리를 학습할 때 선택된 샘플들이 해당 비율만큼 무작위로 선택됩니다. 예를 들어, 100개의 샘플이 있는 데이터셋에 대해 subsample=0.8로 설정하면 각 트리는 무작위로 선택된 80개의 샘플로 학습됩니다.
subsample 값을 조정하여 적절한 데이터 샘플 비율을 선택하는 것은 모델의 일반화 성능과 학습 시간을 조절하는 중요한 요소입니다. 작은 값으로 설정하면 모델이 일부 샘플에 의존하여 불안정할 수 있고, 큰 값으로 설정하면 학습 시간이 증가할 수 있습니다.
하이퍼파라미터 튜닝을 위해 subsample 값을 조정하고, 그리드 서치(Grid Search)나 랜덤 서치(Random Search)를 사용하여 최적의 값을 찾을 수 있습니다. 이를 통해 모델의 성능과 학습 속도를 균형있게 조절할 수 있습니다.
7. colsample_bytree
colsample_bytree는 LightGBM 모델의 하이퍼파라미터 중 하나입니다. 이 매개변수는 각 트리를 학습할 때 사용되는 특성(변수)의 비율을 지정하는 역할을 합니다.
colsample_bytree 값은 0과 1 사이의 실수로 설정됩니다. 기본값은 1로, 전체 특성을 사용하여 각 트리를 학습합니다. 예를 들어, colsample_bytree=0.8로 설정하면 각 트리는 전체 특성(변수) 중 80%의 특성(변수)만을 사용하여 학습됩니다.
이를 통해 랜덤 샘플링을 수행함으로써 트리마다 다른 특성을 사용할 수 있습니다. 이는 각 트리가 다양한 특성을 고려하도록 하여 모델의 다양성을 높이고 과적합을 방지하는 데 도움을 줄 수 있습니다. 특히 특성이 많은 데이터셋에서는 일부 특성을 제외하고 학습하는 것이 모델의 일반화 능력을 향상시킬 수 있습니다.
colsample_bytree 값이 1보다 작을 경우, 각 트리를 학습할 때 선택된 특성들이 해당 비율만큼 무작위로 선택됩니다. 예를 들어, 10개의 특성이 있는 데이터셋에 대해 colsample_bytree=0.8로 설정하면 각 트리는 무작위로 선택된 8개의 특성으로 학습됩니다.
colsample_bytree 값을 조정하여 적절한 특성 비율을 선택하는 것은 모델의 일반화 성능과 학습 시간을 조절하는 중요한 요소입니다. 작은 값으로 설정하면 모델이 일부 특성에 의존하여 불안정할 수 있고, 큰 값으로 설정하면 학습 시간이 증가할 수 있습니다.
하이퍼파라미터 튜닝을 위해 colsample_bytree 값을 조정하고, 그리드 서치(Grid Search)나 랜덤 서치(Random Search)를 사용하여 최적의 값을 찾을 수 있습니다. 이를 통해 모델의 성능과 학습 속도를 균형있게 조절할 수 있습니다.
==> colsample_bytree 는 특성(변수, 피처) 들에 대한 비율 지정
==> subsample 는 클래스(데이터 샘플의 수)의 비율 지정
8. reg_alpha
reg_alpha는 LightGBM 모델의 하이퍼파라미터 중 하나입니다. 이 매개변수는 모델의 L1 규제(Lasso)를 조절하는 역할을 합니다.
L1 규제는 모델의 가중치를 제한하여 변수 선택과 모델의 복잡성을 조절하는 데 사용됩니다. reg_alpha 값은 일반적으로 양의 실수로 설정됩니다. 기본값은 0으로, 규제가 없는 모델을 의미합니다. reg_alpha 값을 증가시키면 L1 규제의 강도가 증가하며, 가중치가 더 많이 제한됩니다.
L1 규제는 일부 가중치를 0으로 만들어 변수 선택을 수행하고, 모델의 특성 중요도를 향상시킬 수 있습니다. 이를 통해 모델의 일반화 능력을 향상시키고, 불필요한 변수의 영향을 줄여 과적합을 방지하는 데 도움을 줄 수 있습니다.
reg_alpha 값을 조정하여 적절한 규제 강도를 선택하는 것은 모델의 성능과 일반화 능력 사이의 트레이드오프를 조절하는 중요한 요소입니다. 작은 값으로 설정하면 규제의 영향이 적어지고, 큰 값으로 설정하면 규제의 영향이 강해집니다.
하이퍼파라미터 튜닝을 위해 reg_alpha 값을 조정하고, 그리드 서치(Grid Search)나 랜덤 서치(Random Search)를 사용하여 최적의 값을 찾을 수 있습니다. 이를 통해 모델의 성능과 일반화 능력을 균형있게 조절할 수 있습니다.
8-1. L1 규제, L2규제
- L1 규제: L1 규제는 가중치(w)의 절댓값의 합을 손실 함수에 추가하여 사용합니다. 이는 가중치 벡터의 일부 요소들을 0으로 만들어 특정 특성들을 선택하고 다른 특성들은 제외하는 효과를 가집니다. L1 규제를 사용하면 희소한(sparse) 모델을 얻을 수 있습니다. 희소한 모델은 많은 가중치 값이 0이 되어 불필요한 특성들을 제거하고 모델의 해석력을 향상시킵니다. 이러한 특성으로 인해 L1 규제는 특성 선택(feature selection)에 유용하게 사용됩니다.
- L2 규제: L2 규제는 가중치(w)의 제곱의 합을 손실 함수에 추가하여 사용합니다. 이는 가중치 벡터의 모든 요소들이 손실 함수에 기여하게 하여, 모든 특성들이 유지되면서 가중치 값들이 전반적으로 작아지도록 유도합니다. L2 규제는 가중치 값을 균일하게 분산시키는 효과가 있으며, 모델의 일반화 성능을 향상시킬 수 있습니다. L2 규제는 가중치 감소(weight decay)라고도 불리며, 오버피팅을 방지하고 모델의 안정성을 높일 수 있습니다.
9. reg_lambda
reg_lambda는 LightGBM 모델의 하이퍼파라미터 중 하나입니다. 이 매개변수는 모델의 L2 규제(Ridge)를 조절하는 역할을 합니다.
L2 규제는 모델의 가중치를 제한하여 가중치의 크기를 제어하는 데 사용됩니다. reg_lambda 값은 일반적으로 양의 실수로 설정됩니다. 기본값은 0으로, 규제가 없는 모델을 의미합니다. reg_lambda 값을 증가시키면 L2 규제의 강도가 증가하며, 가중치의 크기가 더 많이 제한됩니다.
L2 규제는 가중치를 줄이는 것으로 과적합을 방지하고 모델의 일반화 성능을 향상시킬 수 있습니다. 이를 통해 변수들의 영향을 균형있게 조절하고, 모델이 훈련 데이터에 과도하게 의존하지 않도록 합니다.
reg_lambda 값을 조정하여 적절한 규제 강도를 선택하는 것은 모델의 성능과 일반화 능력 사이의 트레이드오프를 조절하는 중요한 요소입니다. 작은 값으로 설정하면 규제의 영향이 적어지고, 큰 값으로 설정하면 규제의 영향이 강해집니다.
하이퍼파라미터 튜닝을 위해 reg_lambda 값을 조정하고, 그리드 서치(Grid Search)나 랜덤 서치(Random Search)를 사용하여 최적의 값을 찾을 수 있습니다. 이를 통해 모델의 성능과 일반화 능력을 균형있게 조절할 수 있습니다.
10. gamma
gamma는 LightGBM 모델의 하이퍼파라미터 중 하나입니다. 이 매개변수는 트리의 잎 노드를 추가적으로 나눌 때 필요한 최소 손실 감소를 나타냅니다.
gamma 값은 일반적으로 양의 실수로 설정되며, 기본값은 0입니다. 이 값이 크면 트리의 성장이 보수적으로 이루어지며, 작으면 보다 자유롭게 성장할 수 있습니다.
트리의 성장은 새로운 분할이 손실을 충분히 줄이는지에 따라 결정됩니다. gamma 값을 높게 설정하면 분할에 대한 손실 감소가 커야만 추가적인 분할이 이루어집니다. 이를 통해 모델이 보다 보수적으로 성장하며, 불필요한 분할을 줄여줄 수 있습니다. 과적합을 방지하고 모델의 일반화 능력을 향상시킬 수 있습니다.
하지만 gamma 값을 너무 높게 설정하면 모델이 과소적합되는 경향이 있을 수 있습니다. 따라서 적절한 gamma 값을 선택하는 것은 모델의 성능을 조절하는 중요한 요소입니다. 데이터의 특성과 규모, 모델의 복잡성을 고려하여 조정할 수 있습니다.
하이퍼파라미터 튜닝을 위해 gamma 값을 조정하고, 그리드 서치(Grid Search)나 랜덤 서치(Random Search)를 사용하여 최적의 값을 찾을 수 있습니다. 이를 통해 모델의 성능과 일반화 능력을 균형있게 조절할 수 있습니다.
11. subsample_freq
subsample_freq는 LightGBM 모델의 하이퍼파라미터 중 하나입니다. 이 매개변수는 서브샘플링을 적용할 빈도를 지정하는 역할을 합니다.
subsample_freq 값은 일반적으로 양의 정수로 설정되며, 기본값은 0입니다. 0으로 설정하면 서브샘플링이 사용되지 않으며, 전체 데이터셋을 사용하여 각 트리를 학습합니다. subsample_freq 값을 양의 정수로 설정하면 해당 값에 따라 일정한 간격으로 서브샘플링을 수행합니다.
예를 들어, subsample_freq=1로 설정하면 각 트리를 학습할 때마다 서브샘플링이 적용됩니다. 이는 트리마다 다른 데이터 샘플을 사용하여 다양성을 높이고, 과적합을 방지하는 데 도움을 줄 수 있습니다.
subsample_freq 값을 조정하여 적절한 서브샘플링 빈도를 선택하는 것은 모델의 성능과 일반화 능력을 균형있게 조절하는 중요한 요소입니다. 작은 값으로 설정하면 학습 데이터를 더 많이 사용하여 더 정확한 적합을 할 수 있지만, 과적합의 위험이 커질 수 있습니다. 큰 값으로 설정하면 학습 데이터를 서브샘플링하여 모델의 다양성을 높일 수 있지만, 예측 성능이 약간 감소할 수 있습니다.
하이퍼파라미터 튜닝을 위해 subsample_freq 값을 조정하고, 그리드 서치(Grid Search)나 랜덤 서치(Random Search)를 사용하여 최적의 값을 찾을 수 있습니다. 이를 통해 모델의 성능과 학습 속도를 균형있게 조절할 수 있습니다.
12. max_delta_step
max_delta_step은 LightGBM 모델의 하이퍼파라미터 중 하나입니다. 이 매개변수는 각 트리의 예측값에 대한 제한을 설정하는 역할을 합니다.
max_delta_step 값은 일반적으로 양의 실수로 설정됩니다. 기본값은 0으로, 제한이 없는 모델을 의미합니다. max_delta_step 값을 설정하면 각 트리의 예측값이 해당 값보다 큰 차이를 가지지 않도록 제한됩니다.
이 매개변수는 일부 트리의 예측값에 대한 제한을 설정하여 모델의 안정성을 높이는 데 사용될 수 있습니다. 예측값의 큰 차이를 제한함으로써 예측의 변동성을 줄이고, 모델의 일반화 능력을 향상시킬 수 있습니다. 특히 예측값이 큰 차이를 가지는 불균형한 데이터셋이나 이상치가 있는 데이터셋에서 유용하게 적용될 수 있습니다.
max_delta_step 값을 조정하여 적절한 예측값 제한을 선택하는 것은 모델의 성능과 일반화 능력을 균형있게 조절하는 중요한 요소입니다. 작은 값으로 설정하면 예측값의 제한이 강해지고, 큰 값으로 설정하면 예측값의 제한이 상대적으로 완화됩니다.
하이퍼파라미터 튜닝을 위해 max_delta_step 값을 조정하고, 그리드 서치(Grid Search)나 랜덤 서치(Random Search)를 사용하여 최적의 값을 찾을 수 있습니다. 이를 통해 모델의 성능과 안정성을 균형있게 조절할 수 있습니다.
==> 보통 ['learning_rate' , 'n_estimators' , 'max_depth' , 'min_child_samples' , 'subsample' , 'colsample_bytree', 'reg_alpha' , 'reg_lambda']
'머신러닝 > LightGBM' 카테고리의 다른 글
[LightGBM활용_Kaggle-타이타닉-05] 모델 돌려보기(단독_ GridSearch 활용하여 최적하이퍼파라미터 찾기) (0) | 2023.05.23 |
---|---|
[LightGBM활용_Kaggle-타이타닉-04] 모델 돌려보기(단독_ Descision Tree) (0) | 2023.05.23 |
[LightGBM활용_Kaggle-타이타닉-03] 피처별 전처리하기★pd.cut (0) | 2023.05.20 |
[LightGBM활용_Kaggle-타이타닉-02] 피처별 전처리하기 (1) | 2023.05.20 |
[LightGBM활용_Kaggle-타이타닉-01] EDA 및 전처리하기 (0) | 2023.05.20 |