본문 바로가기

ChatGPT/인공지능

[Python][인공지능] 혼동 행렬, 정확도, 정밀도, 재현율 예시

반응형

1. 소개

1.1 정확도 계산이란?

정확도 계산은 인공지능 모델이 예측한 결과와 실제 값 사이의 일치 여부를 평가하는 방법입니다. 이는 모델의 성능을 정량화하고 개선하기 위해 중요한 지표입니다.

1.2 정확도 계산의 중요성

정확도 계산은 모델의 성능을 평가하고 비교함으로써 모델의 신뢰성을 확인하는 데 도움을 줍니다. 제대로 작동하지 않는 모델은 잘못된 예측을 할 수 있으며, 이는 비용이 크거나 위험한 결과로 이어질 수 있습니다. 따라서 정확한 분류 기능을 가진 모델을 개발하고 평가하기 위해 정확도 계산은 필수적입니다.

이제 다음으로 혼동 행렬에 대해 알아보겠습니다.

2. 혼동 행렬

2.1 TP, FP, TN, FN의 개념 설명

혼동 행렬은 분류 모델의 예측 결과를 비교하여 실제 값과의 일치 여부를 표현하는 행렬입니다. 혼동 행렬은 다음과 같은 4가지 항목으로 구성됩니다:

  • TP (True Positive): 실제 양성 및 예측 양성인 샘플의 수
  • FP (False Positive): 실제 음성이지만 예측 양성인 샘플의 수
  • TN (True Negative): 실제 음성 및 예측 음성인 샘플의 수
  • FN (False Negative): 실제 양성이지만 예측 음성인 샘플의 수

TP는 모델이 제대로 양성으로 예측한 샘플의 수를 나타내며, FP는 모델이 잘못된 양성으로 예측한 샘플의 수입니다. TN은 모델이 제대로 음성으로 예측한 샘플의 수이고, FN은 모델이 잘못된 음성으로 예측한 샘플의 수입니다.

2.2 혼동 행렬 계산 방법 소개

혼동 행렬을 계산하는 방법은 다음과 같습니다:

  1. 모델로부터 예측 결과를 얻습니다.
  2. 예측 결과와 실제 값을 비교하여 TP, FP, TN, FN의 개수를 계산합니다.
  3. 이를 바탕으로 혼동 행렬을 구성합니다.

2.3 파이썬 코드 예시

from sklearn.metrics import confusion_matrix

# 실제 값과 예측 결과를 준비합니다.
y_true = [1, 0, 1, 0, 1]
y_pred = [1, 1, 0, 0, 1]

# 혼동 행렬을 계산합니다.
cm = confusion_matrix(y_true, y_pred)
print(cm)

위의 코드는 사이킷런의 confusion_matrix 함수를 사용하여 혼동 행렬을 계산하는 예시입니다. y_true는 실제 값, y_pred는 예측 결과가 있는 리스트로 주어집니다. 혼동 행렬을 계산한 결과를 cm 변수에 저장하고 출력합니다.

다음으로 정확도에 대해 알아보겠습니다.

3. 정확도

3.1 정확도의 의미와 필요성 설명

정확도는 분류 모델이 얼마나 정확하게 예측하는지를 나타내는 평가 지표입니다. 정확도는 전체 샘플 중에서 올바르게 예측한 샘플의 비율을 나타내며, 높을수록 모델의 성능이 좋다고 평가됩니다.

정확도는 분류 모델의 다양한 평가 지표 중에서 가장 직관적으로 이해하기 쉽고 널리 사용되는 지표입니다. 하지만 데이터의 불균형이 있을 경우, 즉 어떤 클래스가 다른 클래스보다 훨씬 많거나 적을 경우에는 정확도만으로 모델의 성능을 평가하기에는 부족할 수 있습니다.

3.2 정확도 계산 공식 소개

정확도는 다음과 같은 공식을 사용하여 계산할 수 있습니다:

정확도 = (TP + TN) / (TP + FP + TN + FN)

위에서 소개한 TP, FP, TN, FN은 혼동 행렬에서 얻을 수 있는 값을 의미합니다. TP와 TN은 예측이 일치하는 샘플의 개수이고, FP와 FN은 예측이 일치하지 않는 샘플의 개수입니다.

3.3 파이썬 코드 예시

from sklearn.metrics import accuracy_score

# 실제 값과 예측 결과를 준비합니다.
y_true = [1, 0, 1, 0, 1]
y_pred = [1, 1, 0, 0, 1]

# 정확도를 계산합니다.
accuracy = accuracy_score(y_true, y_pred)
print(accuracy)

위의 코드는 사이킷런의 accuracy_score 함수를 사용하여 정확도를 계산하는 예시입니다. y_true는 실제 값, y_pred는 예측 결과가 있는 리스트로 주어집니다. 정확도를 계산한 결과를 accuracy 변수에 저장하고 출력합니다.

이제 다음으로 정밀도에 대해 알아보겠습니다.

4. 정밀도

4.1 정밀도의 의미와 필요성 설명

정밀도는 모델이 Positive로 예측한 샘플 중에서 실제로 Positive인 샘플의 비율을 나타내는 평가 지표입니다. 정밀도는 양성 클래스에 대한 예측의 정확성을 평가하기 위해 사용됩니다.

정밀도가 높을수록 모델이 양성으로 예측한 샘플 중에서 실제로 양성인 경우가 많으므로, 모델의 성능이 더욱 우수하다고 평가됩니다. 하지만, 정밀도가 높다고 해서 모델이 다른 클래스를 정확하게 예측하는 것을 보장하지는 않습니다.

4.2 정밀도 계산 공식 소개

정밀도는 다음과 같은 공식을 사용하여 계산할 수 있습니다:

정밀도 = TP / (TP + FP)

TP는 True Positive, FP는 False Positive를 의미합니다.

4.3 파이썬 코드 예시

from sklearn.metrics import precision_score

# 실제 값과 예측 결과를 준비합니다.
y_true = [1, 0, 1, 0, 1]
y_pred = [1, 1, 0, 0, 1]

# 정밀도를 계산합니다.
precision = precision_score(y_true, y_pred)
print(precision)

위의 코드는 사이킷런의 precision_score 함수를 사용하여 정밀도를 계산하는 예시입니다. y_true는 실제 값, y_pred는 예측 결과가 있는 리스트로 주어집니다. 정밀도를 계산한 결과를 precision 변수에 저장하고 출력합니다.

이제 다음으로 재현율에 대해 알아보겠습니다.

5. 재현율

5.1 재현율의 의미와 필요성 설명

재현율은 실제로 Positive인 샘플 중에서 모델이 정확하게 Positive로 예측한 샘플의 비율을 나타내는 평가 지표입니다. 재현율은 모델이 양성 클래스를 놓치지 않고 잘 찾아내는 능력을 평가하기 위해 사용됩니다.

재현율이 높을수록 모델이 실제 양성인 샘플을 더 잘 예측하므로, 모델의 성능이 더욱 우수하다고 평가됩니다. 하지만 재현율이 높다고 해서 모델이 다른 클래스를 정확하게 예측하는 것을 보장하지는 않습니다.

5.2 재현율 계산 공식 소개

재현율은 다음과 같은 공식을 사용하여 계산할 수 있습니다:

재현율 = TP / (TP + FN)

TP는 True Positive, FN은 False Negative를 의미합니다.

5.3 파이썬 코드 예시

from sklearn.metrics import recall_score

# 실제 값과 예측 결과를 준비합니다.
y_true = [1, 0, 1, 0, 1]
y_pred = [1, 1, 0, 0, 1]

# 재현율을 계산합니다.
recall = recall_score(y_true, y_pred)
print(recall)

위의 코드는 사이킷런의 recall_score 함수를 사용하여 재현율을 계산하는 예시입니다. y_true는 실제 값, y_pred는 예측 결과가 있는 리스트로 주어집니다. 재현율을 계산한 결과를 recall 변수에 저장하고 출력합니다.

이제 마지막으로 정확도 계산 예시에 대해 알아보겠습니다.

6. 정확도 계산 예시

6.1 실제 데이터에 대한 예시 설명

이 예시를 통해 정확도, 혼동 행렬, 정밀도, 재현율을 계산하는 방법을 자세히 설명하겠습니다. 가정해보겠습니다. 어떤 이벤트에 참석한 사람들을 대상으로 메일을 발송하고, 이 메일에 대해 "클릭" 혹은 "클릭하지 않음"으로 두 가지로 분류된다고 가정해봅시다. 실제로는 100명의 참석자 중에 75명이 클릭을 했고, 25명이 클릭하지 않았습니다. 메일을 발송한 후에, 모델이 80명을 클릭으로 예측했고, 20명을 클릭하지 않음으로 예측했을 경우를 생각해보겠습니다.

6.2 혼동 행렬, 정확도, 정밀도, 재현율 계산 결과 소개

이제 혼동 행렬, 정확도, 정밀도 및 재현율을 계산하여 결과를 소개하겠습니다.

6.2.1 혼동 행렬

우선 혼동 행렬을 계산해보겠습니다.

  예측: 클릭 예측: 클릭하지 않음
실제: 클릭 70 5
실제: 클릭하지 않음 10 15

6.2.2 정확도

정확도는 전체 예측 중에서 올바르게 예측한 비율을 나타냅니다. 혼동 행렬의 대각선에 있는 값들의 합을 전체 데이터 수로 나눈 값으로 계산합니다.

정확도 = (TP + TN) / (TP + TN + FP + FN)
      = (70 + 15) / (70 + 15 + 10 + 5)
      = 0.85

위의 예시에서 정확도는 0.85입니다.

6.2.3 정밀도

정밀도는 Positive로 예측한 샘플 중에서 실제로 Positive인 비율을 나타냅니다.

정밀도 = TP / (TP + FP)
       = 70 / (70 + 10)
       = 0.875

위의 예시에서 정밀도는 0.875입니다.

6.2.4 재현율

재현율은 실제로 Positive인 샘플 중에서 모델이 정확하게 Positive로 예측한 비율을 나타냅니다.

재현율 = TP / (TP + FN)
       = 70 / (70 + 5)
       = 0.933

위의 예시에서 재현율은 0.933입니다.

이렇게 다양한 평가 지표를 계산하여 모델의 성능을 평가할 수 있습니다. 다음으로는 결론을 작성하겠습니다.

7. 결론

이 블로그에서는 정확도를 계산하는 방법에 대해 소개했습니다. 정확도는 모델이 올바르게 예측한 비율을 나타내는데, 혼동 행렬, 정밀도, 재현율과 함께 사용되는 평가 지표입니다.

정확도를 계산하기 위해서는 먼저 혼동 행렬을 구성해야합니다. 혼동 행렬은 실제 클래스와 예측 클래스에 따른 분류 결과를 나타내는 표입니다. 이를 통해 TP(True Positive), FP(False Positive), TN(True Negative), FN(False Negative)의 개념을 이해하고, 이를 통해 정확도를 계산할 수 있습니다.

정확도 외에도 정밀도와 재현율도 중요한 평가 지표입니다. 정밀도는 Positive로 예측한 샘플 중에서 실제로 Positive인 비율을 나타내며, 재현율은 실제로 Positive인 샘플 중에서 모델이 정확하게 Positive로 예측한 비율을 나타냅니다.

평가 지표를 통해 모델의 성능을 평가하고 개선하는 것은 중요합니다. 하지만 정확도 계산에는 한계가 있을 수 있으며, 예측 대상의 클래스 불균형이 발생하는 경우에는 다른 평가 지표를 함께 고려하는 것이 좋습니다.

더 나아가서 다른 평가 지표에 대해서도 고려해볼 수 있으며, 실제 데이터에 적용해보면서 정확도 계산 및 다른 평가 지표에 대한 이해를 더욱 깊이 있게 할 수 있습니다.

이로써 정확도 계산에 대한 설명을 마치겠습니다. 감사합니다.

 

본 블로그 글은 G-ChatBot 서비스를 이용하여 AI(ChatGPT) 도움을 받아 작성하였습니다.

https://gboysking.net

 

G-ChatBot

Our service is an AI chatbot service developed using OpenAI API. Our service features a user-friendly interface, efficient management of token usage, the ability to edit conversation content, and management capabilities.

gboysking.net

 

반응형