Skip to content

Cum să evaluezi modele machine learning

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn how to evaluate ML models using the right metrics — accuracy, precision, recall, F1-score, and ROC-AUC — and when to use each one.

Problema

"Acuratețea" de 95% sună bine, dar dacă 95% din date sunt din clasa majoritară, modelul poate fi inutil. Fiecare problemă are nevoie de metrica potrivită, iar alegerea greșită duce la concluzii false.

Soluția Greșită

import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split

df = pd.read_csv("date.csv")
X = df.drop("target", axis=1)
y = df["target"]

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
model = RandomForestClassifier()
model.fit(X_train, y_train)

# Doar acuratete — insuficient
print(f"Acuratete: {model.score(X_test, y_test):.3f}")

Problema: Acuratețea nu spune nimic despre cât de bine identifică modelul clasa pozitivă. Un model care prezice mereu "0" poate avea acuratețe 95% dacă doar 5% sunt "1".

Soluția Corectă

from sklearn.metrics import classification_report, confusion_matrix
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
import pandas as pd

df = pd.read_csv("date.csv")
X = df.drop("target", axis=1)
y = df["target"]

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
model = RandomForestClassifier(random_state=42)
model.fit(X_train, y_train)
predictii = model.predict(X_test)

print(classification_report(y_test, predictii))
print(confusion_matrix(y_test, predictii))

Output:

              precision    recall  f1-score   support
           0       0.96      0.98      0.97       100
           1       0.92      0.85      0.88        30
    accuracy                           0.95       130

Implementare Pas cu Pas

1. Matricea de confuzie — baza oricarei evaluari

from sklearn.metrics import confusion_matrix
import seaborn as sns
import matplotlib.pyplot as plt

cm = confusion_matrix(y_test, predictii)
sns.heatmap(cm, annot=True, fmt="d", cmap="Blues")
plt.xlabel("Predicted")
plt.ylabel("Actual")
plt.show()

2. Precision, Recall, F1-Score

from sklearn.metrics import precision_score, recall_score, f1_score

print(f"Precizie: {precision_score(y_test, predictii):.3f}")
print(f"Recall: {recall_score(y_test, predictii):.3f}")
print(f"F1-Score: {f1_score(y_test, predictii):.3f}")

3. ROC-AUC — performanța la toate pragurile

from sklearn.metrics import roc_auc_score, roc_curve

probabilitati = model.predict_proba(X_test)[:, 1]
auc = roc_auc_score(y_test, probabilitati)
print(f"AUC: {auc:.3f}")

fpr, tpr, _ = roc_curve(y_test, probabilitati)
plt.plot(fpr, tpr, label=f"AUC = {auc:.3f}")
plt.xlabel("False Positive Rate")
plt.ylabel("True Positive Rate")
plt.legend()
plt.show()

Sfaturi pentru Prevenire

  • Acuratețea e utilă doar când clasele sunt echilibrate
  • Folosește F1-Score când ai nevoie de un echilibru între precizie și recall
  • ROC-AUC e independent de prag și excelent pentru compararea modelelor
  • Pentru regresie: R2, RMSE, MAE
  • Raportează întotdeauna mai multe metrici, nu una singură

Greșeli Comune

  1. Folosești doar acuratețea — ascunde probleme cu clase dezechilibrate
  2. Ignori matricea de confuzie — nu vezi tipurile de erori
  3. Alegi F1 în loc să alegi între precizie și recall — depinde de costul erorilor
  4. Nu setezi threshold-ul corect — pragul implicit de 0.5 nu e mereu optim
  5. Evaluezi pe același set de mai multe ori — cauți overfitting pe test

Întrebări Frecvente

### Ce metrică aleg pentru clase dezechilibrate?

F1-Score (macro sau weighted) și ROC-AUC sunt cele mai bune pentru clase dezechilibrate.

Care e diferența dintre precizie și recall?

Precizia răspunde "cât de multe predicții pozitive sunt corecte?" Recall răspunde "câte din exemplele pozitive reale au fost găsite?"

Când să folosesc AUC vs F1?

AUC evaluează modelul la toate pragurile, ideal pentru comparare generală. F1 evaluează la un prag specific, relevant în producție.

Built by the developers of Doda Browser, DodaZIP, and Durga Antivirus Pro. DodaTech tools integrate seamlessly with sklearn for enhanced productivity and security.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro