Przejdź do głównej zawartości

classification_metrics

czym są metryki klasyfikacji? ⭐

  • Metryki klasyfikacji to miary służące do oceny jakości modeli klasyfikacyjnych.
  • Różne metryki mierzą różne aspekty wydajności modelu.
  • Wybór odpowiedniej metryki zależy od problemu biznesowego i charakterystyki danych.
  • Metryki pomagają w porównywaniu modeli i wyborze najlepszego rozwiązania.

podstawowe metryki klasyfikacji ⭐

Accuracy (Dokładność)

  • Procent poprawnych predykcji: (TP + TN) / (TP + TN + FP + FN)
  • Najprostsza metryka, ale może być myląca dla niezbalansowanych klas.

Precision (Precyzja)

  • Procent poprawnych pozytywnych predykcji: TP / (TP + FP)
  • Mierzy, jak wiele z przewidzianych pozytywnych przypadków było rzeczywiście pozytywnych.

Recall (Czułość)

  • Procent wykrytych pozytywnych przypadków: TP / (TP + FN)
  • Mierzy, jak wiele z rzeczywistych pozytywnych przypadków zostało wykrytych.

F1-Score

  • Średnia harmoniczna precyzji i czułości: 2 * (Precision * Recall) / (Precision + Recall)
  • Równoważy precyzję i czułość.

przykładowy kod (scikit-learn)

from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
from sklearn.metrics import classification_report, confusion_matrix
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

# Generowanie danych
X, y = make_classification(n_samples=1000, n_features=10, n_classes=2, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Trenowanie modelu
model = RandomForestClassifier(random_state=42)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

# Podstawowe metryki
print(f"Accuracy: {accuracy_score(y_test, y_pred):.3f}")
print(f"Precision: {precision_score(y_test, y_pred):.3f}")
print(f"Recall: {recall_score(y_test, y_pred):.3f}")
print(f"F1-Score: {f1_score(y_test, y_pred):.3f}")

# Pełny raport
print("\nClassification Report:")
print(classification_report(y_test, y_pred))

# Macierz pomyłek
cm = confusion_matrix(y_test, y_pred)
plt.figure(figsize=(8, 6))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues')
plt.title('Confusion Matrix')
plt.ylabel('True Label')
plt.xlabel('Predicted Label')
plt.show()

praktyczne ćwiczenia

  • Oblicz metryki dla różnych modeli klasyfikacyjnych.
  • Porównaj wyniki na zbalansowanych i niezbalansowanych zbiorach danych.
  • Analizuj macierz pomyłek dla różnych problemów.
  • Eksperymentuj z różnymi wagami dla klas (class_weight).
  • Zaimplementuj własne funkcje do obliczania metryk.

dobre praktyki

  • Wybór metryki: Dostosuj do problemu biznesowego.
  • Zbalansowane dane: Używaj F1-score dla niezbalansowanych klas.
  • Macierz pomyłek: Zawsze analizuj szczegółowe wyniki.
  • Walidacja: Używaj cross-validation do oceny metryk.

metryki dla wieloklasowej klasyfikacji

Macro-averaging

  • Średnia metryk dla każdej klasy osobno.
  • Każda klasa ma równą wagę.

Micro-averaging

  • Agreguje wszystkie klasy razem.
  • Większe klasy mają większą wagę.

Weighted-averaging

  • Średnia ważona według liczby próbek w każdej klasie.

zastosowania różnych metryk

Accuracy: Ogólna ocena modelu Precision: Gdy fałszywe pozytywne są kosztowne Recall: Gdy fałszywe negatywne są kosztowne F1-Score: Równowaga między precyzją a czułością

polecane źródła