ROC
분석 및 AUC(곡선 아래 면적)는 데이터 과학에서 널리 사용되는 도구로, 신호 처리에서 차용하여 다양한 매개변수화에서 모델의 품질을 평가하거나 둘 또는 성능을 비교합니다. 여러 모델 중. ROC
分析和曲线下面积 (AUC) 是数据科学中广泛使用的工具,借鉴了信号处理,用于评估不同参数化下模型的质量,或比较两个或多个模型的性能。
传统的性能指标,如准确率和召回率,在很大程度上依赖于正样本的观察。因此,ROC 和 AUC 使用真阳性率和假阳性率来评估质量,同时考虑到正面和负面观察结果。
从分解问题到使用机器学习解决问题的过程有多个步骤。它涉及数据收集、清理和特征工程、构建模型,最后是,评估模型性能。
当您评估模型的质量时,通常会使用精度和召回率等指标,也分别称为数据挖掘领域的置信度和灵敏度。
这些指标将预测值与通常来自保留集的实际观察值进行比较,使用混淆矩阵进行可视化。
让我们首先关注精度,也称为阳性预测值。使用混淆矩阵,您可以将 Precision 构建为所有真实阳性与所有预测阳性的比率。
召回率,也称为真阳性率,表示真阳性与观察到的和预测的所有阳性的比率。
使用混淆矩阵中的不同观察集来描述 Precision
和 Recall
먼저 살펴보겠습니다 긍정적인 예측 가치라고도 알려진 정확성에 중점을 둡니다. 혼동 행렬을 사용하면 모든 예측 긍정에 대한 모든 참 긍정의 비율로 정밀도를 구성할 수 있습니다.
재현율, 참양성률이라고도 하며, 관찰 및 예측된 모든 양성에 대한 참양성의 비율을 나타냅니다.
혼동 행렬 사용 정밀도
및 재현율
의 다양한 관찰 세트를 사용하면 이러한 측정항목이 모델 성능에 대한 보기를 제공하는 방식을 이해할 수 있습니다.
정밀도와 재현율은 부정적인 예를 고려하지 않고 긍정적인 예와 예측에만 초점을 맞춘다는 점에 주목할 가치가 있습니다. 또한 모델의 성능을 단지 무작위 추측인 중앙값 시나리오와 비교하지 않습니다.
1. ROC 곡선
ROC는 정밀도와 재현율 간의 균형을 시각화하는 요약 도구 역할을 합니다. ROC 분석은 ROC 곡선을 사용하여 이진 신호 값이 노이즈, 즉 무작위성으로 오염된 정도를 확인합니다. 이는 다양한 작동 지점에 대한 연속 예측 변수의 민감도와 특이성에 대한 요약을 제공합니다. ROC 곡선은 y축의 참양성률에 대해 x축의 거짓양성률을 플롯하여 얻습니다.
진양성률은 신호를 감지할 확률이고 위양성률은 위양성률이므로 ROC 분석은 질병이나 기타 행동을 안정적으로 감지하는 임계값을 결정하기 위해 의학 연구에서도 널리 사용됩니다. 🎜🎜🎜🎜🎜완벽한 모델은 위양성률과 참양성률이 1이므로 ROC 플롯의 왼쪽 상단에 있는 단일 작동 점이 됩니다. 그리고 가능한 최악의 모델은 ROC 플롯의 왼쪽 하단에 거짓 긍정 비율이 1이고 참 긍정 비율이 0인 단일 작동 지점을 갖습니다. 🎜🎜무작위 추측 모델은 결과를 정확하게 예측할 확률이 50%이므로 거짓양성률은 항상 참양성률과 동일합니다. 이것이 그래프에 대각선이 있는 이유입니다. 이는 신호 대 잡음을 감지할 확률이 50/50임을 나타냅니다. 🎜🎜2. AUC 면적 🎜🎜ROC 곡선을 완전히 분석하고 모델의 성능을 다른 여러 모델과 비교하려면 실제로 문헌에서 c-통계량이라고도 알려진 곡선 아래 면적(AUC)을 계산해야 합니다. . 곡선 아래 면적(AUC)은 곡선이 1x1 그리드에 표시되고 신호 이론과 평행하기 때문에 0과 1 사이의 값을 가지며 이는 신호 감지 가능성의 척도입니다. 🎜🎜이것은 모델이 실제 관찰과 거짓 관찰에 대해 얼마나 잘 평가되는지에 대한 아이디어를 제공하므로 매우 유용한 통계입니다. 이는 실제로 단일 분포에서 두 개의 정렬된 측정 샘플을 추출하는 귀무 가설을 테스트하는 Wilcoxon-Mann-Whitney 순위 합계 테스트의 정규화된 버전입니다. 🎜🎜ROC 곡선을 그리고 AUC(곡선 아래 면적)를 계산하기 위해 동일한 분류 작업을 해결하기 위해 SckitLearn의 RocCurveDisplay 방법을 사용하고 다층 퍼셉트론을 랜덤 포레스트 모델과 비교하기로 결정했습니다. 🎜import matplotlib.pyplot as plt from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import roc_auc_score, RocCurveDisplay def plot_roc(model, test_features, test_targets): """ Plotting the ROC curve for a given Model and the ROC curve for a Random Forests Models """ # comparing the given model with a Random Forests model random_forests_model = RandomForestClassifier(random_state=42) random_forests_model.fit(train_features, train_targets) rfc_disp = RocCurveDisplay.from_estimator(random_forests_model, test_features, test_targets) model_disp = RocCurveDisplay.from_estimator(model, test_features, test_targets, ax=rfc_disp.ax_) model_disp.figure_.suptitle("ROC curve: Multilayer Perceptron vs Random Forests") plt.show() # using perceptron model as input plot_roc(ml_percetron_model, test_features, test_targets)🎜🎜🎜
위 내용은 Python 모델 성능 ROC 및 AUC 란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!