분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
월간 데이콘 신용카드 사용자 연체 예측 AI 경진대회
Simple Baseline LGBM - LB 0.72728
안녕하세요.
오랜만에 정형데이터 대회네요!
LGBM 모델을 통해 예측하는 baseline 을 만들어 보았습니다.
작업은 아주 간단히 구성했습니다.
라이브러리 불러오기 - 데이터 불러오기 - 데이터 전처리 - 모델 훈련 - 예측
가장 기본적인 단계들로만 구성을 하였고 전처리 단계에서도 모델에 넣을 수 있는 형태로 만드는 전처리만 작업하였습니다.
EDA를 통한 feature engineering, model parameter tuning 등을 통해서 점수를 향상 시킬 수 있을 것 같습니다.
좋은 아이디어가 좋은 점수를 낼것 같네요ㅎㅎ
첫 시작에 조금이라도 도움이 되었으면 좋겠습니다.
+
single model (1fold) 제출시 0.7429220107
5 fold soft ensemble 시 0.72728
5-fold로 만든 모델을 앙상블하여 0.0156420107 점 정도 올라가네요.
코드 공유 감사합니다!
베이스라인 감사합니다. print(f'===================================={fold+1}============================================')
를 사용하니 결과물을 더 깔끔하게 확인할 수 있네요!!
감사합니다!
구분선이 있으면 보기 좋은것 같네요 ㅎㅎ
하루만에 정말 좋은 코드를 만들어 주셨네요! 코드공유 감사합니다!
깔끔한 코드 감사합니다.
보기 편하게 정리해주셔서 많은 도움이 되었습니다. 감사합니다.
좋은 코드 감사합니다!
코드 공유 감사합니다!
혹시 fit하시기 전에 따로 logloss를 손실함수로 지정해 주신 건가요?
[100] training's multi_logloss: 0.649825 valid_1's multi_logloss: 0.754342
이런 출력이 어떻게 나오는지 궁금합니다!
안녕하세요.
LightGBM 기본값 사용하면 알아서 y값을 판단하고 binary_logloss 혹은 multi_logloss로 해주는것 같더라고요. 그런데 지금 LightGBM 문서에서 parameters default 값들을 보니까 metric은 비어있는것 같네요.
정확하게 명시하여 훈련하고 싶으면 해당 대회 문제가 0,1,2 로 target이 3개니까 metric='multi_logloss'를 파라미터값으로 LightGBM 을 선언해주면 될 것 같습니다. 그럼 출력도 나올거예요.
아 그렇군요!
감사합니다 ㅎㅎ
좋은 코드 감사합니다! 혹시 "predict_proba를 사용하여 예측한 것을 5-fold 더하여 평균내어 앙상블." 여기서 5-fold 더하여 평균내어 앙상블이라는 말이 어떤값을 더한거죠....? 그리고 주석처리된 # 0.7272812는 어떻게 나온건지 알 수 있을까요?
Training 부분을 보시면 총 5개의 fold로 분리 한 후 각 fold마다 훈련을 하기 때문에 5개의 모델이 만들어집니다.
각 fold마다 다른 분포의 train, valid를 사용하여 학습시킨 5개의 모델로 test dataset을 추론합니다.
5개의 모델들은 다른 분포의 학습데이터를 사용했기 때문에 예측 결과가 차이가 있습니다.
5개의 예측 결과의 평균을 내면 조금 더 robust한 결과물을 얻을 수가 있습니다.
predict_proba를 사용한 이유는 모델이 예측한 각 class의 확률 값을 얻기 위함입니다. 그냥 predict를 사용하여 반환받으면 class의 확률중 큰값의 인덱스 값이 나오기 때문에 각 class의 확률을 얻기위해 predict_proba를 사용했습니다. 그리고 해당 대회 성능평가는 log loss 로 이루어지기 때문에 class의 확률값을 제출해야합니다.
주석 처리된 0.7272812는 해당 코드를 그대로 실행하고 제출했을 때 나온 성능입니다.
친절한 답변 정말 감사합니다!
그 전 답변에 대해서는 다 이해가 됐습니다만.. "주석 처리된 0.7272812는 해당 코드를 그대로 실행하고 제출했을 때 나온 성능입니다." 라는 말이 잘 이해가 안가네요ㅠ
여기서 말한 성능은 validation set을 통해 측정한 성능인건가요... ?
validation의 성능은
데이콘 시스템에 제출한 성능으로 test set에 대한 성능입니다.
public leader board 성능을 의미합니다.
validation set의 성능은
fold1[307] training's multi_logloss: 0.499573 valid_1's multi_logloss: 0.731416
fold2[330] training's multi_logloss: 0.480923 valid_1's multi_logloss: 0.747248
fold3[300] training's multi_logloss: 0.497577 valid_1's multi_logloss: 0.742915
fold4[256] training's multi_logloss: 0.525232 valid_1's multi_logloss: 0.735804
fold4[289] training's multi_logloss: 0.50667 valid_1's multi_logloss: 0.735772
해당 출력물들에서 valid_1's multi_logloss의 값들입니다.
아하 감사합니다!!
코드 공유 감사합니다!
혹시 각 fold에서 출력되는
fold1[307] training's multi_logloss: 0.499573 valid_1's multi_logloss: 0.731416
fold2[330] training's multi_logloss: 0.480923 valid_1's multi_logloss: 0.747248
fold3[300] training's multi_logloss: 0.497577 valid_1's multi_logloss: 0.742915
fold4[256] training's multi_logloss: 0.525232 valid_1's multi_logloss: 0.735804
fold4[289] training's multi_logloss: 0.50667 valid_1's multi_logloss: 0.735772
에서 최소인 0.735772를 코드 내에서 얻을 수 있는 방법이 있나요?
안녕하세요.
댓글을 이제 봤네요 ㅠㅠ..
각 폴드의 모델들은 lgb_models 변수에 저장되어 있습니다.
그래서 validation 0.735772 성능을 가지는 모델을 사용하고 싶으면 lgb_models[4] 로 사용하시면 됩니다.
좋은 코드 공유 감사합니다ㅎㅎ
감사합니다. ^^
코드 공유 감사합니다!!
혹시 제출하지 않고 정확한 스코어를 알 수 있는 방법은 없을까요?
해당 코드 그대로 실행할 때 0.7272812144 이 나왔습니다.
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io | 전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved
학습과정에서 validation score와 제출한 test score 를 보니 test 데이터와 train 데이터 분포가 큰 차이가 나진 않는것 같네요 !