En aquest tema, aprendrem com avaluar el rendiment dels models d'aprenentatge automàtic i com ajustar-los per millorar la seva precisió. Aquest procés és crucial per assegurar que els models no només funcionin bé amb les dades d'entrenament, sinó que també generalitzin bé amb dades noves.

Continguts

Mètriques d'Avaluació

Mètriques per a Models de Classificació

  • Precisió (Accuracy): Proporció de prediccions correctes sobre el total de prediccions.
  • Precisió (Precision): Proporció de prediccions positives correctes sobre el total de prediccions positives.
  • Sensibilitat (Recall): Proporció de casos positius correctament identificats.
  • F1-Score: Mitjana harmònica de la precisió i la sensibilitat.
  • Matriz de Confusió: Taula que permet visualitzar el rendiment del model.

Mètriques per a Models de Regressió

  • Error Quadràtic Mitjà (MSE): Promig dels quadrats dels errors.
  • Error Absolut Mitjà (MAE): Promig dels valors absoluts dels errors.
  • Coeficient de Determinació (R²): Mesura la proporció de la variància en la variable dependent que és previsible a partir de la variable independent.

Exemple de Codi

# Exemple de mètriques per a un model de classificació
library(caret)

# Dades d'exemple
data(iris)
set.seed(123)
trainIndex <- createDataPartition(iris$Species, p = .8, 
                                  list = FALSE, 
                                  times = 1)
irisTrain <- iris[ trainIndex,]
irisTest  <- iris[-trainIndex,]

# Entrenament del model
model <- train(Species ~ ., data = irisTrain, method = "rpart")

# Prediccions
predictions <- predict(model, irisTest)

# Matriu de confusió
confusionMatrix(predictions, irisTest$Species)

Validació Creuada

La validació creuada és una tècnica per avaluar el rendiment d'un model de manera més robusta. Consisteix en dividir les dades en múltiples subconjunts, entrenar el model en alguns d'aquests subconjunts i validar-lo en els restants.

Tipus de Validació Creuada

  • K-Fold Cross-Validation: Divideix les dades en k subconjunts. El model s'entrena k vegades, cada vegada utilitzant un subconjunt diferent com a conjunt de validació.
  • Leave-One-Out Cross-Validation (LOOCV): Cada observació és utilitzada una vegada com a conjunt de validació, i la resta com a conjunt d'entrenament.

Exemple de Codi

# Exemple de K-Fold Cross-Validation
control <- trainControl(method="cv", number=10)
model <- train(Species ~ ., data=iris, method="rpart", trControl=control)
print(model)

Ajust de Models

L'ajust de models implica la selecció dels millors hiperparàmetres per a un model. Això es pot fer mitjançant tècniques com la cerca en graella (Grid Search) o la cerca aleatòria (Random Search).

Cerca en Graella (Grid Search)

La cerca en graella prova totes les combinacions possibles d'un conjunt predefinit de valors d'hiperparàmetres.

Exemple de Codi

# Exemple de Grid Search
grid <- expand.grid(.cp = seq(0.01, 0.1, by = 0.01))
control <- trainControl(method="cv", number=10)
model <- train(Species ~ ., data=iris, method="rpart", trControl=control, tuneGrid=grid)
print(model)

Exemples Pràctics

Exemple 1: Avaluació d'un Model de Classificació

# Dades d'exemple
data(iris)
set.seed(123)
trainIndex <- createDataPartition(iris$Species, p = .8, 
                                  list = FALSE, 
                                  times = 1)
irisTrain <- iris[ trainIndex,]
irisTest  <- iris[-trainIndex,]

# Entrenament del model
model <- train(Species ~ ., data = irisTrain, method = "rpart")

# Prediccions
predictions <- predict(model, irisTest)

# Matriu de confusió
confusionMatrix(predictions, irisTest$Species)

Exemple 2: Ajust d'un Model de Regressió

# Dades d'exemple
data(mtcars)
set.seed(123)
trainIndex <- createDataPartition(mtcars$mpg, p = .8, 
                                  list = FALSE, 
                                  times = 1)
mtcarsTrain <- mtcars[ trainIndex,]
mtcarsTest  <- mtcars[-trainIndex,]

# Grid Search per a un model de regressió
grid <- expand.grid(.alpha = seq(0, 1, by = 0.1), .lambda = seq(0.01, 0.1, by = 0.01))
control <- trainControl(method="cv", number=10)
model <- train(mpg ~ ., data=mtcarsTrain, method="glmnet", trControl=control, tuneGrid=grid)

# Prediccions
predictions <- predict(model, mtcarsTest)

# Mètriques d'avaluació
postResample(predictions, mtcarsTest$mpg)

Exercicis

Exercici 1: Avaluació d'un Model de Classificació

  1. Carrega el conjunt de dades iris.
  2. Divideix les dades en un conjunt d'entrenament (80%) i un conjunt de prova (20%).
  3. Entrena un model de classificació utilitzant l'algorisme rpart.
  4. Avalua el model utilitzant una matriu de confusió.

Solució

# Carrega el conjunt de dades
data(iris)
set.seed(123)
trainIndex <- createDataPartition(iris$Species, p = .8, 
                                  list = FALSE, 
                                  times = 1)
irisTrain <- iris[ trainIndex,]
irisTest  <- iris[-trainIndex,]

# Entrenament del model
model <- train(Species ~ ., data = irisTrain, method = "rpart")

# Prediccions
predictions <- predict(model, irisTest)

# Matriu de confusió
confusionMatrix(predictions, irisTest$Species)

Exercici 2: Ajust d'un Model de Regressió

  1. Carrega el conjunt de dades mtcars.
  2. Divideix les dades en un conjunt d'entrenament (80%) i un conjunt de prova (20%).
  3. Realitza una cerca en graella per ajustar un model de regressió glmnet.
  4. Avalua el model utilitzant les mètriques MSE i MAE.

Solució

# Carrega el conjunt de dades
data(mtcars)
set.seed(123)
trainIndex <- createDataPartition(mtcars$mpg, p = .8, 
                                  list = FALSE, 
                                  times = 1)
mtcarsTrain <- mtcars[ trainIndex,]
mtcarsTest  <- mtcars[-trainIndex,]

# Grid Search per a un model de regressió
grid <- expand.grid(.alpha = seq(0, 1, by = 0.1), .lambda = seq(0.01, 0.1, by = 0.01))
control <- trainControl(method="cv", number=10)
model <- train(mpg ~ ., data=mtcarsTrain, method="glmnet", trControl=control, tuneGrid=grid)

# Prediccions
predictions <- predict(model, mtcarsTest)

# Mètriques d'avaluació
postResample(predictions, mtcarsTest$mpg)

Conclusió

En aquesta secció, hem après com avaluar el rendiment dels models d'aprenentatge automàtic utilitzant diverses mètriques i tècniques de validació creuada. També hem explorat com ajustar els models per millorar el seu rendiment. Aquestes habilitats són essencials per desenvolupar models robustos i precisos que puguin generalitzar bé a noves dades.

Programació en R: De Principiant a Avançat

Mòdul 1: Introducció a R

Mòdul 2: Manipulació de Dades

Mòdul 3: Visualització de Dades

Mòdul 4: Anàlisi Estadística

Mòdul 5: Gestió Avançada de Dades

Mòdul 6: Conceptes Avançats de Programació

Mòdul 7: Aprenentatge Automàtic amb R

Mòdul 8: Temes Especialitzats

Mòdul 9: Projecte i Estudis de Cas

© Copyright 2024. Tots els drets reservats