Recall
- Makine Öğrenmesi kursu
- Başlangıç
- Ders 100/112
- 5 dk
Recall, gerçek pozitiflerin kaçının bulunduğunu gösterir.
ROC eğrisi
Eşik 1'den 0'a indikçe duyarlılık (doğru pozitif oranı, TPR) artar ama yanlış pozitif oranı (FPR) da artar. ROC eğrisi bu iki oranı tüm eşikler için çizer:
from sklearn.metrics import roc_curve
fpr, tpr, esikler = roc_curve(y_test, p)
# her eşik için (fpr, tpr) noktasıFPR = FP / (FP + TN): gerçek negatiflerin ne kadarına yanlışlıkla pozitif dendiği.
AUC
ROC eğrisinin altındaki alan (AUC) tek sayılık bir özettir: 1.0 kusursuz, 0.5 rastgele. Eşikten bağımsızdır ve "rastgele bir pozitif örneğin rastgele bir negatiften daha yüksek skor alma olasılığı" olarak yorumlanır:
from sklearn.metrics import roc_auc_score
print(roc_auc_score([0, 0, 1, 1], [0.1, 0.4, 0.35, 0.8])) # 0.75Dört pozitif-negatif çiftinin üçünde pozitif daha yüksek skor almış: 3/4 = 0.75.
Uygulama AUC hesapla
Meme kanseri test olasılıkları p için roc_auc_score değerini round(..., 3) ile yazdır. Ardından roc_curve ile kaç eşik üretildiğini (len(esikler)) yazdır.
Başlangıç kodu
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0, stratify=y)
m = make_pipeline(StandardScaler(), LogisticRegression()).fit(X_train, y_train)
p = m.predict_proba(X_test)[:, 1]
from sklearn.metrics import roc_auc_score, roc_curve
# buraya yazÖrnek çözüm
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0, stratify=y)
m = make_pipeline(StandardScaler(), LogisticRegression()).fit(X_train, y_train)
p = m.predict_proba(X_test)[:, 1]
from sklearn.metrics import roc_auc_score, roc_curve
print(round(roc_auc_score(y_test, p), 3))
fpr, tpr, esikler = roc_curve(y_test, p)
print(len(esikler))Beklenen çıktı
0.995 12
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Rastgele tahmin eden bir modelin ROC eğrisi nasıldır?
- (0,0)'dan (1,1)'e köşegen Doğru cevap
- Sol üst köşeye yapışık
- Yatay çizgi
- Tek bir nokta
Açıklama: Rastgele modelde TPR her zaman FPR'ye eşittir; AUC 0.5 olur.
2 ROC eğrisinin altındaki alanı hesapla.
auc = ____(y_test, p)
auc = roc_auc_score(y_test, p)
Açıklama: roc_auc_score karar değil olasılık ya da skor ister.
3 Terimleri eşleştir.
| Kavram | Anlamı |
|---|---|
TPR |
Duyarlılık |
FPR |
FP / (FP + TN) |
AUC = 0.5 |
Rastgele |
AUC = 1.0 |
Kusursuz sıralama |