• 티스토리 홈
  • 프로필사진
    sue991
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
sue991
  • 프로필사진
    sue991
    • 전체 글 보기 (4)
      • Tech Blog (4)
        • Python (2)
        • Machine Learning (1)
        • Linux (1)
      • In my mind (0)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • Micro vs Macro Average
        2022년 08월 18일
        • sue991
        • 작성자
        • 2022.08.18.:58

        인공지능 모델을 평가하는 대표적인 평가방법 중 하나는 F1-score이다.

        F1-score란 precision과 recall의 조화평균이다.

        $$ F1 Score = 2* \frac {Precision*Recall}{Precision+Recall}$$

        sklearn의 classification report 모듈을 사용한다면 내가만든 모델의 결과를 쉽게 확인할 수 있다.

        >>> from sklearn.metrics import classification_report
        
        >>> y_true = [0, 1, 2, 2, 2]
        >>> y_pred = [0, 0, 2, 2, 1]
        >>> target_names = ['class 0', 'class 1', 'class 2']
        >>> print(classification_report(y_true, y_pred, target_names=target_names))
        
                      precision    recall  f1-score   support
        
             class 0       0.50      1.00      0.67         1
             class 1       0.00      0.00      0.00         1
             class 2       1.00      0.67      0.80         3
        
            accuracy                           0.60         5
           macro avg       0.50      0.56      0.49         5
        weighted avg       0.70      0.60      0.61         5

        이때, precision, recall, f1 score는 점수, support 는 개수, accuracy는 평균인 것은 알겠다. 그런데, macro avg와 weighted avg는 처음보는 사람이 있을 것이다.

        인공지능에서 분류(classification) task에서는 데이터 불균형(Data-imbalanced) 문제가 있을 가능성이 크다.
        다시말해, 각 클래스 마다 데이터의 개수 차이가 많이 나는 것이다. 따라서 단순히 각 데이터마다의 정확도를 따져 평균을 구하는 것과, 각 class 별 정확도를 구한 것의 평균을 내는 것에는 큰 차이가 있을 것이다.

        Macro Average

        macro average는 각 클래스마다 개수를 고려하지 않고, 모든 클래스의 평균의 평균을 내는 방법이다.
        즉 위 결과에서 각 클래스 별 f1-score의 평균을 내는 것이다.
        $$ macro avg = \frac {0.67 + 0.00 + 0.80}{3} = 0.49 $$

        이 결과는 최종 평가점수에 데이터 불균형 문제를 전혀 반영하지 않고 있다.
        따라서 데이터 불균형 문제가 심할수록 그 점을 반영하지 못하기 때문에 평가 점수의 신뢰성이 낮을 가능성이 크다.

        Micro Average

        micro average는 각 class의 평균이 아닌 모든 데이터의 평균을 내는 방법이다.
        따라서 각 데이터가 잘 맞췄나를 보는 것이다. 따라서 위 결과에서는 accuracy와 같다고 할 수 있다.

         

         

        정리하자면 데이터 불균형 문제가 심한 데이터일 수록 macro보다는 micro average를 이용하는 것이 더 바람직하다고 볼 수 있다.

         

        더 자세한 내용은 아래 블로그 참조:
        Micro, Macro & Weighted Averages of F1 Score, Clearly Explained

        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바