작성
·
78
·
수정됨
0
from lightgbm import LGBMClassifier
clf = LGBMClassifier(
n_jobs = -1,
n_estimators = 1000,
learning_rate = 0.02,
num_leaves = 32,
subsampls = 0.8,
max_depth = 12,
silent = -1,
verbose = -1
)
clf.fit(train_x, train_y, eval_set=[(train_x, train_y), (valid_x, valid_y)], eval_metric='auc',
verbose = 100, early_stopping_rounds=50)
안녕하세요 강사님, 8분 40초 경에 나오는 위 코드 설명 중에서 LGBClassifier에 들어가는 파라미터들에 대해 질문드립니다.
이번 회차에서는 LGBM을 통한 분류에서 파라미터 튜닝을 거의 하지 않은 채 기본적인 base 피처들을 이용하였고, learning_rate, num_leaves, max_depth와 같은 하이퍼 파라미터들에 대해서도 아주 간단하게만 설정해주셨는데요.
어떠한 요령이나 기준을 가지고 위와 같은 하이퍼 파라미터를 설정해주셨는 지가 궁금합니다.
실제 실무에서도 받은 데이터들에 대해 기본적으로 가공하지 않고 알고리즘을 우선 돌려보며 기본적인 데이터들의 예측력 지표를 확인해보는 작업을 여럿 해볼 것 같다고 생각이 듭니다.
때문에 이렇게 미가공 상태에서 raw데이터들만 가지고 한 번 돌려보면서 감을 잡을 때 강사님께서 설정하신 것처럼 대략적으로나마 하이퍼 파라미터 값을 넣어준다면 어떤 하이퍼 파라미터에 어떤 값을 줄지에 대해 어떻게 결정하시는 지가 궁금합니다. (그리드서치나 하이퍼옵트 등을 이용해서 처음부터 최적의 하이퍼 파라미터를 찾아가는 건 단계상 너무 본격적인 것 같아서요!)
답변 2
0
안녕하십니까,
제가 하이퍼 파라미터를 명확히 특정 가이드라인을 가지고 적용을 하는 건 아닙니다.
저의 경우는 초기에는 max_depth, num_leaves, subsample, colsample_bytree, min_child_samples 등에 초점을 맞추는데 max_depth, num_leaves의 크기를 늘리면 보통 오버피팅하기 쉽기 때문에 이들을 늘리면서 함께 적절한 subsample, colsample_bytree값을 함께 늘리면서 과적합을 조절하는 방식으로 진행을 합니다. 또한 초반기에는 learning_rate도 0.3 ~ 0.5 정도로 좀 크게 잡고 테스트 합니다.
그러다가 더 성능향상이 안되면, learning_rate 를 더 낮추고, n_estimators를 더 늘리면서, reg_lambda, reg_alpha와 같은 규제(Regularization)도 적용을 합니다(근데 규제는 크게 잘 역할을 못하는 것 같습니다 ^^)
과거에는 이런 루틴을 가지고 작업했는데, 이제는 하이퍼옵트등과 같은 베이지안 기반으로 하이퍼파라미터 튜닝을 하는 것을 더 선호합니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
유현상님께서 물어보신 LGBMClassifier의 파라미터 설정 방법에 대해 답변드리겠습니다. 실무에서 초기 모델을 설정할 때는 다음과 같은 단계를 거치는 것이 일반적입니다.
강사님께서 설정해 주신 파라미터들은 기본값에서 크게 벗어나지 않으며, 경험상 좋은 성능을 보이는 값들입니다.
처음부터 모든 데이터를 가공하지 않고, 대략적인 모델 성능을 확인하기 위해 위와 같이 설정한 파라미터로 시작합니다. 기본 설정으로 학습한 모델의 성능을 확인한 후, 추가적인 데이터 전처리 작업을 수행하거나 파라미터를 튜닝합니다.
다음 링크에서도 하이퍼 파라미터 튜닝 관련 유용한 정보 및 실전 팁들을 확인할 수 있습니다:
이 글들을 통해, 기본적으로 설정된 하이퍼 파라미터들 외 추가적인 조정 방법과 주의사항을 확인하시어, 모델 성능을 단계적으로 개선해보세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.