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ó
- Mesurar el Rendiment del Model: Determinar com de bé el model prediu o classifica les dades.
- Evitar el Sobreajustament (Overfitting): Assegurar que el model generalitzi bé a noves dades i no només memoritzi les dades d'entrenament.
- Comparar Models: Avaluar diferents models per seleccionar el millor per a una tasca específica.
Mètriques d'Avaluació
Per a Problemes de Classificació
-
Precisió (Accuracy): Proporció de prediccions correctes sobre el total de prediccions. \[ \text{Precisió} = \frac{\text{Nombre de prediccions correctes}}{\text{Total de prediccions}} \]
-
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}} \]
-
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}} \]
-
F1-Score: Mitjana harmònica de la precisió i la sensibilitat. \[ F1 = 2 \cdot \frac{\text{Precisió} \cdot \text{Sensibilitat}}{\text{Precisió} + \text{Sensibilitat}} \]
-
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ó
-
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 \]
-
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| \]
-
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)
-
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.
-
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
- 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
- Carregar el Conjunt de Dades: Utilitzem el conjunt de dades
iris
descikit-learn
. - Definir el Model: Utilitzem un
RandomForestClassifier
amb 100 arbres. - Definir K-Fold Cross-Validation: Utilitzem 5 folds, amb barrejament de dades i una llavor aleatòria per a la reproduïbilitat.
- Avaluar el Model: Utilitzem
cross_val_score
per avaluar el model amb precisió (accuracy
). - Resultats: Imprimim la precisió mitjana i la desviació estàndard dels scores obtinguts.
Exercici Pràctic
Exercici
- Carrega el conjunt de dades
digits
descikit-learn
. - Defineix un model de classificació utilitzant
LogisticRegression
. - Utilitza K-Fold Cross-Validation amb 10 folds per avaluar el model.
- 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.
Fonaments d'Intel·ligència Artificial (IA)
Mòdul 1: Introducció a la Intel·ligència Artificial
Mòdul 2: Principis Bàsics de la IA
Mòdul 3: Algoritmes en IA
Mòdul 4: Aprenentatge Automàtic (Machine Learning)
- Conceptes Bàsics de Machine Learning
- Tipus d'Aprenentatge Automàtic
- Algoritmes de Machine Learning
- Avaluació i Validació de Models
Mòdul 5: Xarxes Neuronals i Deep Learning
- Introducció a les Xarxes Neuronals
- Arquitectura de Xarxes Neuronals
- Deep Learning i les seves Aplicacions