본문 바로가기
통계/머신러닝

[Python / 머신러닝 / 기초] 활용 제조 / 공정 - 실무 데이터 마이닝 실습 2(분류 모델 평가 / 정확도 / 오차행렬 / 재현율 / 정밀도 / F1)

by 만슨 2024. 3. 28.

 

이번시간에는 저번 포스팅 때 만들었던 학습 모델에 대 평가를 진행해보도록 하겠습니다

 

이전 포스팅 보러가기: [Python / 머신러닝] 활용 제조 / 공정 - 실무 데이터 마이닝 (지도 학습 / 분류 모델 )

 

분류 모델 평가

 

1. 머신러닝 평가 종류 

 

1-1. 분류 모델 학습 능력 평가

학습 능력 평가란? 
우리가 만들어준 model을 만들 때 사용했던 데이터 X_train을 다시 model 넣어주어 Y_train값과 새롭게 얻어지는 Y_train_pred 값을 비교하는 평가

즉 만들어진 모델이 올바른 수식을 도출했는가를 확인하는 평가이다.

 

 

1-2.  분류 모델 일반화 능력 평가

일반화 능력 평가란?
우리가 만들어준 model 모델을 만들 때 사용하지 않은 데이터가 들어왔을 때(X_test) 올바른 결과를 도출해줄 수 있는지 Y_test 값과 Y_test_pred 값을 비교하는 평가

 

 

 


 

분류 모델 평가 지표(Evaluation)

 

정확도만 가지고 모델을 평가하면 어떻게 될까? 

 

9500개의 정상인 기계가 있고 500개의 오류가 발생하는 기계가 있을 때 만약 학습 모델이 모두 정상인 기계만 있다고 학습을 했을 때를 생각해 보자. 이때의 정확도는 0.95가 되는 것이다. 그렇다면 이는 좋은 모델일까? 오류가 발생하는 기계에 대한 예측을 하나도 하지 못하였는데 말이다.

 

이처럼 클래스 불균형이 있는 데이터셋에서 정확도로 평가를 하게 되면 위 같은 오류가 생길 수도 있다.

 

위 같은 정확도만으로 확인할 수 없는 오류를 확인하기 위해 '오차행렬'을 이용하여 여러 가지 확률을 계산한다.

 

  Real Negative Real Positive
Predict Negative True Negative (TN) False Negative (FN)
Predict Positive False Positive(FP) True Positive (PN)

 

1. 정확도 (Accuuracy) : TP + TN / (TP + TN + FP + FN)
2. 정밀도 (Precision)  =  PN / (FP + PN) 
3. 재현율 (Recall) = TP / (TP + FN)
4. F1_Score = 2 * 정밀도 * 재현율 / (정밀도 + 재현율) 

 

위 통계량을 꼭 확인해주어야 한다.

 

 

정확도 / 정밀도 / 재현율 / F1 Score 확인

 

정확도 / 정밀도 / 재현율 / F1_Score 을 가지고 분류 모델 학습 능력 평가를 해보겠다.

우선 정확도를 이용하여 분류 모델 학습 능력 평가와 분류 모델 일반화 평가 부터 알아보자.

 

학습 능력 평가

 

학습 분류 모델을 평가하기위해 sklean.metrics의 accurarcy_score을 사용하였다.

accurarcy_score : 실제 데이터 중 맞게 예측한 정확도를 알려준다

 

 

predict 함수에 X_train을 넣어 나온 값과 Y_train 값을 비교하여 보니 정확도가 1.0 이 나왔다


일반화 능력 평가

 

위 일반화 능력에는 0.9의 정확도가 나왔다


 

정밀도 / 재현율 / F1_Score을 이용한 일반화 능력 평가

 

라이브러리에서 각각 함수 가져온 뒤 

 

 

 

정밀도 / 재현율 / F1_score을 계산해주었다.

 

위에 정확도와의 큰 차이를 보이고 있다. 

 

위 확률들을 한 번에 보여주는 classification_report 함수를 사용하여 확인해 줄 수도 있다.

 

 

 

참고 

[1] https://www.youtube.com/watch?v=qbtdH7bdXHk&list=PLhdHuKlSngGzqelaQv7byMNLhtqqqeNqO&index=8    

[2] https://www.youtube.com/watch?v=cTPRFmW_-iw&list=PLhdHuKlSngGzqelaQv7byMNLhtqqqeNqO&index=9