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
- Classification Metrics – scikit-learn
- Understanding Classification Metrics – Towards Data Science
- Precision vs Recall – StatQuest (YouTube)
- Classification Metrics Tutorial – Machine Learning Mastery