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ó
- Carrega el conjunt de dades
iris
. - Divideix les dades en un conjunt d'entrenament (80%) i un conjunt de prova (20%).
- Entrena un model de classificació utilitzant l'algorisme
rpart
. - 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ó
- Carrega el conjunt de dades
mtcars
. - Divideix les dades en un conjunt d'entrenament (80%) i un conjunt de prova (20%).
- Realitza una cerca en graella per ajustar un model de regressió
glmnet
. - 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
- Introducció a R i RStudio
- Sintaxi Bàsica de R
- Tipus de Dades i Estructures
- Operacions i Funcions Bàsiques
- Importació i Exportació de Dades
Mòdul 2: Manipulació de Dades
- Vectors i Llistes
- Matrius i Arrays
- Data Frames
- Factors
- Manipulació de Dades amb dplyr
- Manipulació de Cadenes
Mòdul 3: Visualització de Dades
- Introducció a la Visualització de Dades
- Gràfics Base de R
- Conceptes Bàsics de ggplot2
- ggplot2 Avançat
- Visualitzacions Interactives amb plotly
Mòdul 4: Anàlisi Estadística
- Estadístiques Descriptives
- Distribucions de Probabilitat
- Proves d'Hipòtesi
- Correlació i Regressió
- ANOVA i Proves de Chi-Cuadrat
Mòdul 5: Gestió Avançada de Dades
- Gestió de Dates i Hores
- Reestructuració de Dades
- Treballant amb Grans Conjunts de Dades
- Web Scraping
- APIs i JSON
Mòdul 6: Conceptes Avançats de Programació
- Escriure Funcions
- Depuració i Gestió d'Errors
- Programació Orientada a Objectes en R
- Programació Funcional
- Computació Paral·lela
Mòdul 7: Aprenentatge Automàtic amb R
- Introducció a l'Aprenentatge Automàtic
- Preprocessament de Dades
- Aprenentatge Supervisat
- Aprenentatge No Supervisat
- Avaluació i Ajust de Models
Mòdul 8: Temes Especialitzats
- Anàlisi de Sèries Temporals
- Anàlisi de Dades Espacials
- Mineria de Text i Processament del Llenguatge Natural
- Bioinformàtica amb R
- Anàlisi de Dades Financeres