👨🏻‍🏫IT 활동/인공지능교육 - NLP

[NLP] Day 27 - Evaluation

728x90
반응형

Evaluation



file:///Users/charming/Downloads/6.%20%ED%9B%88%EB%A0%A8,%20%EA%B2%80%EC%82%AC,%20%EA%B7%9C%EC%B9%99%ED%99%94[%EC%A0%95%EA%B7%9C%ED%99%94]%20(2%EA%B0%95%20%ED%8E%B8%ED%96%A5%EA%B3%BC%20%EB%B6%84%EC%82%B0).pdf

Error ( Bias and Variance )


분산 줄이는 법 : 데이터를 더 모으기

편향 줄이는 법 : 모델을 더 복잡하게 훈련시키기

둘은 트레이드 오프 관계

  • Accuracy :

데이터의 분포나 편향에 따라 정확도가 높아지기도 한다. 이를 그냥 믿으면 안된다. ( = Overfitting 일 수도 있다는 것 )

Performance


cross-validation & confusion matrix

cv는 보통 10-folds

Precision(정확률) : TP / (TP+FP) : 내가 예측한 것들 중에서의 실제가 있을 확률 (FP가 낮아야 한다.) (ex. 스팸)

Recall(재현률) : TP / (TP+FN) : 실제 값중에서 내가 제대로 예측했을 확률 (VIP선별하기 )

단독적으로 사용하는 것 보다 둘을 이용한 F-Measure를 사용하는게 좋다.

조화평균을 이용한다.


b가 작으면 Precision을 중요시하는 것이고 / b를 높게하면 Recall을 더 중요하게 생각하는 것이다.

데이터가 많아질 수록 Recall은 오르는 양상이지만, Precision은 갈 수록 낮아질 수 밖에 없다. ( 트레이드 오프가 성립한다 )


In [14]:
# confusion matrix 보기
from sklearn.metrics import confusion_matrix, classification_report

# 0 : spam / 1 : ham
# D = 6
trueY = [1,0,1,1,0,1]
predY = [0,0,1,1,0,1]

result = confusion_matrix(trueY,predY)

# 사실 케이스를 여러개 만들어야함
# 클래스 별로 각각의 입장에 따라서 
In [15]:
# 굳이 필요없음, 원하는 형태에 맞춘 것. 
result = result.transpose()
In [16]:
for i in range(result.shape[0]):
    print("Precision : {0}".format(result[i,i] / result[i].sum()))
    print("Recall : {0}".format(result[i,i] / result[:,i].sum()))
Precision : 0.6666666666666666
Recall : 1.0
Precision : 1.0
Recall : 0.75
In [28]:
trueY = [2,0,2,2,0,1]
predY = [0,0,2,2,0,2]

result = confusion_matrix(trueY,predY)
result
Out[28]:
array([[2, 0, 0],
       [0, 0, 1],
       [1, 0, 2]])
In [29]:
print(classification_report(trueY,predY))
# micro는 갯수로 생각 : TP들의 합 / 총 수
# macro는 precision들의 합 / class의 개수 
              precision    recall  f1-score   support

           0       0.67      1.00      0.80         2
           1       0.00      0.00      0.00         1
           2       0.67      0.67      0.67         3

   micro avg       0.67      0.67      0.67         6
   macro avg       0.44      0.56      0.49         6
weighted avg       0.56      0.67      0.60         6

In [39]:
4/6
Out[39]:
0.6666666666666666
In [40]:
(4/3)/3
Out[40]:
0.4444444444444444


728x90
반응형