월간 데이콘 항공편 지연 예측 AI 경진대회

[토론] 저만 데이터가 뭔가 이상하다고 느끼나요..

2023.05.03 17:54 1,653 Views

train/validation 세트 잘 나누고. leakage 없게 validation 하더라도

validation 점수랑 제출 시 점수가 너무 차이가 나네요..ㅠㅠ 저만 그런가요

training/ validation 보면 학습이 되긴 한 건데,

제출용 데이터 때는 학습하던 말던 결과가 비교가 안되게 안 좋게 나오는 느낌..?


그냥 자유롭게 얘기해요! 다른 분들은 어떤지 궁금해서 글 올립니다..

로그인이 필요합니다
0 / 1000
Blackcows
2023.05.03 18:35

개인적인 생각입니다만,  준지도학습을 쓰거나 아니면 최빈값 같은 대푯값으로 Delay 열을 채우는 게 생각만큼 정확하게 채우지 못하는 거 같습니다. 그도 그럴 게 Delay 열은 75%가 비었으니...
(https://dacon.io/competitions/official/236094/codeshare/8156?page=1&dtype=recent)
validation도 테스트 데이터에서 분할한 것이니까 train/validation은 큰 차이가 없을 거 같지만요.

Soonb
2023.05.04 09:58

답변 감사합니다. 
delay열을 최빈값으로 채우는건 말도 안된다고 생각합니다. 물론 저도 label인 delay열을 최빈값으로 채우지도 않았구요.
baseline코드를 봐도 Delay열을 최빈값으로 채우기보다는 drop 해서 남은 데이터를 쓰는 형식이고, 저 또한 이렇게 했습니다.
제가 말씀드린건 dropna를 통해 delay열을 버리고 학습했을 때 발생하는 문제 였습니다~

Blackcows
2023.05.05 16:05

저도 비슷하게 delay 열을 결측치가 아닌 값들을 이용해서 채우고 학습을 돌리고 있는데, 아래 댓글에서도 다른 분께서 언급하셨지만 모델 학습률을 높였을 때 점수가 더 떨어지고, 오히려 학습률을 낮췄을 때 리더보드 값이 더 잘 나오더라고요. 

즉 제가 사용한 방법이 (주어진 데이터셋이 문제 없는 데이터라면) delay 열을 잘못 예측하고 있다는 것이고, 그렇다면 
1) 예측 방법(준지도학습에 사용한 feature나 모델 선택)이 잘못되었거나 
2) delay 열이 너무 많이 비었기 때문에 결측치가 아닌 데이터만으로는 전체 데이터의 분포를 제대로 설명하지 못한다
는 결론에 도달해서 delay 열을 제대로 채울 방법을 찾아보고 있습니다만... 정말 어렵네요.
만약 2번이 맞다면 여기서 더 크게 나아질 방법이 있을까 싶기도 하고요. (그렇다면 데이터셋 생성을 다시 해야지...)

다른 분들은 어떻게 하셨는지도 엄청 궁금하네요.

때때로비
2023.05.05 17:00

참고로 imputation 이란 것을 검색해 보시면, 2번에 대한 제 답변이 되겠습니다. 

byc3230
2023.05.03 20:47

train 데이터 기준으로는 logloss 0.2 까지 떨어지는데, 리더보드 score 는 처참해서 멘붕중입니다. ㅠㅠ 도저히 방법을 모르겄네요 ㅠㅠ

Soonb
2023.05.04 10:00

일단 train/val을 나누고 validation에 대한 logloss를 봐야할거 같은데..
저도 validation에 대한 logloss 는 0.4 초반대 까지 찍어서 이것이 테스트에도 어느정도는 유효해야 한다고 생각했는데
테스트 데이터에는 모두 1이 넘네요..ㅠ 

DHugoKim
2023.05.04 10:27

저도 train셋을 통해 만들어진 결괏값 평가점수랑 제출값 괴리가 굉장히 커서 고민중이네요. 정규화나 모델을 바꿔서 해봐도 유사하게 따라가면 어떻게 감을 잡을텐데 영 별개의 결과가 계속 나오고 있어서

저같은경우는 drop을 사용하지 않고 대부분의 빈 값을 채워서 모델을 작성했는데도 결과가 딱히였어서 dropna를 써볼까도 고민했었는데 이것도 결과가 썩 좋지는 않나보네요. 더 고민을 해봐야 할 것 같습니다.

Soonb
2023.05.04 11:07

답변 감사합니다..
저도 delay 빼고는 거의 모든 데이터 합리적으로 결측치를 채워넣고 진행했는데도..
좋지 않네요.ㅠ.ㅠ
아무리 고쳐봐도, 어떤 모델을 쓰던 결과가 같아서 (val loss 는 낮고, test loss 는 매우 높음)
뭔가 잘 못된거 같은 느낌만 들어서 답답해서 글 올려봤습니당..ㅋㅋㅋ

DHugoKim
2023.05.04 13:20

하여도 뭐 결과를 잘 내신 분들이 있는거 보면 뭔가 놓친게 있나 생각해보는 수 밖에요. 

춘배사랑개
2023.05.04 14:26

Delay를 임의로 채워 넣어서 결과 값을 추론하는 것이라 그런지 정확한 예측이 불가능? 한 것 같습니다.
테스트로 제출파일의 Not_Delayed, Delayed를 0.4, 0.6으로 그냥 채우고 제출 해봤는데 열심히 만든 것보다 잘 나오더라고요.

그만큼 Delay열을 Train에서 잘 채워 넣느냐가 핵심인 것 같은데, 방법을 모르겠어서 그냥 대회끝나면 상위분들은 어떻게 했는지 보려고  합니다.

Soonb
2023.05.04 15:55

답변 감사합니다. 제 의견은 val loss와 test loss 에서 오는 괴리감 이었습니다.
Delay 열을 train 에서 아무리 잘 채운다고 하더라도 이 괴리는 좁혀지지 않을 것이라는 의문이 들어서 질문 한 거였구요.!ㅎㅎ
저도 상위 분들 어떻게 했나 궁금하네요.

춘배사랑개
2023.05.04 16:00

저도  훈련할 때 5-fold로 해서 제출 한 30번 할때까지는 loss가 0.2~0.4 나오는데 제출결과는 0.9~1.1 사이로 나오더라고요.

그래서 그냥 모델의 반복 횟수를 낮춰서 특정 값 나오게 바꾸니까 오히려 점수가 잘 나오는 아이러니한 점이.. 어렵습니다.

byc3230
2023.05.04 15:38

와!! 리더보드 1등 축하드립니다!

Soonb
2023.05.04 15:53

아닙니다... 의문점을 확인하려고 올린 것 일 뿐입니다.
설명 안 되는 부분이 있어서.. 저 점수는 가짜 입니다..ㅎㅎ 

koii
2023.06.01 12:45

삭제된 댓글입니다

Soonb
2023.05.05 15:28

결론이 비슷하시네요.
한편으론, 여태 아무도 이런 질문이 없었다는게 신기하네요..

2) 의 경우 log loss 계산 공식을 생각해보면, 2번 logloss 값이 엉터리로 계산되지는 않고 정확하게 계산됩니다. 이것은 데이터를 0.5 0.5 넣으시면 로그 계산법이 정확하게 되는 것임은 확인하실 수 있습니다.

저도 1)과 같이 생각하고 있습니다. training 데이터셋과 test 데이터셋의 데이터 분포가 전혀 다르다고 결론을 내렸네요.
이상하다고 생각하는 데이터를 가지고, 일단은 데이터leakage (= 찍기) 없이 할 수 있는 최대한의 방법을 해보고 있네요...
의욕이 떨어졌다고 하신게 공감이 됩니다..ㅠ