[딥러닝] 과적합(Over-fitting, 오버피팅) 문제

     

    과적합의 개념

    - 데이터가 너무 Fit하게 학습이 되면서 생기는 문제를 과적합(Over-fitting)이라 부르며, 데이터의 학습이 제대로 되지 않는 상태인 반대 개념을 언더 피팅(Under-fitting)이라 한다

     

    과적합이 발생하는 사유

    • 학습 데이터가 너무 적은 경우
    • 학습 데이터 전처리를 잘못한 경우
    • 특징(Feature) 데이터가 너무 많은 경우

     

     

    과적합 사례

     

    예를 들어 다음과 같은 설문조사 데이터를 학습 데이터로 사용해보고자 한다.

    우리나라 특별시, 광역시, 도를 기반으로 지역 값을 생성하고 10대, 20대와 같은 나이대를 값으로 생성하며, 성별 값, 학력을 feature data로 놓고 최종 labeling 할 데이터를 연봉이라고 가정을 해보자

     

    지역 설계
    서울시 0
    대전 1
    세종 2
    광주 3
    울산 4
    부산 5
    대구 6
    경기도 7
    강원도 8
    제주도 9
    충북 10
    충남 11
    전북 12
    전남 13
    경북 14
    경남 15
    
    나이 설계
    1~19 0
    20~29 1
    30~39 2
    ...
    80~ 7
    
    성별 설계
    male 0
    female 1
    
    학력 설계
    고졸 0
    초대졸 1
    대졸 2
    석사 3
    박사 4
    
    연봉 설계
    0~1999 0
    2000~2999 1
    3000~3999 2
    4000~4999 3
    5000~6999 4
    7000~9999 5
    10000~19999 6
    20000~29999 7
    30000~ 8

     

    그런데 학습에 사용 될 울산 데이터가 충분하지 않다고 가정을 해보자

    loc,age,gender,edu,salary
    4,0,1,0,1
    4,0,1,1,1
    4,1,0,2,8
    4,2,0,0,1
    4,2,0,0,1
    ...

    그리고 하필 설문조사에 참여한 울산거주 20대가 회사를 운영하는 사장이고 연봉이 3억이 넘는 사람이 있었고, 해당 데이터를 기반으로 학습한 모델에 울산거주 20대의 연봉은 얼마인가?를 던지면 3억 이상이라 답을 하게 될 것이다.

     

    오버피팅을 줄이는 방법

     

    그럼 오버피팅을 줄일 수 있는 대책은 무엇이 있을까?

     

    특징을 줄이거나 정규화한다

    여기서 문제는 울산 데이터가 너무 적다는 것이다. 물론 울산에 사는 20대의 연봉이라는 정교한 질문에 답은 할 수 없겠지만 데이터가 부족하기 때문에 지역별로 묶을 수 있을 것이다. 


    예를 들어 울산이 부족한 경우, 부산과 경남을 하나의 지역으로 묶어서 계산을 하는 방법이 있을수 있다. 혹은 아예 지역값을 학습하지 않아서 울산의 20대 연봉에 대한 결과는 제대로 내진 못하지만 20대 연봉에 대한 결과는 어느정도 나오게 트레이드 오프를 할 수 있을 것이다.

     

    데이터를 늘린다

    데이터가 부족한 지역의 데이터를 더 확보해본다. 울산 데이터가 부족하니 울산의 데이터만 조금 더 확보하는 작업을 수행한다.(설문조사)

     

     

    그림 출처

    https://medium.com/greyatom/what-is-underfitting-and-overfitting-in-machine-learning-and-how-to-deal-with-it-6803a989c76

     

    댓글

    Designed by JB FACTORY