머신 러닝에서 혼란 매트릭스를 이해하기 [놀랍게도]
게시 됨: 2020-12-07기계 학습은 데이터 처리 및 데이터 모델링에서 의미 있는 통찰력을 도출하는 데이터 처리를 축적하는 포괄적인 용어입니다. 데이터 모델링을 마친 후에는 성능 평가를 위해 모델을 측정해야 하며 기타 산업 기반 매개변수와 가장 일반적인 메트릭 중 하나는 Confusion Matrix입니다.
목차
Confusion Matrix 란 무엇이며 왜 사용됩니까?
출력 클래스가 두 개 이상일 수 있는 분류 문제에 사용되는 성능 메트릭이며 이 매트릭스는 해당 입력과 관련된 실제 값이 있는 모델에 의한 예측 값의 모든 조합을 나타냅니다. 정의로 보면 쉬워 보이지만, 더 가치 있는 매개변수를 도출해 내기 위해 앞으로 나아갈수록 특정 위치에 어떤 매개변수가 가장 적합한지 혼동이 일어나기 때문에 '혼돈 행렬'이라고 합니다.
분류 문제가 매우 불균형하고 한 클래스가 다른 클래스보다 우세한 곳에서 사용됩니다. 이러한 시나리오에서 모델의 정확도가 99%로 최고점에 달하는 것을 보고 놀랄 수 있지만 실제로는 모델이 지배적인 클래스에 크게 편향되어 있습니다. 소수 집단에 대한 예측을 얻을 가능성은 거의 없습니다. 따라서 이러한 불균형 데이터 세트를 테스트하기 위해 혼동 행렬을 고려합니다.
혼동 행렬의 구조
행렬의 크기는 출력 클래스의 수에 정비례합니다. 열 머리글을 실제 값으로 가정하고 행 머리글을 모델 예측으로 가정하는 정방형 행렬입니다. 모델에 의해 참이고 참으로 예측된 값은 참양성(TP) , 올바른 음수 예측은 참음성(TN) , 음수였지만 참으로 예측된 값은 거짓양성(FP) 및 음수로 예측된 양수 값은 다음과 같습니다. 거짓 부정(FN) . 이 이미지를 보십시오:

읽기: 기계 학습의 분류 알고리즘 유형
우리는 이것으로부터 무엇을 배울 수 있습니까?
우리가 이 행렬로 무엇을 할 수 있는지에 대한 유효한 질문이 생깁니다. 이에 기반한 몇 가지 중요한 용어가 있습니다.

- 정밀도: 모델에 의해 올바른 것으로 식별되고 문제 설명 솔루션과 관련된 값의 부분입니다. 우리는 또한 이것을 값으로 인용할 수 있는데, 이는 모델이 제공한 총 긍정적인 결과의 일부이며 긍정적입니다. 따라서 공식을 TP/(TP + FP)로 지정할 수 있습니다.
- 회상: 모델에 의해 양수로 올바르게 식별되는 값의 부분입니다. True Positive Rate 또는 Sensitivity라고도 합니다. 공식은 TP/(TP+FN)로 나옵니다.
- F-1 Score: Precision과 Recall의 조화 평균입니다. 이는 두 모델을 비교하는 경우 이 메트릭이 극한 값을 억제하고 False Positive와 False Negatives를 동시에 고려한다는 것을 의미합니다. 2*Precision*Recall/(Precision+Recall)로 인용할 수 있습니다.
- 정확도: 양수인지 음수인지에 관계없이 올바르게 식별되는 값의 부분입니다. 여기에는 True Positive와 True Negative가 모두 포함된다는 의미입니다. 이에 대한 공식은 (TP+TN)/ (TP+TN+FP+FN)입니다.
모든 용어 중에서 정밀도와 재현율이 가장 널리 사용됩니다. 그들의 절충은 예측의 성공에 대한 유용한 척도입니다. 원하는 모델은 높은 정밀도와 높은 재현율을 가져야 하지만 이는 완벽하게 분리 가능한 데이터에서만 가능합니다. 실제 사용 사례에서 데이터는 매우 조직화되지 않고 불균형합니다.

Python에서 Confusion Matrix용 코드를 만드는 방법은 무엇입니까?
sklearn 라이브러리는 모든 기계 학습 작업을 최대한 정확하게 수행할 수 있는 다양한 기능을 제공하며 거의 모든 것이 여기에 구현되었습니다. 모든 가져오기 문이 이미 완료된 유명한 Iris 데이터 세트를 고려하면 혼동 행렬에 대한 코드는 다음과 같습니다.
홍채 = 데이터 세트.load_iris()
X = 홍채.데이터
y = 홍채.대상
class_names = iris.target_names
X_train, X_test, y_train, y_test = train_test_split (X, y, random_state = 0 )
분류 자 = svm.SVC (커널 = '선형' , C = 0.01 ) . 적합(X_train, y_train)
plot_confusion_matrix(분류기, X_test, y_test, display_labels = class_names, cmap = plt . cm . Blues)

참고: 이것에 의해 반환된 행렬은 반대 면을 가지고 있습니다. 여기 왼쪽에는 실제 값이 있고 위쪽에는 예측 값이 있습니다. 혼동을 피하려면 수동으로 계산하는 대신 이 기능을 실행하여 자세한 요약(분류 보고서)을 얻으십시오.

print(classification_report(y_true=y_test, y_pred=y_pred, target_names=class_names))

더 읽어보기: 딥 러닝 알고리즘
어느 것을 어디에서 사용할 것인가?
이것은 데이터를 모델링하는 동안 발생하는 가장 일반적인 질문이며 솔루션은 문제의 설명 영역에 있습니다. 다음 두 가지 경우를 고려하십시오.
- 그 사람이 심장 마비에 걸릴지 여부를 예측한다고 가정합니다. 이 시나리오에서는 오분류를 허용할 수 없으며 모든 예측이 정확해야 합니다. 즉, False Negatives의 비용이 높기 때문에 공격을 받기 쉬운 사람이지만 안전한 것으로 예측되었습니다. 이러한 경우는 피해야 합니다. 이러한 상황에서는 재현율이 높은 모델이 필요합니다.
- 검색 엔진이 모델에 의해 모두 긍정적인 것으로 예측된 임의의 결과를 제공했다고 가정하면 사용자가 이에 의존할 가능성은 거의 없습니다. 따라서 이 시나리오에서는 사용자 경험이 향상되고 웹 사이트가 올바른 방향으로 성장하도록 고정밀 모델이 필요합니다.
결론
정오분류표는 분류 모델을 평가하는 훌륭한 방법입니다. 모델이 제공된 입력을 기반으로 클래스를 얼마나 정확하게 분류했는지와 이 클래스가 어떻게 잘못 분류될 수 있는지에 대한 실제 통찰력을 제공합니다.
기계 학습에 대해 자세히 알아보려면 IIIT-B 및 upGrad의 기계 학습 및 AI PG 디플로마를 확인하세요. 이 PG 디플로마는 일하는 전문가를 위해 설계되었으며 450시간 이상의 엄격한 교육, 30개 이상의 사례 연구 및 과제, IIIT- B 동문 자격, 5개 이상의 실용적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.
