ML의 모델 평가 Intro
머신러닝 모델은 여러 가지 방법으로 예측 성능을 평가할 수 있습니다. 성능 평가 지표값과 예측값의 오차 평균값에 기반합니다. 성능 평가 지표는 일반적으로 모델이 분류 혹은 회귀에 따라 여러 종류로 나뉩니다.
회귀의 경우 대부분 실제값과 예측값의 오차 평균값에 기반합니다. 예를 들어 오차에 절댓값을 씌운 뒤 평균 오차를 구하거나 오차의 제곱 값에 루트를 씌운 평균 오차를 구하는 방법과 같이 기본적으로 예측 오차를 가지고 정규화 수준을 재가공하는 방법이 회귀의 성능 평가 지표 유형입니다.
분류의 평가방법도 일반적으로는 실제결과가 데이터와 예측 결과 데이터가 얼마나 정확하고 오류가 적게 발생하는가에 기반하지만, 단순히 이러한 정확도만 가지고 판단했다가는 잘못된 평가 결과에 빠질 수 있습니다.
분류는 결정 클래스 값 종류의 유형에 따라 긍정/부정과 같은 2개의 결괏값만을 가지는 이진 분류와 여러 개의 결정 클래스 값을 가지는 멀티 분류로 나뉠 수 있습니다. 아래 평가지표는 이진 분류에서 강조되는 지표입니다.
- 정확도(Accuracy)
- 오차행렬(Confusion Matrix)
- 정밀도(Precision)
- 재현율(Recall)
- F1 스코어
- ROC AUC
정확도 (Accuracy)
정확도는 실제 데이터에서 예측 데이터가 얼마나 같은지를 판단하는 지표입니다. 정확도는 직관적으로 모델 예측 성능을 나타내는 평가 지표이지만 이진 분류의 경우 데이터의 구성에 따라 ML모델의 성능을 왜곡할 수 있기 때문에 정확도 수치 하나만 가지고 성능을 평가하지 않습니다.
정확도(Accuracy) = 예측 결과가 동일한 데이터 건수 / 전체 예측 데이터 건수
사이킷런에서는 accurcy_score 클래스를 이용하여 정확도를 구합니다. 하기는 GBM이용한 모델의 정확도를 구하는 예시입니다.
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import accuracy_score
gb_clf = GradientBoostingClassifier(random_state=0)
X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target, test_size=0.2, random_state=156)
gb_clf.fit(X_train, y_train)
pred = gb_clf.predict(X_test)
print(accuracy_score(y_test, pred))
하지만 위에서 말했듯, 정확도 평가 지표는 특히 불균형한 레이블 데이터 세트에서는 성능 수치로 사용해서는 안 됩니다. 정확도가 가지는 분류 평가 지표로서 이러한 한계점을 극복하기 위해 여러 가지 분류 지표와 함께 적용해야 합니다.
'ML & AI Theory' 카테고리의 다른 글
다층 신경망의 활성화 함수 : 시그모이드, 소프트맥스, 하이퍼볼릭탄젠트, 렐루함수 (0) | 2021.07.05 |
---|---|
케라스 실습] tf.keras API를 사용한 다층 신경망 훈련 기본 (0) | 2021.07.04 |
텐서플로우 #1] 텐서플로우의 시작과 배열 구조 다루기 (0) | 2021.07.03 |
RNN 실전실습 : 시퀀스 모델링을 위한 다층 RNN구현 : IMDB 영화리뷰 구현 (0) | 2021.06.28 |
RNN 지식 : 순환 신경망으로 시퀀스 데이터 모델링 위한 기본 지식 (0) | 2021.06.28 |
인공신경망관련 용어정리 : 퍼셉트론, MLP, Feed Forward, Back Propagation, 활성 함수, 시그모이드 함수, Gradient Descent Method (0) | 2021.06.28 |
머신러닝 모델의 예측 평가에 대해 #2 - 오차행렬 & F1 Score (0) | 2020.11.10 |
ROC, AUC Curve에 대해 : Receiver Operating Characteristic, Area Under the Curve (0) | 2020.10.25 |