본문 바로가기
혼공학습단 머신러닝+딥러닝

[1.5주차] 과대적합과 과소적합

by 알래스카코코넛 2024. 1. 11.
반응형

 과대적합(overfitting)과 과소적합(underfitting)에 대해서는 따로 챕터를 빼서 알아보겠습니다. 내용이 많지는 않은데, 상당히 중요한 내용이라 별도로 분리했습니다. 사실 정의 자체는 각각 1줄이면 끝이에요.

 

  • 과대적합(overfitting): 훈련 세트 점수 >> 테스트 세트 점수
  • 과소적합(underfitting): 테스트 세트 점수 >> 훈련 세트 점수 혹은 테스트 세트 점수와 훈련 세트 점수가 동시에 낮음

 3초면 다 외울 수 있을 정도의 분량입니다. 그런데 왜 중요하냐고요? 과대적합/과소적합이 일어났다는 사실만으로 코딩한 내용 전체를 싹 다 폐기해야 할 수도 있거든요. 과대적합은 마치 모의고사는 99점, 100점이 잘 나오던 친구가 갑자기 수능을 봤더니 60점, 50점을 받아오는 경우고, 과소적합은 모의고사랑 수능 모두 60점을 받아 온 경우입니다. 이 경우에는 지금까지 사용하던 공부법을 바로 버려야겠죠. 코딩에서도 마찬가지라고 생각하면 됩니다.

 

 그나마 다행으로, 과대적합과 과소적합이 일어난 이유는 주로 명확하므로 코드를 조금 손보면 미리 두 경우를 모두 방지할 수 있습니다. 혹은 더 나아가서, 일부러 주장과는 다른 케이스를 바탕으로 과대적합/과소적합을 유도한 후 기존 주장이 옳다는 점을 강조하는 데 사용하기도 좋습니다. 독과 약은 종이 한 장 차이라고 하잖아요? 과대적합/과소적합도 마찬가지입니다.  

 

 과대적합은 훈련 세트를 통한 훈련이 지나치게 복잡해서 과하게 훈련된 경우입니다. 따라서 모델을 조금 더 단순화시키면 의외로 쉽게 해결됩니다. 릿지(Ridge)나 라쏘(Lasso)같은 규제를 적용하거나, 거시적인 판단을 할 수 있도록 코드를 변경하면 됩니다. 

 

 과소적합은 반대로, 훈련 세트를 통한 훈련이 지나치게 단순해서 국지적인 패턴을 파악하지 못한 경우입니다. 따라서 모델을 조금 더 복잡하게 만들거나, 데이터의 크기를 더 늘리는 등 복잡성을 높여주면 해결됩니다. 

 

 마지막으로, 과대적합과 과소적합이 일어나는 기준은 뭔가요? 라는 질문이 종종 발생합니다. 사실 엄밀한 기준은 없습니다. 테스트 세트 점수와 훈련 세트 점수가 몇 점 이상이면 과소적합이 발생하지 않았다, 몇 점 차이면 과대적합이 발생했다.... 이런 공식적인 기준은 존재하지 않습니다. 훈련 세트 점수가 0.8이고, 테스트 세트 점수가 0.76인데 이 경우는 과대적합/과소적합이 일어났나요? 정답은 없습니다. 어떤 목적으로 모델을 제작했냐에 따라, 또 어떤 데이터를 사용했냐에 따라 적절한 모델일 수도, 과소적합이 일어난 모델일 수도, 과대적합이 일어난 경우 일 수도 있습니다. 물론 점수들이 0.99, 0.98이면 베스트겠지만, 저 숫자가 정상적으로 나타나는 경우는 사실 드뭅니다. 따라서 어떤 기준이 과대적합/과소적합인지는 머신러닝 엔지니어의 기준과 역량에 따라 달라질 수 있습니다. 

 

반응형