머신러닝 기초4

2020. 8. 14. 21:28

모델(모형)의 적합성 평가와 실험 방식

 - MSE: 모델의 성능을 평가하는 한 지표이며, MSE가 낮을 수록 모델성능이 뛰어남을 의미한다

 - 복잡한 모델일수록 학습데이터에 대한 MSE는 감소하지만 검증데이터에 대한 MSE는 일정시점이후 증가한다

   이는 설계된 모델이 학습집합에 과적합되어, 새로운 데이터인 검증데이터에 대한 예측률(적중률)이 떨어지게 된다.

   (즉 학습데이터에 대해 과적합(over fitting)되어 검증데이터에 대한 분산이 높아지게 된다)

 - 낮은 복잡도를 가지는 모델의 경우 편파성이 높아져 높은 MSE를 가진다.(이런경우를 fitting이 덜되었다고 한다, under fitting)


 - 따라서 시험설계를 할때, 과적합을 방지하기 위해 주어진 데이터를 학습/검증/테스트 데이터로 나눈다(보통 5:3:2로 나눈다고 한다)

   (주어진 데이터를 분류하여, 시험단계에서 설계된 모델이 과적합되었는지 검증한다)

     학습데이터: 모델 f를 추정하기위해(설계하기위해) 사용하는 데이터

     검증데이터: 추정한 모델 f가 적합한지 검증하기 위해 사용하는 데이터

     테스트데이터: 최종적으로 모델의 성능을 평가하기위해 사용하는 데이터

      -> 학습과 검증데이터를 분류하지않고 그냥 학습데이터로만 사용하는 경우도 있지만, 테스트전에 모델의 성능을 확인하기 위해 보통 학습/검증데이터로 분류한다.

 - 보통 모델설계시, 주어진 데이터가 적기 때문에 학습/검증/테스트 데이터를 random으로 분류하고 테스트를 진행할 때마다 같은 모델의 성능이 달라진다.

   그래서 테스트를 여러번 반복하기도 한다.


 - 설계 및 테스트과정은 다음과 같다

    1. 데이터분할: 주어진 데이터를 학습/검증/테스트 데이터로 나눔

    2. 모델학습: 학습 데이터를 이용하여 모델을 학습함

    3. 모델선택: 검증 데이터를 이용하여 각 모델의 성능을 비교하여 적합한 모델을 선정

    4. 최종 성능 지표 도출: 테스트 데이터를 사용하여 모델선택단계에서 선정한 모델의 성능을 계산함


 - K-Fold Cross Validation(K-Fold 교차검증)

    모델의 적합성을 보다 객관적으로 평가하기 위한 방법

    데이터를 K개의 그룹로 나누어, 그 중 1개를 검증데이터로 선정하고, 나머지 K-1개를 학습데이터로 분류하여 모델을 설계한다.

    그이후에는 이전과 다른 1개의 데이터그룹을 검증데이터로 선정하고, 나머지 K-1개를 학습데이터로 분류하여 모델을 설계한다.

    이러한 과정을 K번 반복하고, 각 K개의 검증결과(성능지표)를 평균으로 계산하여 모델의 적합성을 평가한다


 - LOOCV(Leave-One-Out Cross Validation)

    데이터의 수가 적을 때 사용하는 검증방법

    총 n개의 데이터가 주어졌을 때, 1개의 데이터를 제외하고 모델을 설계하며, 이 모델이 그 1개의 데이터에 대해 예측한다.

    이과정을 n번 반복하여, 각 예측 성능을 평균으로 계산하여 모델의 최종성능지표를 도출하는 방법


    ** 즉 데이터가 많을때는 학습/검증/테스트 데이터, 애매할때는 K-Fold Cross Validation, 적을때는 LOOCV를 사용하는 것이 좋다


 - 데이터의 분석과정

    보통 주어진 데이터는 머신러닝에 사용할 수 있을 정도로 정형화되지 않은 row데이터이다.

    이 데이터를 모델에 적용할 수 있도록 전처리(preprocessing, feature engineering) 과정을 수행해 행과 열로 이루어진 데이터로 만든다.

    이후 실험설계를 진행하여 모델을 만들며, 모델이 잘못되었다고 판단될경우 처음부터 다시 진행한다


    전처리: 주어진 row 데이터를 모델링할 수 있도록 데이터를 병합 및 파생변수를 생성하는 과정

            분석의 목적에 맞게 특징을 선정하는 것이 중요하다 

    시험설계: 시험설계에서 테스트 데이터는 실제로 우리가 모델을 적용한다는 가정하에 선정해야하며, 학습/검증 데이터와는 독립적으로 분류해야한다

      1. 모델의 동작단계가 나뉘어 있을 경우, 이전단계에서 수행하여 도출된 예측데이터는 다음 단계에서 사용할 수 있지만, 현재단계에서 예측되지 않은 다음단계의 예측데이터를 사용하면 안된다.

         이런 경우 주어진 데이터를 학습/검증/테스트로 분류할 수 없다.

      2. 전처리과정을 거진 전체 데이터에서 특정 특징을 가지는 소수의 데이터를 모델링에 반영하기위해(보통 모델링시, 소수의 데이터는 잘 반영되지 않는다),

         전체 데이터를 학습/검증/테스트 데이터로 나누고, 분류된 학습데이터 중 소수의 데이터를 부풀리는데, 이때 검증 밎 테스트 데이터의 소수데이터를 부풀리면 안된다.

         (왜냐하면 모델을 실제로 적용했을 때는 소수의 데이터는 부풀려 주어지지 않기 때문이다)



'Study > Deep_Machine learning' 카테고리의 다른 글

회귀분석  (0) 2020.08.17
머신러닝 기초5  (0) 2020.08.17
머신러닝 기초3  (0) 2020.08.11
머신러닝 기초2  (0) 2020.07.31
머신러닝 기초1  (0) 2020.07.26

+ Recent posts