ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • R 머신러닝 지도학습의 모형 성능 평가
    머신러닝 with R 2019. 8. 7. 18:50

    모형 평가

    만들어진 모형의 성능을 평가할 때, 일반적으로 테스트 테이터와 훈련 데이터를 나누게 된다.

    그렇다면 왜 굳이 데이터를 분할하는지에 대해서도 생각해 볼 필요가 있다.

    이는 학생이 시험을 볼 때와 비슷하다.

    학생이 공부를 할 때 공부한 것을 바탕으로 연습문제를 풀어본다. 

    그 연습문제들이 실제 시험을 볼 때 똑같이 나온다면 답만 외운 학생들이 시험을 더 잘 볼 수도 있다.

    그렇기에 시험을 볼 때는 그 연습 문제가 절대 똑같이 나오지 않는다.

    문제가 응용되거나 조금씩 바뀌거나 하는 등 처음 보는 문제들로 학생의 실력을 평가하는 것이다.

     

     

     

    Training Data & Test Data

    머신러닝에서도 마찬가지이다. 

    기존에 학습하지 않았던 데이터들로 평가해야 모형의 성능을 더욱 정확하게 평가할 수 있다.

    우리가 모형을 만든 데이터셋을 가지고 정확도를 평가하게 되면 일반적으로 테스트 셋 보다 무조건 높게 나타나게 된다.

    우리가 모델을 만들 때 썼던 것들이기 때문에 머신이 그 답들을 이미 알고 있기 때문이다.  하지만 우리가 적용할 데이터는 기존에 풀어보지 못한 케이스들이기 때문에, 학습시키지 않은 데이터들을 넣을 때 정확도가 중요한 것이다.

     

     

    만약 학습 데이터(훈련 데이터)셋 그리고, 테스트 혹은 검증용 데이터셋을 이용해 성능을 평가했을 때,

    전자에서는 98%의 정확도를 보였지만 후자에서는 60~70%의 정확도만 보인다면

    즉, 학습 데이터셋으로 평가했을 때와 테스트 데이터셋으로 평가했을 때 평가 지표의 차이가 크다면

    학습 데이터에 overfitting 된 경우라고 볼 수 있다. 

    이런 상황에서는 sampling 했다면 케이스를 더 늘리거나, 모델 자체를 다른 모델로 바꿔보아야 한다.

    마지막으로, 머신러닝은 보통 과거의 데이터를 가지고 현재 혹은 가까운 미래를 예측한다. 학습 데이터와 테스트 데이터를 사용할 때  시간적인 차이가 생겼다면, 혹시 환경이 바뀌었는지를 확인해보아야 한다.

     

     

    정리를 하지면, 만들어진 모형의 정확한 평가를 위해서는 다음과 같이 데이터 셋을 분할할 수 있다.

     

    • 훈련용 데이터: 모델 생성에 사용한 데이터
    • 테스트용 데이터: 모델을 최적화하기 위한 데이터
    • 검증용 데이터: 모형의 성능평가

    최근에는 데이터가 부족할 때 교차 검증(K-fold)이라는 평가 방법을 사용하기도 한다.

    이는 먼저 전체 데이터 셋을 훈련용 데이터셋과 테스트 데이터셋으로 분할한 후에

    훈련용 데이터셋을 k개의 fold로 나누고, (k-1) 개의 테스트 fold와 1개의 검증용 fold로 지정한다.

    그리고 총 k회 동안 검증을 하는데, 각 검증마다 test fold를 다르게 지정하여 성능을 측정하는 방법이다.

     

     

    이렇게 훈련용 데이터와 테스트용 데이터를 분할하는 모형을 분류 모형이라고 하며, 성능을 평가할 때 

    보통 확률 값이 50% 이상이면 1(T) 일 확률로 설정하는데, 이것은 평가자에 따라 30%나 70% 등 변경할 수 있으며

    이 확률 값으로 결과가 바뀔 수 있다.

     

    실제값과 예측값의 범주를 기준으로 교차 표(confusion Matrix)를 작성할 수 있다.

     

    어떤 사람이 어떤 상품을 구매한다고 할 경우 1(positive), 구매하지 않을 경우 0(negative) 라는 값을 준다고 하자.

    구매하지 않을 거라고 예측(Negative)했을 때 실제로도 구매하지 않는 경우(True Negative)가 있고, 실제로는 구매를 선택했을 경우(False Negative)가 있다.

    반대로, 구매할 거라고 예측(Positive)했을 때에는 실제로는 구매하지 않을 경우(False Positive)와 실제로도 구매할 경우(True Positive)가 있다. 

     

     

     

     

    정분류율, 오분류율, 정밀도, 재현율

    위 교차표로 성능을 평가할 때 정분류율(Accuracy), 오분류율(Error rate), 정밀도(Pricision), 재현율(Recall)을 통해 파악한다.

     

    • 정분류율 = [ (실제 0, 예측 0) 빈도 + (실제 1, 예측 1)의 빈도 ] ÷ 전체 빈도  ==> 전체 관측치 중 실제 값과 예측한 값이 일치한 정도. 전체 정답 중 몇 개를 맞추었는가?
    • 오분류율 = 1 - 정분류율 =  [ (실제1, 예측0) 빈도 + (실제0, 예측1)의 빈도 ] ÷ 전체빈도 ==> 얼마나 틀렸는가?
    • 정밀도 =  (실제1, 예측1)의 빈도 ÷ 예측 1의 빈도 ==> 예측 모형이 맞다고 평가 한 것 중에서 실제로 얼마나 맞추었는가? 
    • 재현율 = (실제1, 예측1)의 빈도 ÷ 실제 1의 빈도 ==> 실제 값이 positive인 값들 중 예측값이 적중한 정도. 실제 정답 중, 모델이 얼마나 맞추었는가?

    정밀도와 재현율의 차이 [참고] https://en.wikipedia.org/wiki/Precision_and_recall

     

    또한, 매우 희소한 케이스를 예측을 할 때에는 정분류율이 의미가 없을 수 있는데, 이럴때는 F1 score를 사용한다.

    F1 socre란 정밀도와 재현율의 조화 평균이라고 할 수 있다. 예를 들어 이탈 10, 유지 990 인 경우에 모두 이탈 안함으로 예측하여 정분류율을 99% 정한다.

     

     

     

     

    ROC Curve 

    모델의 정확도를 비교하는 지표로 ROC(Receiver Operating Characteristic Curve)가 있다.

    이 곡선은 모델의 정확도를 비교하는 지표로서 사용되며, False positive rate(=FPR = 1-특이도 = 0에 대해 1로 잘못 예측한 비율)을 x축으로, True positive rate(= TPR = 민감도 = 1에 대해 1로 예측한 비율)을 y 축으로 한 그래프이다. 

    x와 y는 서로 반비례적인 관계에 있다. 

     

    ROC curve로 정확도를 비교할 때에는 AUR (Area Under a ROC Curve)를 비교한다. 곡선의 아랫부분의 면적이 넓을수록, 즉 이 곡선의 면적이 1에 가까울수록 정확도가 높아지는 것이다. 

     

     

     

     

    추정 모형에서의 성능평가

    실제값과 예측 값의 차이 즉, 오차(= 잔차)가 작을수록 좋게 평가한다. 

    • RMSE(Root Mean Square Error) : 편차 제곱의 평균에 루트를 씌운 값. 표준편차를 기준으로 하기 때문에 큰 에러를 줄이는 방향으로 학습을 한다. EX) 정답이 9인 경우 9, 9, 6, 9 보다 8, 8, ,8, 8을 더 좋게 평가
    • MAE(Mean Absolute Error): 편차에 절댓값을 씌운 것의 평균. 단순 편차의 절댓값의 평균이라 RMSE와 달리 작더라도 여러 군데의 에러에 더 민감. EX) 정답이 9인 경우 8,8,8,8 보다 9,9,6,9를 더 좋게 평가
    • ad R^2는 설명변수가 증가함에 따라 R^2도 증가하는 단점을 보완한 것으로, 설명변수의 개수가 다른 두 개의 모델을 비교할 경우에 유용함. 

     

    [참조] https://images.squarespace-cdn.com/content/58c95854c534a56689231265/1531151917631-MP881P65V9DJT0D4G0X9/Figura0.jpg?content-type=image%2Fjpeg

     

     

    [참조] https://newsight.tistory.com/30?category=46353

     

    Regression 성능 평가, 회귀분석 결과 확인

    상관계수(Correlation coefficient)는 두 변수간의 연관된 정도를 나타냄. 다음 둘다 오차율을 나타내는 값임. (둘다 오차의 정도에대한 값이므로, 당연히 0에 가까울수록 좋음) Root Mean Square Error (RMSE) :..

    newsight.tistory.com

    [참조] 실무에서 써먹는 머신러닝 with R

    반응형

    댓글

Designed by Tistory.