클래스 불균형에서 정확도만 보면 놓치는 것

페이지 정보

profile_image
작성자 관리자
댓글 0건 조회 51회 작성일 26-09-15 11:50

본문

분류 모델의 정확도가 높아도 중요한 소수 클래스를 하나도 찾지 못할 수 있습니다. 클래스 불균형에서는 전체 정답 비율이 어떤 표본 구성에서 나온 값인지 함께 읽어야 합니다.

간단한 가상 숫자로 이 문제를 확인하고 평가표에 무엇을 추가하면 좋은지 정리합니다.

클래스 불균형에서 정확도만 보면 놓치는 것 관련 설명용 삽화

AI 생성 삽화 · 클래스 불균형에서 정확도만 보면 놓치는 것 주제를 설명하는 이미지입니다.

핵심 정리
정확도와 함께 클래스별 표본 수와 오류를 확인합니다. 다수 클래스만 고르는 기준선과 비교하고, 재현율·정밀도·균형 정확도 등 목적에 맞는 지표를 함께 해석합니다.


1. 먼저 데이터의 클래스 수량을 적습니다

분류 결과를 평가하기 전에 각 클래스가 몇 개 있는지 확인합니다. 전체 표본 수만 적으면 어느 쪽이 평가를 많이 차지하는지 보이지 않습니다.

이 글에서는 두 클래스가 있는 간단한 가상 분류 문제를 사용합니다. 실제 서비스의 불량률이나 질병 비율 등을 나타내는 숫자가 아닙니다.

평가표 첫 줄에 클래스 이름과 표본 수를 적으면 정확도를 해석할 배경이 생깁니다. 학습 자료와 평가 자료의 비율이 같은지도 별도로 봅니다.

비율이 다르다는 사실만으로 어느 자료가 잘못되었다고 단정하지 않고 수집 목적과 실제 사용 환경을 확인합니다. 클래스 이름이 숫자로 저장되어 있다면 어떤 의미인지 매핑도 남깁니다.

소수 클래스가 무엇인지 착각하면 좋은 지표를 골라도 전혀 다른 대상을 평가할 수 있으므로 기본 정의부터 맞추는 것이 중요합니다.


2. 가상 기준선의 정확도를 계산해 봅니다

표본 천 개 중 A가 990개이고 B가 10개라고 가정합니다. 모든 표본을 A라고 답하는 규칙은 990개를 맞히므로 정확도가 99%입니다.

하지만 B는 한 개도 찾아내지 못합니다. 이 계산은 직접 만든 학습용 예시이며 특정 모델의 실험 결과가 아닙니다.

정확도 자체가 틀린 숫자는 아닙니다. 전체 표본 중 맞힌 비율이라는 질문에는 정확하게 답했지만 우리가 B를 찾고 싶은지에 대한 정보가 부족한 것입니다.

따라서 높은 숫자를 보고 바로 우수한 모델이라고 판단하기보다 무엇과 비교했는지 물어야 합니다. 복잡한 모델도 단순한 다수 클래스 기준선보다 실질적인 개선이 있는지 확인합니다.

평가 기록에 기준선을 함께 적으면 새 모델의 숫자가 어느 정도 의미를 가지는지 설명하기 쉽습니다. 모델 이름이나 학습 시간은 이 비교를 대신하지 못합니다.


3. 오류를 두 방향으로 나눠 읽습니다

A를 B로 잘못 예측한 경우와 B를 A로 놓친 경우는 다른 오류입니다. 어떤 오류가 더 중요한지는 서비스 목적에 따라 판단해야 합니다.

예를 들어 검토가 필요한 문서를 찾는 가상 도구라면 놓친 문서 수와 검토 대상으로 넘긴 양을 함께 볼 수 있습니다. 이는 특정 업무의 비용을 정하는 예시가 아니라 오류 방향을 나누는 연습입니다.

평가표에는 정답 클래스와 예측 클래스를 교차해서 적으면 됩니다. 표의 행과 열 중 어느 쪽이 정답인지 표시해야 해석을 뒤집지 않습니다.

전체 정확도가 비슷한 두 모델도 오류의 방향이 다르면 실제 사용 결과가 다를 수 있습니다. 운영자가 감당할 검토량이나 놓치면 생기는 영향을 논의할 때는 숫자의 의미를 먼저 공유합니다.

한 지표로 우열을 단정하기 전에 어떤 실수를 줄이려는지 문장으로 적어 보는 편이 좋습니다.


4. 클래스별 지표와 평균 방식을 확인합니다

재현율은 실제 해당 클래스 중 얼마나 찾았는지를, 정밀도는 해당 클래스로 예측한 것 중 얼마나 맞았는지를 보는 데 사용합니다. scikit-learn의 평가 문서는 클래스별 지표와 평균 방식을 구분하고 균형 정확도를 클래스별 재현율의 산술 평균으로 설명합니다.

앞의 가상 예에서 A의 재현율은 1이고 B의 재현율은 0이므로 기본 균형 정확도는 0.5입니다. 정확도 0.99와 다른 질문을 한 결과입니다.

평균이라는 이름만 보고 모두 같은 방식이라고 생각하지 않습니다. 클래스 수를 같은 비중으로 보는지, 표본 수를 반영하는지에 따라 해석이 달라집니다.

드문 클래스의 지표가 전체 평균에 가려지는지도 확인합니다. 예측한 양성이 전혀 없는 경우처럼 분모가 0인 상황은 라이브러리의 처리 설정을 확인하고 보고서에 남겨야 숫자를 잘못 이해하지 않습니다.


5. 결정 임계값은 평가 목적과 연결합니다

모델이 점수나 확률을 내는 경우 최종 클래스를 고르는 기준을 조정할 수 있습니다. 같은 점수라도 어디에서 나누는지에 따라 찾는 수와 잘못 경고하는 수가 달라집니다.

scikit-learn의 임계값 안내는 모델 학습과 임계값 조정을 구분하고 같은 학습 자료로 임계값까지 맞추는 과적합 위험을 설명합니다. 학습이 끝났다는 이유로 평가 자료를 계속 보며 기준을 고르면 최종 성능의 의미가 흐려질 수 있습니다.

실제 실험에서는 분리된 검증 절차를 정하고 최종 평가의 역할을 보존해야 합니다. 어떤 임계값을 선택했는지뿐 아니라 어떤 지표와 조건으로 골랐는지도 기록합니다.

이 글은 특정 숫자의 임계값을 권장하지 않습니다. 서비스에서 줄이고 싶은 오류와 허용 가능한 검토량을 먼저 정한 뒤 적절한 검증으로 선택해야 합니다.


6. 재표본화와 평가 자료의 역할을 구분합니다

불균형을 다루기 위해 학습 자료 구성이나 클래스 가중치를 바꾸는 실험을 할 수 있지만 그것만으로 문제가 해결되었다고 말할 수는 없습니다. 학습 방법을 바꾼 뒤에도 실제 목적에 맞는 평가가 필요합니다.

여기서 제안하는 기록 방식은 원래 자료 구성과 학습용으로 조정한 구성을 따로 남기는 것입니다. 평가표의 클래스 비율이 인위적으로 바뀌었다면 그 사실을 명확하게 표시해야 합니다.

앞의 가상 천 개 자료와 A·B가 같은 수인 자료에서 나온 정확도를 같은 조건의 결과처럼 비교하지 않습니다. 자료를 조정한 이유와 평가에 사용한 표본의 출처를 함께 남기면 해석이 쉬워집니다.

학습 단계의 보정과 서비스에서 들어오는 데이터의 구성은 별개라는 점을 기억합니다. 알고리즘을 추가하는 일보다 실험 조건을 구분하는 일이 먼저 필요한 경우도 있습니다.


7. 최종 보고서에는 숫자와 조건을 같이 남깁니다

결과를 공유할 때는 전체 정확도만 크게 적기보다 클래스별 표본 수와 핵심 오류, 기준선, 선택한 임계값을 함께 제시합니다. 어떤 기간과 어떤 자료에서 평가했는지도 적으면 이후 비교가 쉬워집니다.

특정 클래스의 표본이 아주 적으면 몇 건의 결과가 지표를 크게 바꿀 수 있다는 점도 확인합니다. 높은 점수가 나왔다는 이유로 다른 기간과 환경에서도 같은 결과를 보장하지 않습니다.

운영 후에는 입력 구성과 오류 양상이 달라졌는지 확인할 계획이 필요합니다. 학습용 발표라면 직접 만든 가상 계산과 실제 실험 결과를 분명하게 나누어 표시합니다.

클래스 불균형을 이해하는 핵심은 정확도를 버리는 데 있지 않습니다. 정확도가 답하는 질문을 알고, 놓친 질문을 다른 지표와 자료로 보완하여 모델의 사용 목적에 맞게 평가하는 데 있습니다.


8. 자주 묻는 질문

Q1. 불균형 데이터에서는 정확도를 쓰면 안 되나요?

정확도도 전체 정답 비율을 보여 주는 정보입니다. 다만 클래스별 수량과 오류, 목적에 맞는 다른 지표를 함께 확인해야 합니다.

Q2. 균형 정확도가 높으면 무조건 좋은 모델인가요?

균형 정확도도 특정 관점의 요약값입니다. 잘못 경고한 수나 운영상 영향까지 모두 설명하지 않으므로 다른 지표와 함께 판단합니다.

Q3. 소수 클래스를 많이 찾으면 성공인가요?

찾은 양뿐 아니라 잘못 분류한 양도 확인해야 합니다. 어떤 오류를 줄이려는지와 후속 검토 부담을 함께 고려합니다.

Q4. 임계값은 테스트 결과를 보고 계속 바꿔도 되나요?

최종 평가 자료를 반복해서 선택에 사용하면 평가의 독립성이 약해집니다. 임계값을 고르는 검증 과정과 최종 평가를 구분하는 편이 좋습니다.


참고 자료

댓글목록

등록된 댓글이 없습니다.