En aquest tema, explorarem els conceptes clau relacionats amb l'avaluació i la validació de models de Machine Learning. Avaluar i validar correctament els models és essencial per assegurar que funcionin bé amb dades noves i no només amb les dades amb les quals van ser entrenats.

Objectius d'Avaluació i Validació

  1. Mesurar el Rendiment del Model: Determinar com de bé el model prediu o classifica les dades.
  2. Evitar el Sobreajustament (Overfitting): Assegurar que el model generalitzi bé a noves dades i no només memoritzi les dades d'entrenament.
  3. Comparar Models: Avaluar diferents models per seleccionar el millor per a una tasca específica.

Mètriques d'Avaluació

Per a Problemes de Classificació

  1. Precisió (Accuracy): Proporció de prediccions correctes sobre el total de prediccions. \[ \text{Precisió} = \frac{\text{Nombre de prediccions correctes}}{\text{Total de prediccions}} \]

  2. Precisió (Precision): Proporció de prediccions positives correctes sobre el total de prediccions positives. \[ \text{Precisió} = \frac{\text{Veritables Positius}}{\text{Veritables Positius} + \text{Falsos Positius}} \]

  3. Sensibilitat (Recall) o Exhaustivitat: Proporció de veritables positius detectats sobre el total de positius reals. \[ \text{Sensibilitat} = \frac{\text{Veritables Positius}}{\text{Veritables Positius} + \text{Falsos Negatius}} \]

  4. F1-Score: Mitjana harmònica de la precisió i la sensibilitat. \[ F1 = 2 \cdot \frac{\text{Precisió} \cdot \text{Sensibilitat}}{\text{Precisió} + \text{Sensibilitat}} \]

  5. Matriz de Confusió: Taula que permet visualitzar el rendiment del model de classificació. | | Predicció Positiva | Predicció Negativa | |----------------|--------------------|--------------------| | Real Positiu | Veritables Positius| Falsos Negatius | | Real Negatiu | Falsos Positius | Veritables Negatius|

Per a Problemes de Regressió

  1. Error Quadràtic Mitjà (Mean Squared Error, MSE): Promig dels quadrats de les diferències entre els valors predits i els valors reals. \[ MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 \]

  2. Error Absolut Mitjà (Mean Absolute Error, MAE): Promig de les diferències absolutes entre els valors predits i els valors reals. \[ MAE = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| \]

  3. Coeficient de Determinació (R²): Mesura la proporció de la variància en la variable dependent que és predictable a partir de les variables independents. \[ R^2 = 1 - \frac{\sum_{i=1}^{n} (y_i - \hat{y}i)^2}{\sum{i=1}^{n} (y_i - \bar{y})^2} \]

Tècniques de Validació

Validació Creuada (Cross-Validation)

  1. K-Fold Cross-Validation: Divideix les dades en k subconjunts (folds). El model s'entrena k vegades, cada vegada utilitzant un fold diferent com a conjunt de validació i la resta com a conjunt d'entrenament.

    • Avantatge: Utilitza totes les dades tant per a entrenament com per a validació.
    • Desavantatge: Pot ser computacionalment costós.
  2. Leave-One-Out Cross-Validation (LOOCV): Cada observació és utilitzada una vegada com a conjunt de validació mentre que la resta s'utilitza per a entrenament.

    • Avantatge: Utilitza totes les dades per a entrenament.
    • Desavantatge: Molt costós computacionalment per a grans conjunts de dades.

Hold-Out Validation

  1. Train/Test Split: Divideix les dades en dos subconjunts: un per a entrenament i un altre per a test. Una divisió comuna és 70% per a entrenament i 30% per a test.
    • Avantatge: Simple i ràpid.
    • Desavantatge: Pot no ser representatiu si el conjunt de dades és petit.

Exemple Pràctic

A continuació, es presenta un exemple pràctic d'avaluació i validació d'un model de classificació utilitzant K-Fold Cross-Validation amb la llibreria scikit-learn en Python.

import numpy as np
from sklearn.model_selection import KFold, cross_val_score
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier

# Carregar el conjunt de dades
iris = load_iris()
X, y = iris.data, iris.target

# Definir el model
model = RandomForestClassifier(n_estimators=100)

# Definir K-Fold Cross-Validation
kf = KFold(n_splits=5, shuffle=True, random_state=42)

# Avaluar el model utilitzant Cross-Validation
scores = cross_val_score(model, X, y, cv=kf, scoring='accuracy')

# Resultats
print(f'Precisió mitjana: {np.mean(scores):.2f}')
print(f'Desviació estàndard: {np.std(scores):.2f}')

Explicació del Codi

  1. Carregar el Conjunt de Dades: Utilitzem el conjunt de dades iris de scikit-learn.
  2. Definir el Model: Utilitzem un RandomForestClassifier amb 100 arbres.
  3. Definir K-Fold Cross-Validation: Utilitzem 5 folds, amb barrejament de dades i una llavor aleatòria per a la reproduïbilitat.
  4. Avaluar el Model: Utilitzem cross_val_score per avaluar el model amb precisió (accuracy).
  5. Resultats: Imprimim la precisió mitjana i la desviació estàndard dels scores obtinguts.

Exercici Pràctic

Exercici

  1. Carrega el conjunt de dades digits de scikit-learn.
  2. Defineix un model de classificació utilitzant LogisticRegression.
  3. Utilitza K-Fold Cross-Validation amb 10 folds per avaluar el model.
  4. Imprimeix la precisió mitjana i la desviació estàndard.

Solució

from sklearn.datasets import load_digits
from sklearn.linear_model import LogisticRegression

# Carregar el conjunt de dades
digits = load_digits()
X, y = digits.data, digits.target

# Definir el model
model = LogisticRegression(max_iter=10000)

# Definir K-Fold Cross-Validation
kf = KFold(n_splits=10, shuffle=True, random_state=42)

# Avaluar el model utilitzant Cross-Validation
scores = cross_val_score(model, X, y, cv=kf, scoring='accuracy')

# Resultats
print(f'Precisió mitjana: {np.mean(scores):.2f}')
print(f'Desviació estàndard: {np.std(scores):.2f}')

Conclusió

En aquesta secció, hem après sobre les mètriques d'avaluació per a problemes de classificació i regressió, així com les tècniques de validació com K-Fold Cross-Validation i Hold-Out Validation. També hem vist exemples pràctics de com implementar aquestes tècniques utilitzant scikit-learn en Python. Avaluar i validar correctament els models és crucial per assegurar que funcionin bé amb dades noves i per seleccionar el millor model per a una tasca específica.

© Copyright 2024. Tots els drets reservats