Функції втрат. Частина II

Проєктування робочих процесів машинного навчання в Python

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Ймовірнісні бали

clf = GaussianNB().fit(X_train, y_train)
scores = clf.predict_proba(X_test)
array([[3.74717371e-07, 9.99999625e-01],
       [9.99943716e-01, 5.62841678e-05],
       ...,
       [9.99937502e-01, 6.24977552e-05]])
[s[1] > 0.5 for s in scores] == clf.predict(X_test)
Проєктування робочих процесів машинного навчання в Python

Ймовірнісні бали

Поріг Хибнопозитивні Хибнонегативні
0.0 178 0
0.25 66 17
0.5 35 37
0.75 13 57
1.0 0 72
Проєктування робочих процесів машинного навчання в Python

ROC-криві

Графік FPR проти TPR: крива прямує до верхнього лівого кута та верхньої межі. Також показано діагональну лінію.

fpr, tpr, thres = roc_curve(
    ground_truth, 
    [s[1] for s in scores])
plt.plot(fpr, tpr)
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
Проєктування робочих процесів машинного навчання в Python

Як і раніше, графік FPR проти TPR показує криву, що прямує до верхнього лівого кута та верхньої межі. Також відображено діагональну лінію.

Проєктування робочих процесів машинного навчання в Python

Додано криву для GaussianNB, яка нижча за AdaBoost на всьому діапазоні FPR.

Проєктування робочих процесів машинного навчання в Python

Ще одна крива — для random forest: нижча за GaussianNB за малих FPR, але вища за більших значень.

Проєктування робочих процесів машинного навчання в Python

AUC

clf = AdaBoostClassifier().fit(X_train, y_train)
scores_ab = clf.predict_proba(X_test)
roc_auc_score(ground_truth, [s[1] for s in scores_ab])
0.9999
Проєктування робочих процесів машинного навчання в Python

Мінімізація вартості

def my_scorer(y_test, y_est, cost_fp=10.0, cost_fn=1.0):
    tn, fp, fn, tp = confusion_matrix(y_test, y_est).ravel()
    return cost_fp*fp + cost_fn*fn
t_range = [0.0, 0.25, 0.5, 0.75, 1.0]
costs = [
   my_scorer(y_test, [s[1] > thres for s in scores]) for thres in t_range
]
[94740.0, 626.0, 587.0, 507.0, 2855.0]
Проєктування робочих процесів машинного навчання в Python

Кожен кейс — інший!

Проєктування робочих процесів машинного навчання в Python

Preparing Video For Download...