항공사 고객 만족도 예측 AI 해커톤

정형 | Accuracy

  • moneyIcon 상금 : 참가시 최소 50 XP, 특별상 데이콘 후드
  • 657명 마감

 

Pycaret, LGBM을 활용한 예측 Baseline

2022.02.07 16:18 2,786 조회 language

안녕하세요! '분데데분'입니다.
항공사 고객 만족도 예측 경진대회 Baseline 코드를 준비해보았습니다.
부족하지만 잘 부탁드립니다!

mac m1 으로 pycaret setup 함수를 쓰면 Error가 발생합니다.
구글링을 해도 해결이 되지 않아 속상하네요. 어서 빨리 해결해봐야 할 듯 합니다 :) -> 16:53, 해결방법 : Python 3.6~3.8 ver으로!

분데데분의 Pycaret 기초 정리 노트 : https://dacon.io/codeshare/4243
---
22.02.09  tuned_lgb로 수정하였습니다.
22.02.11 '남태'님의 질문 반영하여 Train Set 로그 변환을 Test Set에도 적용
---
'본 포스팅은 데이콘 서포터즈 '데이크루'활동의 일환입니다'

코드
로그인이 필요합니다
0 / 1000
동화책
2022.02.07 16:26

역시 빠르시네요! 분데데분님 코드 보고 공부 좀 해야겠습니다... 코드 공유 감사합니다!
아 pycaret 정리한 노트 URL링크 마지막에 ']'가 있어서 사이트로 바로 안넘어가지네요... 수정해주시면 다른 분들도 찾아보기 좋을 것 같습니다~

백남진
2022.02.07 16:53

사실 저도 집값 데이터 예측, 동화책님의 파생 변수를 보면서 공부하고 있답니다 :) Pycaret 정리 URL 지금 바로 수정해서 올리려 합니다! 피드백 감사합니다!

제출수늘려주세요
2022.02.07 16:30

pycaret 요구 버전보다 높은 Python 버전을 사용중이시네요.
한번 python 3.6-3.8 버전으로 실행해보셔요

좋은글입니다 ^^

백남진
2022.02.07 16:48

바로 실행해보도록 하겠습니다 :) 고맙습니다!!

하짱02
2022.02.08 18:26

안녕하세요! 좋은 코드 공유 감사합니다.

베이스라인 코드에선 minmax scaler를 이용하여 정규화를 진행하였는데 standard scaler를 이용하신 이유가 있을까요? 

백남진
2022.02.09 08:22

반갑습니다 '하짱02'님!

출발/도착 지연시간과 비행시간 distplot을 보면 이상치가 존재합니다. boxplot을 해보면 매우 많은 이상치가 존재하는 것을 볼 수 있습니다. minmax scaler는 평균이 정확히 0이 되지 않고 이상치의 악영향을 받기 더 쉽습니다. 그래서 저는 Standard Scaler로 진행하였습니다.

감사합니다.

남태
2022.02.11 00:28

train에 관해서만 np.log1p를 적용하셨는데, test에 적용안한 이유가 있으실까요??
만약 train에 관해서만 transformation을 적용하고 fit하게되면 train과 test 단위? 스케일? 차이의 영향은 없을까요??
(test 데이터는 건들면 안되는건가요??)
궁금해서 여쭤봅니다

백남진
2022.02.11 08:11

반갑습니다 '남태'님,

oops!
Train Set Feature에 Transformation을 진행하면, Test Set에서도 동일하게 적용해주어야 합니다. 저의 실수입니다 :)
'남태'님이 말씀하신 것처럼 단위(Scale)가 달라지기 때문에 성능에 문제가 생길 수 있습니다 :)
다행히도 Boosting 계열의 알고리즘을 사용해서 모델에 큰 영향을 주진 않았지만, Logistic 에 적합한 데이터셋이었다면 큰 문제가 되었을 것입니다.

수정하여 진행하겠습니다! 감사합니다 :)

앙총
2022.02.11 14:34

코드 공유 감사합니다!

혹시 표준화 기법 사용 전에 log 변환 해주는 이유가 있을까요?

백남진
2022.02.11 16:26

반갑습니다 '앙총'님,
좋은 질문입니다 :)

 표준화 기법을 먼저 하게 되면 데이터가 평균 0, 분산 1로 됩니다. 그 후 데이터를 보면, 음수값도 존재하는 경우가 있는데, 로그 변환은 양수만 가능하기 때문에, 먼저 로그 변환을 해주었습니다 :)

Sunghyeon
2022.04.24 18:25

안녕하세요, 코드 공유 감사합니다.
위 베이스 모델 비교 후 'lgb = create_model('lightgbm')'로 lgb 모델을 생성하고,
tuned_lgb= tune_model(lgb)를 하면서 정확도가 좀 떨어진 것으로 보이는데 이런 경우에도 하이퍼 파라미터 튜닝을 하는 이유가 있을까요?

혹시 tuned_lgb가 하이퍼파라미터 튜닝이 아닌 다른 과정일까요? pycaret은 잘 몰라 문의드립니다.

백남진
2022.04.24 20:50

반갑습니다 'Sunghyeon'님, 
본 Notebook은 Baseline이라 제대로 보지 못했네요 :)

말씀하신대로 본래 튜닝을 하면 보통 '정확도'가 올라가는 게 맞습니다.  튜닝 시 해당 평가지표인 정확도가 떨어지면 튜닝을 진행하지 않고 데이터 자체를 다시 볼 필요가 있죠. 위 target 값의 비율로 보면, 어느정도는 클래스가 어느정도 불균형하기 때문에 '정확도'라는 지표에 한계가 존재합니다. target을 SMOTE와 같은 샘플링을 진행하고 튜닝을 하면 정확도는 상승할 것입니다.