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

        'Tech Blog > Machine Learning' 카테고리의 다른 글

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

      티스토리툴바

      단축키

      내 블로그

      내 블로그 - 관리자 홈 전환
      Q
      Q
      새 글 쓰기
      W
      W

      블로그 게시글

      글 수정 (권한 있는 경우)
      E
      E
      댓글 영역으로 이동
      C
      C

      모든 영역

      이 페이지의 URL 복사
      S
      S
      맨 위로 이동
      T
      T
      티스토리 홈 이동
      H
      H
      단축키 안내
      Shift + /
      ⇧ + /

      * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.