코스포 x 데이콘 자동차 충돌 분석 AI경진대회 채용

왜 점수가 오르지 않을까?

2023.02.23 17:35 1,436 조회

밑에 왜 점수가 오르지 않는지 고민하는 분이 글을 작성하셨던데, 제 생각을 한번 써볼까 합니다.


제가 생각하는 이 대회에서 가장 큰 문제는 Labeling 입니다.


weather를 예측하는 부분을 예로 들어보겠습니다.

labeling이 되어있는 weather의 normal, snowy, rainy는 각각 716, 129, 70개입니다.

이중 rainy의 경우 7개만 mislabeling이 되어있어도 벌써 10%가까이의 데이터가 비정상입니다.

garbage in garbage out이라는 말을 들어 보셨겠지만, 바로 이러한 경우입니다.


아무리 좋다는 기법을 다 섞어 넣는다 해도 애초에 labeling이 잘못되어 있으면 아무 소용이 없습니다.


그럼 여기서 몇 가지 해결책이 존재합니다.

  1. labeling을 직접 전부 다시 한다.
  2. pseudo-labeling을 한다.
  3. 어떻게든 robust하게 만들어본다.


1번의 경우 충돌 데이터가 약 900개 정도이니까 몇 시간 정도만 투자하면 labeling은 금방 할 수 있습니다.

2번의 경우 어떤 방법을 하냐에 따라 다르지만, 모델이 확실하게 clean한 label을 얼마나 잘 만들어 주냐에 따라 완성도가 달라집니다.

3번의 경우는 데이터가 많지 않은 상태 및 어떤 것이 clean인지 모르는 상태라면 확인하기 힘들어 보입니다.

이 외에도 많은 방법이 존재하겠지만, 1번과 2번의 관점에 대해서 계속 적어보겠습니다.


1번과 2번을 통해 clean label 을 얻었습니다.

확실한가요?

이게 정말 clean label 인지는 어떻게 알 수 있나요?

대회의 Test Set의 clean여부는 알 수도 없고, 애초에 clean의 정의가 되어 있지 않으면 다시 labeling한들 아무 소용이 없습니다.


Train의 1027번을 예로 확인해보겠습니다.

이 데이터의 label은 12로 다른 차량의 충돌이 밤에 발생하였고 날씨는 비가 오는 것으로 되어있습니다.


재생해보시면 바닥에는 눈이 있고, 와이퍼는 움직이지 않으며, 화질은 좋지도 않아 다 깨져가고 있습니다.

사람이 보고 판단한다면 비가 오고 있다고 판단하기에는 애매합니다.

라벨이 틀렸을 가능성은 높지만, 일기예보를 확인하거나 그 당시 거기 있지 않았으면 사실관계는 알 수 없습니다.

이 데이터는 normal인지 snow인지 rain인지 사람이 보고 판단하려면(labeling을 하려면) 확실한 정의가 내려져 있어야 합니다.


보통 labeling을 위해서는 labeling guide 라는게 존재합니다. 위 같은 경우를 예방하기 위해서 guide가 필요하고

예외를 많이 커버하는 guide일수록 더 clean한 data가 만들어짐을 추측할 수 있습니다.


이야기가 좀 샌 것 같습니다.

다시 본론으로 돌아와서 대회에 대해 이야기 해 보겠습니다.

점수를 올리기 위해선 어떻게 하면 좋을지는 이제 다들 어느 정도 예상이 되실 겁니다.

test set의 labeling의 정의를 가장 잘 따르는 모델이 바로 점수가 높은 모델입니다.

대회의 측면에서는 이미 정답(label)이 정해져 있기 때문입니다.


그럼 test set을 가장 잘 따르게 하려면 어떻게 할까요?

저도 잘 모릅니다.


제가 적은 방법만 있는 것도 아니고 문제를 해결하는 방법에는 여러 방법이 있습니다.

답답해 하시는 분들이 많이 있을 것 같아 제 생각을 조금 적어보았습니다.

자신만의 논리를 잘 구축하셔서, 좋은 결과를 얻으시기 바랍니다.


ps1)

현재 데이터셋의 label 분포로 추정할 때, 데이터가 10개 밑으로 존재하는 label이 많고

public 30% 인 상태에서 리더보드의 f1 score는 거의 힘이 없다고 보시면 됩니다.

예를 들어, 반 정도의 label인 7~12까지가 각각 10개 미만이라고 생각해 봅시다.

여기서 30%면 각각 최대 3개입니다.

이 3개로 f1 score를 계산하면 한,두개만 틀려도 (false negative) score가 많이 내려갈텐데 false positive 까지 섞인다면?


물론 public과 별 차이 없는 강건한 모델을 구축했다면 private을 걱정하지 않아도 될겁니다.

로그인이 필요합니다
0 / 1000
오븐
2023.02.23 21:14

삭제된 댓글입니다

오븐
2023.02.23 21:16

역시 여러 대회를 참가해보셔서 그런지 통찰력이 대단하시네요..!!

BlackANGus
2023.02.24 16:46

수도 라벨링은 data leakage 위반되지 않나요?

EISLab_이희원
2023.02.24 17:18

test 데이터셋 sudo labeling은 data leakage에 위반되지만, train 데이터셋은 위반되지 않습니다.

EISLab_이희원
2023.02.24 17:20

이 글을 보고 accuracy로 score을 계산해봤는데 public score이 0.5%정도 내려갔네요.
아마도 metric은 f1 score로 계속 고정해야 할 것 같네요

Redix6
2023.02.24 17:35

metric의 문제는 아닙니다. accuracy도 데이터 개수의 문제로 비슷한 문제를 겪게 됩니다.