-> 임계값을 0.5로 맞추는 이유는?
만약 이 부분을 점점 낮추거나 높이면 어떤 식으로 변화하는가?
정밀도, 재현율이 어떤 식으로 변경이 되고 왜 우리는 이 두 지표를 같이 봐야하는지?
->
이에 관한 예를 들면
상황에 따라 재현율, 정밀도의 비중이 다르다
타이타닉 데이터를 가지고 위의 질문에 대한 답을 알아보자
X_train, X_test, y_train, y_test = train_test_split(df_sp.drop('survived',axis=1), df_sp['survived'], test_size=0.3, random_state=111)
테스트 사이즈를 0.3으로 설정하고 평가지표를 알아보면
*데이터양이 적은 경우에는 기본적으로 liblinear solver를 사용하는 것이 일반적이다.
liblinear solver는 작은 데이터셋에서 잘 동작하며, 이진 분류(binary classification) 및 다중 클래스 분류(multi-class classification) 문제 모두에 적합하다. 특히 데이터가 작고 피처 수가 적을 때, 이 알고리즘이 좋은 성능을 보인다
오차 행렬 값을 확인
predict proba를 확인해 보면 데이터에 대한 음성 클래스 (0) 양성 클래스(1) 확률 값을 확인할 수 있다
-----------------------------------------------------------------------------------------------------------------------------------------
sklearn.preprocessing.Binarizer
임계값(threshold)을 기준으로 데이터를 0 또는 1로 이진화할 수 있다. 예를 들어, 특정 임계값을 기준으로 확률을 클래스로 변환하는 경우에 유용하다.
만약 임계값을 1.3으로 설정했을 경우 1.3 초과는 1, 1.3 이하는 0으로 판단.
임계값을 0.5에서 0.4로 낮추면 양성으로 분류되는 기준이 낮아진다. 즉, 모델이 양성으로 분류하는 기준이 낮아지므로 더 많은 데이터가 양성으로 분류될 것이다. 이에 따라 다음과 같은 경우가 발생할 수 있다.
따라서 재현율이 낮아진 이유는 임계값을 낮추면서 모델이 더 많은 데이터를 양성으로 분류하면서 FP가 증가하고, 따라서 재현율은 상승하지만 정밀도는 감소하기 때문일 수 있다.
분류 모델의 예측 확률을 기반으로 정밀도-재현율 곡선을 그리고 이를 이용하여 샘플로 추출된 임계값에 따른 정밀도와 재현율 값을 출력하는 과정이다
위 코드에서는 15 step 단위로 임계값을 추출하여 해당 임계값에 대한 정밀도와 재현율 값을 출력하고 있다. 이를 통해 임계값이 변할 때 정밀도와 재현율이 어떻게 변하는지를 확인할 수 있다
여기서 step은 임계값의 간격을 나타낸다. 코드에서는 step을 15로 설정하여 각 임계값 사이의 간격을 15로 설정했다. 즉, 15 step 단위로 임계값을 추출했다.
이렇게 하면 임계값을 세밀하게 조정하면서 그에 따른 정밀도와 재현율 값을 확인할 수 있다. 이를 통해 최적의 임계값을 찾거나, 임계값이 변할 때 모델의 성능 변화를 살펴볼 수 있다.
.
#레이블 값이 1일 때 예측 확률을 추출
정밀도-재현율 곡선(precision-recall curve)을 그리기 위해서이다. 임계값은 모델이 예측한 확률을 기반으로 양성 클래스로 분류할지 여부를 결정하는 기준이다. 그래서 레이블 값이 1일 때 예측 확률을 추출하여 사용하는 것이다.
# 실제값 데이터 세트와 레이블 값이 1일 때의 예측확률을 precision_recall_curve 인자로 입력
#반환된 임계값 배열 로우가 147건이므로 샘플로 10건만 추출하되, 임곗값을 15 step으로 추출
임계값(thresholds) 배열이 147건으로 매우 많다. 이 많은 임계값들을 그대로 사용하면 정밀도와 재현율을 그래프로 그릴 때 너무 많은 점이 생겨 이해하기 어려울 수 있다. 따라서 특정 간격(step)으로 임계값을 추출하여 샘플을 줄여 시각적으로 파악하기 쉽도록 한다.
상황에 따라 정밀도 또는 재현율이 특별히 강조돼야 할 경우가 있는데 이때는 임계값을 조정해 정밀도 또는 재현율을 높일 수 있다. 하지만 정밀도와 재현율은 상호 보완적인 평가 지표이기 때문에 어느 한쪽을 높이면 다른 한쪽은 줄어들게 된다. 이를 정밀도/재현율의 트레이드 오프 라고 부른다.
정밀도가 높은 경우
모델이 양성 클래스(예를 들면, 생존)로 예측한 사례 중에서 실제로 양성 클래스인 경우가 많을 때이다. 정밀도가 100%인 경우는 모든 양성 클래스 예측이 정확한 경우를 의미한다.
예를 들어, 위에서 설명한 것처럼 모델이 특정 기준에 부합하는 경우만 생존으로 예측하고, 나머지는 모두 생존하지 않았다고 예측할 때 정밀도가 100%가 될 수 있다. 이는 모델이 양성 클래스로 예측한 모든 샘플이 실제로 양성 클래스인 경우이다.
하지만 이러한 정밀도가 100%인 경우에도 주의해야 한다. 왜냐하면 이는 모델이 다른 클래스를 전혀 고려하지 않고 오직 한 클래스만을 예측한다는 것을 의미할 수 있다. 이 경우에는 재현율과 같은 다른 평가 지표도 고려해야 한다. 또한, 실제 상황에서는 이러한 절대적인 규칙이 적용되지 않을 수 있으며, 모델의 성능을 다각도로 평가해야 한다.
F1-Score는 정밀도(Precision)와 재현율(Recall)의 조화 평균(harmonic mean)이다. 이는 모델의 정밀도와 재현율을 모두 고려하여 모델의 성능을 평가하는 지표이다.
F1-Score는 정밀도와 재현율이 어느 한 쪽으로 치우치지 않을 때 높은 값을 갖는다. 즉, 모델이 양성 클래스와 음성 클래스 모두에 대해 균형잡힌 예측을 하는 경우에 높은 F1-Score를 얻을 수 있다.
F1-Score는 이진 분류(Binary Classification)의 평가에서 주로 사용되며, 데이터의 불균형이 심한 경우에 유용하다. 이 지표는 정확도보다 데이터의 불균형에 덜 민감하며, 정밀도와 재현율 사이의 트레이드오프를 고려할 때 유용하다.
TPR(True Positive Rate) = Recall(재현율)
실제 양성 클래스 중 모델이 올바르게 양성으로 분류한 비율로, 민감도(Sensitivity)와 같다.
FPR(False Positive Rate) = 위양성률
실제 음성 클래스 중 모델이 잘못하여 양성으로 분류한 비율입니다. 1- (Specificity)
ROC 곡선(Receiver Operating Characteristic curve)
이진 분류 모델의 성능을 시각적으로 평가하는 데 사용되는 그래픽 표현이다. ROC 곡선은 여러 임계값(threshold)에서 분류 모델의 민감도(Sensitivity)와 특이도(Specificity) 사이의 관계를 보여준다.
ROC 곡선은 민감도를 x축에, 1에서 특이도를 y축에 그린다. 좋은 분류 모델은 ROC 곡선이 왼쪽 위 모서리로부터 멀리 떨어져 있다. 대각선에 가까운 곡선은 랜덤한 예측을 나타내며, 좋은 모델은 이 대각선보다 위쪽에 있어야 한다.
AUC(Area Under the ROC Curve)
ROC 곡선 아래 영역을 나타내며, 분류 모델의 성능을 하나의 숫자로 요약한다. AUC가 1에 가까울수록 모델의 성능이 우수하며, AUC가 0.5에 가까울수록 랜덤한 모델에 가깝다. 일반적으로 AUC가 0.7 이상이면 모델의 성능이 양호하다고 간주된다.
ROC 곡선과 AUC는 이진 분류 모델의 성능을 평가하고 비교하는 데 매우 유용한 도구다.
선형회귀분석(Linear_regression) (2) | 2024.05.25 |
---|---|
회귀분석 개념 공부 (0) | 2024.05.19 |
ML1, KNN 알고리즘기반 (0) | 2024.05.05 |
머신러닝, 평가지표 (2) | 2024.03.24 |
교차검증, (k-fold cross validation) (1) | 2024.03.24 |