~ 안에 기계 학습 , 분류는 주어진 데이터 세트를 여러 범주로 분류하는 프로세스입니다. 기계 학습에서는 분류 모델의 성능을 측정하기 위해 다음을 사용합니다. 혼동 행렬 . 이 튜토리얼을 통해 혼동 행렬의 중요성을 이해하세요.
혼동 매트릭스란 무엇입니까?
ㅏ 혼동 행렬 테스트 데이터 세트에 대한 기계 학습 모델의 성능을 요약하는 매트릭스입니다. 모델의 예측을 바탕으로 정확한 인스턴스와 부정확한 인스턴스의 수를 표시하는 수단입니다. 이는 각 입력 인스턴스에 대한 범주형 레이블을 예측하는 것을 목표로 하는 분류 모델의 성능을 측정하는 데 자주 사용됩니다.
매트릭스에는 테스트 데이터에 대해 모델이 생성한 인스턴스 수가 표시됩니다.
- 참양성(TP): 모델이 긍정적인 데이터 포인트를 정확하게 예측할 때 발생합니다.
- 참음성(TN) : 모델이 부정적인 데이터 포인트를 정확하게 예측할 때 발생합니다.
- 거짓양성(FP) : 모델이 긍정적인 데이터 포인트를 잘못 예측할 때 발생합니다.
- 거짓 네거티브(FN) : 모델이 부정적인 데이터 포인트를 잘못 예측할 때 발생합니다.
혼동 매트릭스가 필요한 이유는 무엇입니까?
분류 모델의 성능을 평가할 때 혼동 행렬이 필수적입니다. 이는 참양성, 참음성, 거짓양성, 거짓음성 예측에 대한 철저한 분석을 제공하여 모델의 내용을 더 깊이 있게 이해할 수 있도록 해줍니다. 회상, 정확성, 정밀도, 전반적인 효율성 클래스 구별에. 데이터세트에 고르지 않은 클래스 분포가 있는 경우 이 매트릭스는 기본 정확도 측정항목 이상으로 모델 성능을 평가하는 데 특히 유용합니다.
예제를 통해 혼동 행렬을 이해해 보겠습니다.
브라우저 설정은 어디에 있나요
이진 분류를 위한 혼동 행렬
Dog 이미지 또는 Not Dog 이미지를 갖는 이미지 인식을 위한 2X2 Confusion Matrix가 아래에 표시됩니다.
| 실제 | ||
|---|---|---|---|
개 | 개 아님 | ||
예측됨 | 개 | 참양성 | 거짓 긍정 |
개 아님 | 거짓 부정 | 참음성 |
- 참양성(TP): 예측값과 실제값이 모두 Dog인 총 개수입니다.
- 참음성(TN): 예측값과 실제값이 모두 Not Dog인 총 개수입니다.
- 거짓양성(FP): Dog라고 예측했지만 실제로는 Dog가 아닌 총 개수입니다.
- 거짓 부정(FN): 예측이 Not Dog인 총 개수이지만 실제로는 Dog입니다.
이진 분류 문제의 예
색인 | 1 | 2 | 삼 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
실제 | 개 | 개 | 개 | 개 아님 | 개 | 개 아님 | 개 | 개 | 개 아님 | 개 아님 |
예측됨 | 개 | 개 아님 | 개 | 개 아님 | 개 | 개 | 개 | 개 | 개 아님 | 개 아님 |
결과 | 도시 | FN | 도시 | 테네시 | 도시 | FP | 도시 | 도시 | 테네시 | 테네시 |
- 실제 개 수 = 6
- 개가 아닌 실제 개수 = 4
- 참양성 수 = 5
- 거짓 긍정 수 = 1
- 참음성 개수 = 3
- 거짓음성 개수 = 1
| 예측됨 | ||
|---|---|---|---|
개 | 개 아님 | ||
실제 | 개 | 참양성 | 거짓 부정 |
개 아님 | 거짓 긍정 | 참음성 |
혼동 행렬 데이터를 기반으로 한 측정항목
1. 정확성
정확도는 모델의 성능을 측정하는 데 사용됩니다. 전체 인스턴스에 대한 전체 올바른 인스턴스의 비율입니다.
위의 경우:
정확도 = (5+3)/(5+3+1+1) = 8/10 = 0.8
2. 정밀도
정도 모델의 긍정적인 예측이 얼마나 정확한지를 측정하는 것입니다. 이는 모델에 의해 만들어진 전체 긍정적 예측 수에 대한 참 긍정적 예측의 비율로 정의됩니다.
위의 경우:
정밀도 = 5/(5+1) =5/6 = 0.8333
3. 회상
상기하다 데이터 세트에서 모든 관련 인스턴스를 식별하는 분류 모델의 효율성을 측정합니다. 이는 참양성(TP) 인스턴스 수와 참양성 및 거짓음성(FN) 인스턴스의 합계 비율입니다.
위의 경우:
재현율 = 5/(5+1) =5/6 = 0.8333
메모: 스팸이 아닌 메시지를 스팸으로 잘못 분류하는 데 비용이 많이 드는 스팸 전자 메일 감지와 같은 시나리오에서 중요한 오탐지를 최소화하려는 경우 정밀도를 사용합니다. 그리고 의료 진단에서와 같이 일부 위양성이 발생하더라도 실제 양성 사례를 모두 식별하는 것이 중요한 경우처럼 위음성을 최소화하는 것이 필수적일 때 회상을 사용합니다.
4. F1-점수
F1 점수 분류 모델의 전반적인 성능을 평가하는 데 사용됩니다. 정밀도와 재현율의 조화 평균입니다.
위의 경우:
F1-점수: = (2* 0.8333* 0.8333)/( 0.8333+ 0.8333) = 0.8333
정보 검색 시스템과 같이 거짓 긍정과 거짓 부정을 최소화하는 것 사이의 절충이 필요한 경우 F1 점수를 사용하여 정밀도와 재현율의 균형을 맞춥니다.
5. 특이성:
특이성은 분류 모델 평가, 특히 이진 분류에서 또 다른 중요한 지표입니다. 부정적인 사례를 정확하게 식별하는 모델의 능력을 측정합니다. 특이성은 진음성율(True Negative Rate)이라고도 알려져 있습니다.
특이도=3/(1+3)=3/4=0.75
6. 제1종 오류와 제2종 오류
유형 1 오류
1종 오류는 모델이 긍정적인 사례를 예측했지만 실제로는 부정적인 경우에 발생합니다. 정밀도는 참양성과 거짓양성의 합에 대한 참양성의 비율이므로 거짓양성의 영향을 받습니다.
예를 들어, 법정 시나리오에서 종종 오탐(false positive)이라고도 불리는 유형 1 오류는 실제로는 혐의가 없는 개인에게 법원이 실수로 유죄를 선고할 때 발생합니다. 이 심각한 오류는 심각한 결과를 초래할 수 있으며, 문제의 범죄를 저 지르지 않은 무고한 사람이 부당한 처벌을 받게 될 수 있습니다. 법적 절차에서 유형 1 오류를 방지하는 것은 정의가 정확하게 구현되고 무고한 개인이 부당한 피해와 처벌로부터 보호되도록 하는 데 가장 중요합니다.
제2종 오류
유형 2 오류는 모델이 긍정적인 사례를 예측하지 못할 때 발생합니다. 재현율은 참양성과 거짓음성의 합에 대한 참양성의 비율이므로 거짓음성의 직접적인 영향을 받습니다.
의료 테스트의 맥락에서 종종 위음성(false negative)으로 알려진 제2종 오류는 진단 테스트가 실제로 질병을 앓고 있는 환자에게서 질병의 존재를 감지하지 못할 때 발생합니다. 이러한 오류의 결과는 심각하며 진단 및 후속 치료가 지연될 수 있습니다.
정밀도는 거짓양성을 최소화하는 데 중점을 두는 반면, 재현율은 거짓음성을 최소화하는 데 중점을 둡니다.
Python을 이용한 이진 분류를 위한 혼동 행렬 구현
1단계: 필요한 라이브러리 가져오기
파이썬 import numpy as np from sklearn.metrics import confusion_matrix,classification_report import seaborn as sns import matplotlib.pyplot as plt> 2단계: 실제 및 예측 레이블에 대한 NumPy 배열 만들기
파이썬 actual = np.array( ['Dog','Dog','Dog','Not Dog','Dog','Not Dog','Dog','Dog','Not Dog','Not Dog']) predicted = np.array( ['Dog','Not Dog','Dog','Not Dog','Dog','Dog','Dog','Dog','Not Dog','Not Dog'])> 3단계: 혼동 행렬 계산
파이썬 cm = confusion_matrix(actual,predicted)> 4단계: Seaborn 히트맵을 사용하여 혼동 행렬 플롯
파이썬 cm = confusion_matrix(actual,predicted) sns.heatmap(cm, annot=True, fmt='g', xticklabels=['Dog','Not Dog'], yticklabels=['Dog','Not Dog']) plt.xlabel('Prediction',fontsize=13) plt.ylabel('Actual',fontsize=13) plt.title('Confusion Matrix',fontsize=17) plt.show()> 산출 :
문자열을 int로 구문 분석
5단계: 혼동 지표를 기반으로 한 분류 보고서
파이썬 print(classification_report(actual, predicted))> 산출 :
정밀 리콜 f1 점수 지원 개 0.83 0.83 0.83 6 개가 아님 0.75 0.75 0.75 4 정확도 0.80 10 매크로 평균 0.79 0.79 0.79 10 가중 평균 0.80 0.80 0.80 10
다중 클래스 분류를 위한 혼동 행렬
이제 세 가지 클래스가 있다고 가정해 보겠습니다. 세 가지 클래스가 있는 이미지에 대한 3X3 혼동 행렬이 아래에 표시됩니다.
여기서 TP= 참양성, FP= 거짓양성, FN= 거짓음성입니다.
| 색인 | 실제 | 예측됨 | 도시 | FP | FN |
|---|---|---|---|---|---|
| 1 | 고양이 | 고양이 | 1 | 0 | 0 |
| 2 | 개 | 개 | 1 | 0 | 0 |
| 삼 | 말 | 개 | 0 | 1 | 1 |
| 4 | 고양이 | 고양이 | 1 | 0 | 0 |
| 5 | 개 | 개 | 1 | 0 | 0 |
| 6 | 고양이 | 고양이 | 1 | 0 | 0 |
| 7 | 개 | 개 | 1 | 0 | 0 |
| 8 | 말 | 말 | 1 | 0 | 0 |
| 9 | 말 | 말 | 1 | 0 | 0 |
| 10 | 고양이 | 개 | 0 | 1 | 1 |
- 참양성(TP): 8(1+1+0+1+1+1+1+1+1+0)
- 거짓 긍정(FP): 2(0+0+1+0+0+0+0+0+0+1)
- 거짓 부정(FN): 2(0+0+1+0+0+0+0+0+0+1)
세 가지 클래스에 대한 3X3 혼동 행렬이 아래에 표시됩니다.
| 예측됨 | |||
|---|---|---|---|---|
고양이 | 개 | 말 | ||
| 고양이 | 도시 | FP | FN |
개 | FP | 도시 | FN | |
말 | FN | FP | 도시 |
수업별 요약:
- 고양이의 경우: [TP=3,FP=0,FN=1]
- 지표 1: 참양성(고양이 실제, 고양이 예측)
- 색인 4: 참양성(고양이 실제, 고양이 예측)
- 색인 6: 참양성(고양이 실제, 고양이 예측)
- 색인 10: 거짓 부정(고양이 실제, 개 예측)
- 개용: [TP=3,FP=2,FN=0]
- 지표 2: 참양성(실제 개, 예측된 개)
- 지표 5: 참양성(실제 개, 예측된 개)
- 지표 7: 참양성(실제 개, 예측된 개)
- 색인 10: 거짓 긍정(고양이 실제, 개 예측)
- 지표 3: 거짓 긍정(실제 말, 개 예측)
- 말의 경우: [TP=2,FP=0,FN=1]
- 지표 8: 참양성(말 실제, 예측 말)
- 지표 9: 참양성(말 실제, 예측 말)
- 색인 3: 거짓 부정(말 실제, 개 예측)
그러면 혼동 행렬은 다음과 같습니다.
| 예측됨 | |||
|---|---|---|---|---|
고양이 날짜를 문자열로 변환 | 개 | 말 | ||
| 고양이 | TP(3) | FP(1) | FN(0) |
개 | FN(0) | TP(3) | FN(1) | |
말 | FN(1) | FP(1) | TP(2) |
Python을 이용한 이진 분류를 위한 혼동 행렬 구현
1단계: 필요한 라이브러리 가져오기
파이썬 import numpy as np from sklearn.metrics import confusion_matrix, classification_report import seaborn as sns import matplotlib.pyplot as plt> 2단계: 실제 및 예측 레이블에 대한 NumPy 배열 만들기
파이썬 actual = np.array( ['Cat', 'Dog', 'Horse', 'Cat', 'Dog', 'Cat', 'Dog', 'Horse', 'Horse', 'Cat']) predicted = np.array( ['Cat', 'Dog', 'Dog', 'Cat', 'Dog', 'Cat', 'Dog', 'Horse', 'Horse', 'Dog'])> 3단계: 혼동 행렬 계산
파이썬 cm = confusion_matrix(actual,predicted)> 4단계: Seaborn 히트맵을 사용하여 혼동 행렬 플롯
파이썬 cm = confusion_matrix(actual,predicted) sns.heatmap(cm, annot=True, fmt='g', xticklabels=['Cat', 'Dog', 'Horse'], yticklabels=['Cat', 'Dog', 'Horse']) plt.xlabel('Prediction', fontsize=13) plt.ylabel('Actual', fontsize=13) plt.title('Confusion Matrix', fontsize=17) plt.show()> 산출:
5단계: 혼동 지표를 기반으로 한 분류 보고서
파이썬 print(classification_report(actual, predicted))> 산출 :
정밀 리콜 f1 점수 지원 고양이 1.00 0.75 0.86 4 개 0.60 1.00 0.75 3 말 1.00 0.67 0.80 3 정확도 0.80 10 매크로 평균 0.87 0.81 0.80 10 가중 평균 0.88 0.80 0.81 10
결론
요약하자면, 혼동행렬은 분류 모델의 효율성을 평가하는 데 필수적인 도구입니다. 모델이 제공하는 참양성, 참음성, 거짓양성, 거짓음성 예측에 대한 철저한 분석을 통해 모델의 정확성, 정밀도, 재현율 및 인스턴스 분류의 일반적인 효율성에 대한 통찰력이 제공됩니다. 이 기사에서는 각 측정항목의 계산을 설명하는 예를 제공하고 그 중요성에 대해 논의했습니다. 또한 이진 및 다중 클래스 분류 시나리오를 위해 Python에서 혼동 행렬을 구현하는 방법을 보여주었습니다. 실무자는 특히 불균형한 클래스 분포를 처리할 때 이러한 측정항목을 이해하고 적용함으로써 모델 성능에 대해 충분한 정보를 바탕으로 결정을 내릴 수 있습니다.
혼동 행렬에 대한 FAQ
Q. 혼동행렬을 어떻게 해석하나요?
혼동 행렬은 참양성, 참음성, 거짓양성, 거짓음성 인스턴스를 나타내는 항목으로 분류 모델의 성능을 요약하여 모델 정확도와 오류에 대한 통찰력을 제공합니다.
Q. Confusion Matrix를 사용하면 어떤 장점이 있나요?
혼동 행렬은 분류 모델 성능에 대한 포괄적인 평가를 제공하여 참양성, 참음성, 거짓양성, 거짓음성에 대한 통찰력을 제공하고 기본 정확도 이상의 미묘한 분석을 지원합니다.
큐. 혼동 행렬 응용 프로그램의 예는 무엇입니까?
혼동 행렬은 의료 진단(질병에 대한 참/거짓 긍정/부정 식별), 사기 탐지, 감정 분석, 이미지 인식 정확도 평가 등 다양한 분야에서 응용됩니다.
Q. 혼동행렬도란 무엇인가요?
혼동 행렬 다이어그램은 분류 모델의 성능을 시각적으로 나타냅니다. 참양성, 참음성, 거짓양성, 거짓음성 값을 구조화된 행렬 형식으로 표시합니다.
Q. 혼동행렬의 세 가지 값은 무엇인가요?
혼동 행렬의 세 가지 값은 참양성(올바르게 예측된 양성 인스턴스), 참음성(올바르게 예측된 음성 인스턴스) 및 위양성(잘못 예측된 양성 인스턴스)입니다.