인프런 커뮤니티 질문&답변

유현상님의 프로필 이미지
유현상

작성한 질문수

캐글 Advanced 머신러닝 실전 박치기

application 데이터 세트 기반으로 첫번째 모델 학습 및 성능 평가

8분 40초경 LGBClassifier에서 설정해주신 파라미터들 관련 질문

작성

·

70

·

수정됨

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의 파라미터 설정 방법에 대해 답변드리겠습니다. 실무에서 초기 모델을 설정할 때는 다음과 같은 단계를 거치는 것이 일반적입니다.

1. 기본 파라미터 설정

강사님께서 설정해 주신 파라미터들은 기본값에서 크게 벗어나지 않으며, 경험상 좋은 성능을 보이는 값들입니다.

  • n_estimators: 모델이 학습할 결정 트리의 개수를 의미합니다. 기본적으로 1000으로 설정하여 충분한 모델 복잡성을 확보합니다.
  • learning_rate: 학습 속도를 조절하는 파라미터로, 0.02로 설정하여 천천히 학습하도록 합니다. 작은 값을 사용하면 더 많은 트리가 필요하지만, 성능이 더 안정적입니다.
  • num_leaves: 하나의 트리에서의 최대 잎 노드 수를 의미하며, 32로 설정합니다. 이는 전형적으로 사용하는 값입니다.
  • subsample: 학습에 사용하는 데이터의 비율을 의미합니다. 0.8로 설정하여 일부 데이터만 사용함으로써 과적합을 방지합니다.
  • max_depth: 개별 트리의 최대 깊이를 의미하며, 12로 설정하여 모델이 어느 정도의 복잡성을 가지게 합니다.
  • silentverbose: 학습의 로그 출력을 제어합니다. 일반적으로 학습 속도와 관련된 출력은 제한하는 것이 유리합니다.

2. 초기가설 검증

처음부터 모든 데이터를 가공하지 않고, 대략적인 모델 성능을 확인하기 위해 위와 같이 설정한 파라미터로 시작합니다. 기본 설정으로 학습한 모델의 성능을 확인한 후, 추가적인 데이터 전처리 작업을 수행하거나 파라미터를 튜닝합니다.

구체적인 설정 요령

다음 링크에서도 하이퍼 파라미터 튜닝 관련 유용한 정보 및 실전 팁들을 확인할 수 있습니다:

이 글들을 통해, 기본적으로 설정된 하이퍼 파라미터들 외 추가적인 조정 방법과 주의사항을 확인하시어, 모델 성능을 단계적으로 개선해보세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

유현상님의 프로필 이미지
유현상

작성한 질문수

질문하기