전복 나이 예측 AI 해커톤

오버피팅

2022.03.31 05:16 1,659 Views

train set에서의 outlier제거가 오버피팅에 영향을 미치나요?

outlier 조금씩 제거하다보니 cv score이 계속 잘나오길래 신나서 계속 제거했는데

제출 하니깐 점수가 엄청 떨어지네요 ㅠㅠ 그 전이랑 바뀐건 outlier 제거한것 밖에 없는데..


추가적으로, 여태까지 cv score만 보면서 데이터를 다뤘는데, 위에 경우처럼 cv score이 좋아도 결과적으로는

overfitting되는 경우가 원래 있나요?

로그인이 필요합니다
0 / 1000
물린다
2022.03.31 11:25

이상치 제거가 누구에게는 도움이 되는 것 같고 누구에게는 도움이 안 되는 것 같습니다. 아마도 어떤 feature를 선택했느냐, 어떤 알고리즘을 썼느냐, 파라미터 튜닝을 어떻게 했느냐 등 등 다양한 원인에 의해 사람마다 다르게 결과가 나오는 것 같습니다.
참고로 저 같은 경우 이상치를 제거하면 성능이 별로 안 좋아지는 것 같았습니다. (단정짓기는 어렵지만 대략)

Junghoon
2022.03.31 11:32

답변 감사합니다. 제 경우도 마찬가지로 이상치 제거가 성능하락으로 이어지는 것 같네요.

lastdefiance20
2022.03.31 11:36

기본적으로 CV score은 어떤 데이터셋을 이용할까요? train set을 분할해서 사용합니다. 따라서 train set에서의 outlier를 제거한다면 대체적으로 CV 성능이 올라가게 될 수 있습니다. 하지만 overfitting의 위험이 도사리고 있기 때문에 합리적인 제거가 필요합니다.

전복 데이터로 극단적으로 예시를 들자면 16살 이상의 데이터들을 잘 예측하지 못하는 모습을 보이고 있습니다. 이때 train set에서 16살 이상의 데이터를 이상치라고 생각하고 다 제거하게 된다면, 교차검증시에는 우리가 이상치를 제거했던 train set을 기반으로 진행하기 때문에, CV에서 사용되는 validation set에는 모델이 잘 예측하지 못하는 16살 이상의 데이터가 존재하지 않기 때문에, CV score은 높게 나오게 됩니다. 하지만 우리가 제출할때 사용하는 test set에는 16살 이상의 데이터가 존재하고 있고, 결국에는 16살 이하의 데이터에 대한 overfitting으로 인한 점수 하락이 발생하게 됩니다. 

따라서 Cross Validation을 쓰지 않고, train set에서 데이터를 train set 과 validation set으로 나눈 후, train set에 있는 이상치를 극단적으로 제거하게 되면 score이 줄어드는 모습이 나올 수 있습니다. validation set에 있는 '이상치'라고 (잘못) 판단했던 값들을 예측하지 못하게 되기 때문입니다. 따라서 당연하게도 CV score이 좋다고 해도 결과적으로 overfitting이 될 가능성이 존재하고 있습니다. 또한 제출하게 되었을때 나오게 되는 public score이 private score까지 그대로 이어질것이라는 보장도 없습니다. 이 부분에 대해서는 overfitting에 주의하며, 최대한 다양한 데이터를 포함하게 하고, 많은 모델을 앙상블하여 결과를 일반화하는 과정이 필요합니다.

Junghoon
2022.03.31 11:35

답변 감사합니다. 계속 이해 안되는 부분이였는데, 이제 좀 이해가 되네요. 결국 CV score 과 같이 public scoree도 같이 확인해야겠네요.
첫 대회 참가인데, 일일 3회 제출횟수 제한이 이렇게 타이트한지 몰랐습니다. 제출도 효율적으로 해야겠다는 점을 배웠습니다 ㅎㅎ

나도한다코딩
2022.04.05 16:26

흠... 글쎄요... 저도 댓글 보면서 다시 한 번 공부해봐야겠네요..