Загружаем каталог…
Загружаем каталог…
AUROC (Area Under the Receiver Operating Characteristic curve) 는 분류 모델의 성능을 측정하는 지표 중 하나로, 모델이 양성(Positive) 클래스와 음성(Negative) 클래스를 얼마나 잘 구분하는지를 나타냅니다. 1. AUROC 계산 방법 AUROC를 이해하려면 먼저 ROC 곡선 을 이해해야 합니다. 1 ROC 곡선 (Receiver Operating Characteristic Curve) ROC 곡선은 임계값(Threshold)을 변화시킬 때, TPR(True Positive Rate) 과 FPR(False Positive Rate) 이 어떻게 변하는지를 나타낸 그래프입니다. TPR (재현율, Recall/Sensitivity): 실제 양성 중 양성으로 맞춘 비율 $$\text{TPR} = \frac{\text{TP}}{\text{TP} + \text{FN}}$$ FPR (1 - 특이도): 실제 음성 중 양성으로 틀린 비율 $$\text{FPR} = \frac{\text{FP}}{\text{FP} + \text{TN}}$$ 모델이 예측한 점수(Score)를 기준으로 임계값을 $1.0$에서 $0.0$까지 낮추어 가며, 매 단계마다 TPR과 FPR을 계산하여 그래프를 그립니다. 2 AUROC (Area Under the Curve) AUROC는 이 ROC 곡선 아래의 면적 을 의미합니다. AUROC = 1.0: 완벽한 분류기 (모든 양성을 맞히고, 모든 음성을 정확히 구분) AUROC = 0.5: 무작위 추측 (Random Guessing, 대각선 형태) AUROC < 0.5: 모델이 거꾸로 예측하고 있음 (클래스를 반대로 분류) 2. 이상 탐지(Anomaly Detection)에서 AUROC를 쓰는 이유 이상 탐지 문제에서는 일반적인 분류 문제와 다른 두 가지 큰 특징이 있으며, 이 때문에 AUROC가 매우 중요한 지표가 됩니다. 1 데이터 불균형(Imbalance) 문제 해결 이상 탐지 데이터는 대부분 정상(Normal) 이고 이상(Anomaly) 데이터는 극히 적습니다. Accuracy(정확도)의 한계: 만약 데이터의 99%가 정상이라면, 모델이 무조건 "정상"이라고만 답해도 정확도는 99%가 나옵니다. 이는 모델이 이상치를 전혀 못 찾아내도 성능이 좋아 보이는 착시 현상을 일으킵니다. AUROC의 강점: AUROC는 클래스의 비율(Imbalance)에 영향을 받지 않고, 모델이 '정상'과 '이상' 사이의 경계(Separation) 를 얼마나 잘 구분하는지를 측정합니다. 2 임계값(Threshold)에 대한 의존성 없음 (Threshold-Independent) 이상 탐지 시스템을 운영할 때, "어느 정도 점수 이상을 이상치로 간주할 것인가?"라는 임계값을 정하는 것은 매우 어렵습니다. 어떤 시스템은 오탐(False Positive)을 줄이는 것이 중요하고, 어떤 시스템은 미검(False Negative)을 줄이는 것이 중요합니다. AUROC는 특정 임계값을 지정하지 않고, 모든 가능한 임계값에서의 성능을 종합적으로 평가 합니다. 즉, 모델 자체가 가진 "구분 능력" 그 자체를 평가하므로, 나중에 최적의 임계값을 선택할 수 있는 잠재력을 측정하는 데 적합합니다. 3 순위 지정 능력(Ranking Ability) 평가 이상 탐지는 사실상 "이 데이터가 다른 데이터에 비해 얼마나 더 이상한가?" 라는 순위를 매기는 작업입니다. AUROC는 수학적으로 "무작위로 뽑은 이상치 데이터의 점수가 무작위로 뽑은 정상 데이터의 점수보다 높을 확률" 을 의미합니다. 따라서 모델이 이상치를 상위권에, 정상을 하위권에 잘 배치(Ranking)하는지를 평가하는 데 가장 직관적인 지표입니다. 요약 지표 특징 이상 탐지에서의 적합성 Accuracy 전체 중 맞춘 비율 낮음 (데이터 불균형 시 왜곡 심함) F1-Score 정밀도와 재현율의 조화 평균 높음 (특정 임계값에서의 성능 측정) AUROC 모든 임계값에서의 구분 능력 매우 높음 (불균형 데이터 및 모델의 잠재 성능 평가에 최적) 단순한 예제를 넘어, 실제 데이터 분석 환경과 유사하게 다음과 같은 요소를 포함하여 코드를 작성해 보겠습니다. 데이터 불균형(Imbalance) 구현 : 이상 탐지 데이터처럼 정상 데이터는 많고 이상 데이터는 아주 적은 상황을 시뮬레이션합니다. 다양한 모델 비교 : 아주 성능이 좋은 모델, 중간 성능의 모델, 그리고 무작위로 예측하는 모델을 비교합니다. ROC 곡선과 PR(Precision-Recall) 곡선 동시 시각화 : 이상 탐지에서는 AUROC만큼이나 AUPRC(Area Under Precision-Recall Curve) 가 중요하므로, 두 곡선을 모두 그려 비교하겠습니다. 복합 예제 코드 (Python) import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import roc_auc_score, roc_curve, precision_recall_curve, average_precision_score # 1. 복잡한 데이터셋 생성 (Imbalanced Dataset) # 1000개의 샘플 중 오직 5%만이 이상치(1)인 상황 X, y = make_classification(n_samples=1000, n_features=20, n_clusters_per_class=1, weights=[0.95, 0.05], flip_y=0, n_classes=2, random_state=42) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, stratify=y, random_state=42) # 2. 세 가지 시나리오의 예측 확률(Score) 생성 # Scenario A: 매우 강력한 모델 (실제 학습된 모델) model_best = RandomForestClassifier(n_estimators=100, random_state=42) model_best.fit(X_train, y_train) y_probs_best = model_best.predict_proba(X_test)[:, 1] # Scenario B: 성능이 다소 낮은 모델 (노이즈가 섞인 예측) y_probs_mid = np.clip(y_probs_best + np.random.normal(0, 0.2, size=len(y_probs_best)), 0, 1) # Scenario C: 무작위 예측 (Random Guessing) y_probs_random = np.random.rand(len(y_test)) # 3. 지표 계산 함수 def get_metrics(y_true, y_probs): roc_auc = roc_auc_score(y_true, y_probs) pr_auc = average_precision_score(y_true, y_probs) # AUPRC return roc_auc, pr_auc # 4. 시각화 fig, ax = plt.subplots(1, 2, figsize=(16, 6)) models = [ (y_probs_best, 'High Performance', 'darkgreen'), (y_probs_mid, 'Mediocre Performance', 'orange'), (y_probs_random, 'Random Guessing', 'gray') ] for probs, label, color in models: auc_roc, auc_pr = get_metrics(y_test, probs) # ROC Curve 계산 fpr, tpr, _ = roc_curve(y_test, probs) ax[0].plot(fpr, tpr, color=color, lw=2, label=f'{label} (AUROC = {auc_roc:.2f})') # Precision-Recall Curve 계산 precision, recall, _ = precision_recall_curve(y_test, probs) ax[1].plot(recall, precision, color=color, lw=2, label=f'{label} (AUPRC = {auc_pr:.2f})') # 그래프 스타일 설정 (ROC) ax[0].plot([0, 1], [0, 1], 'k--', lw=1) ax[0].set_xlim([0.0, 1.0]) ax[0].set_ylim([0.0, 1.05]) ax[0].set_xlabel('False Positive Rate') ax[0].set_ylabel('True Positive Rate') ax[0].set_title('ROC Curve (Discriminative Power)') ax[0].legend(loc="lower right") ax[0].grid(alpha=0.3) # 그래프 스타일 설정 (PR) ax[1].set_xlim([0.0, 1.0]) ax[1].set_ylim([0.0, 1.05]) ax[1].set_xlabel('Recall') ax[1].set_ylabel('Precision') ax[1].set_title('Precision-Recall Curve (Imbalanced Data Performance)') ax[1].legend(loc="lower left") ax[1].grid(alpha=0.3) plt.tight_layout() plt.show() 💡 코드 핵심 설명 및 심화 학습 1. 왜 ROC와 PR 곡선을 같이 보나요? (매우 중요) 코드에서 두 개의 그래프를 그린 이유는 이상 탐지(Anomaly Detection)의 특수성 때문입니다. ROC Curve (왼쪽 그래프): 전체적인 모델의 구분 능력(Separation) 을 보여줍니다. 데이터가 불균형해도 (양성이 적어도) 비교적 완만하게 변화하므로, 모델의 전반적인 성능을 파악하기 좋습니다. 하지만 데이터가 극단적으로 불균형할 경우(예: 양성이 0.001%), 모델이 매우 우수함에도 불구하고 ROC 곡선이 실제보다 훨씬 좋아 보이는 낙관적 편향(Optimistic Bias) 이 발생할 수 있습니다. Precision-Recall Curve (오른쪽 그래프): 정밀도(Precision) 와 재현율(Recall) 의 관계를 보여줍니다. 이상 탐지처럼 "정상이 너무 많아서" 발생하는 오탐(False Positive)에 매우 민감하게 반응합니다. 실제 산업 현장(예: 카드 부정 결제 탐지, 불량품 검출)에서는 "정상을 이상으로 잘못 판단하는 비용"이 매우 크기 때문에, AUPRC(Area Under PR Curve) 를 더 엄격한 지표로 사용하는 경우가 많습니다. 2. 데이터 시나리오 분석 High Performance (초록색): ROC와 PR 곡선 모두 왼쪽 상단(1,1)으로 가깝게 붙습니다. 이는 양성을 아주 잘 찾아내면서도 동시에 오답을 거의 내지 않는다는 뜻입니다. Mediocre Performance (주황색): 모델의 점수에 노이즈가 섞이면 ROC는 완만하게 꺾이지만, PR 곡선은 급격하게 떨어지는 것을 볼 수 있습니다. 이는 모델이 이상치를 찾으려 할 때 정상을 이상으로 잘못 판단하는 비율이 급격히 늘어남을 의미합니다. Random Guessing (회색): ROC는 대각선($y=x$)을 따라가고, PR 곡선은 양성 클래스의 비율($\text{Positive Rate}$) 근처에서 수평선을 그립니다. 3. 결론: 어떤 지표를 믿어야 할까? 만약 당신이 "전반적으로 이 모델이 얼마나 잘 작동하는가?" 를 알고 싶다면 AUROC 를 보세요. 만약 당신이 "데이터가 매우 불균형한 상황에서, 오탐(False Positive)을 최소화하며 이상치를 얼마나 잘 잡아내는가?" 를 알고 싶다면 AUPRC 를 보세요. (이상 탐지에서는 이쪽이 훨씬 더 실무적입니다.)
То, что RADAR обнаружил и классифицировал для этой возможности. Это опубликованный источником текст, а не подтверждение, что предложение ещё действует.
이상 탐지에서 AUROC (261001). AUROC (Area Under the Receiver Operating Characteristic curve) 는 분류 모델의 성능을 측정하는 지표 중 하나로, 모델이 양성(Positive) 클래스와 음성(Negative) 클래스를 얼마나 잘 구분하는지를 나타냅니다. 1. AUROC 계산 방법 AUROC를 이해하려면 먼저 ROC 곡선 을 이해해야 합니다. 1 ROC 곡선 (Receiver Operating Characteristic Curve) ROC 곡선은 임계값(Threshold)을 변화시킬 때, TPR(True Positive Rate) 과 FPR(False Positive Rate) 이 어떻게 변하는지를 나타낸 그래프입니다. TPR (재현율,…
Открыть источник