Model Evaluation in R

📘 Introduction

Model evaluation is the process of measuring how well a machine learning model performs on unseen data. It helps determine whether a model makes accurate predictions, generalizes well to new data, and is suitable for real-world applications. Proper evaluation ensures that a model is reliable and not simply memorizing the training data.

Information

A model with high training accuracy is not always a good model. Effective evaluation focuses on performance using unseen test or validation data.

🎯 Why Evaluate Machine Learning Models?

  • Measure prediction accuracy.
  • Compare different machine learning models.
  • Detect overfitting and underfitting.
  • Improve model performance.
  • Select the best model for deployment.

📚 Model Evaluation Workflow

Collect Data
Split Data
Train Model
Make Predictions
Evaluate Performance
Improve Model
Deploy Model

✂️ Splitting Data

A dataset is typically divided into training and testing sets. The model learns from the training data and is evaluated using the testing data.

Train-Test Split

library(caret)

set.seed(123)

trainIndex <- createDataPartition(
  iris$Species,
  p = 0.8,
  list = FALSE
)

trainData <- iris[
  trainIndex,
]

testData <- iris[
  -trainIndex,
]

📝 Training a Classification Model

Random Forest Model

library(randomForest)

model <- randomForest(
  Species ~ .,
  data = trainData
)

🎯 Making Predictions

Predicting Test Data

predictions <- predict(
  model,
  testData
)

head(predictions)

📊 Confusion Matrix

A confusion matrix summarizes classification results by comparing predicted and actual values.

Confusion Matrix

library(caret)

confusionMatrix(
  predictions,
  testData$Species
)

📋 Confusion Matrix Components

TermDescription
True Positive (TP)Correct positive prediction.
True Negative (TN)Correct negative prediction.
False Positive (FP)Incorrect positive prediction.
False Negative (FN)Incorrect negative prediction.

📈 Classification Metrics

MetricFormulaMeaning
Accuracy(TP + TN) / TotalOverall prediction correctness.
PrecisionTP / (TP + FP)Positive prediction reliability.
RecallTP / (TP + FN)Ability to detect positives.
F1 Score2 × Precision × Recall / (Precision + Recall)Balance between precision and recall.
SpecificityTN / (TN + FP)Ability to identify negatives.

📊 Calculating Accuracy

Manual Accuracy Calculation

actual <- c(
  "Yes",
  "No",
  "Yes",
  "Yes",
  "No"
)

predicted <- c(
  "Yes",
  "No",
  "No",
  "Yes",
  "No"
)

accuracy <- mean(
  actual == predicted
)

print(accuracy)

Output

Console Output

[1] 0.8

📉 Regression Evaluation Metrics

Regression models predict continuous values and require different evaluation metrics.

MetricDescription
MAEMean Absolute Error.
MSEMean Squared Error.
RMSERoot Mean Squared Error.
Coefficient of Determination.

📏 Mean Absolute Error (MAE)

MAE Calculation

actual <- c(
  100,
  120,
  130,
  150
)

predicted <- c(
  98,
  125,
  128,
  148
)

mae <- mean(
  abs(
    actual - predicted
  )
)

print(mae)

📐 Mean Squared Error (MSE)

MSE Calculation

mse <- mean(
  (
    actual - predicted
  )^2
)

print(mse)

📏 Root Mean Squared Error (RMSE)

RMSE Calculation

rmse <- sqrt(mse)

print(rmse)

📈 Coefficient of Determination (R²)

R² measures how much of the variation in the target variable is explained by the model.

Linear Regression Summary

model <- lm(
  Sepal.Length ~
    Sepal.Width +
    Petal.Length +
    Petal.Width,
  data = iris
)

summary(model)

🔄 Cross-Validation

Cross-validation evaluates a model by repeatedly splitting the data into training and validation sets.

10-Fold Cross Validation

library(caret)

control <- trainControl(
  method = "cv",
  number = 10
)

model <- train(
  Species ~ .,
  data = iris,
  method = "rf",
  trControl = control
)

print(model)

📊 k-Fold Cross-Validation

In k-fold cross-validation, the dataset is divided into k equal parts. Each part serves as the validation set once while the remaining parts are used for training.

Dataset
Split into k Folds
Train on k-1 Folds
Validate on Remaining Fold
Repeat for All Folds
Average Performance

📉 Overfitting vs Underfitting

ProblemDescriptionSolution
OverfittingModel memorizes training data and performs poorly on new data.Use cross-validation, regularization, or simplify the model.
UnderfittingModel is too simple to capture patterns.Increase model complexity or improve features.

📊 ROC Curve and AUC

The Receiver Operating Characteristic (ROC) curve evaluates binary classification models across different decision thresholds. The Area Under the Curve (AUC) summarizes overall classification performance.

AUC ValueInterpretation
1.0Perfect classifier.
0.9–1.0Excellent.
0.8–0.9Good.
0.7–0.8Fair.
0.5No better than random guessing.

🌍 Real-World Example

A hospital develops a machine learning model to predict whether patients have a particular disease. The model is evaluated using a confusion matrix, accuracy, precision, recall, and cross-validation before being deployed for clinical decision support.

Disease Prediction Evaluation

library(caret)

prediction <- predict(
  model,
  testData
)

evaluation <- confusionMatrix(
  prediction,
  testData$Species
)

print(evaluation)

🔄 Model Evaluation Workflow

Prepare Dataset
Split Data
Train Model
Predict Test Data
Calculate Metrics
Improve Model
Deploy Best Model

📋 Common Evaluation Functions

FunctionDescription
confusionMatrix()Evaluates classification performance.
predict()Generates model predictions.
train()Trains models using cross-validation.
trainControl()Defines resampling strategies.
summary()Displays regression statistics.

⚠️ Common Mistakes

MistakeExplanationSolution
Evaluating only training accuracyTraining accuracy may be misleading due to overfitting.Always evaluate using test or validation data.
Relying on accuracy aloneAccuracy may be misleading for imbalanced datasets.Also examine precision, recall, F1 score, and AUC.
Ignoring cross-validationPerformance estimates may not generalize well.Use k-fold cross-validation for robust evaluation.
Not checking for overfittingA model may perform well on training data but poorly on unseen data.Compare training and testing performance and tune the model accordingly.

💡 Best Practices

  • Always keep separate training and testing datasets.
  • Use cross-validation for reliable performance estimation.
  • Evaluate models using multiple metrics rather than a single measure.
  • Inspect confusion matrices to understand prediction errors.
  • Select the model that balances accuracy, simplicity, and generalization.

Best Practice

Model evaluation is a critical step in machine learning. A well-evaluated model should not only achieve strong performance on known data but also generalize effectively to unseen data, ensuring reliable predictions in real-world applications.

📝 Summary

Model evaluation measures how effectively a machine learning model performs on unseen data. In this chapter, you learned how to split datasets, make predictions, evaluate classification models using confusion matrices, accuracy, precision, recall, F1 score, and specificity, assess regression models using MAE, MSE, RMSE, and R², perform cross-validation, and identify overfitting and underfitting. Mastering these evaluation techniques enables you to compare models objectively and select reliable solutions for practical machine learning tasks.

>>"A machine learning model is only as valuable as its ability to perform accurately on new, unseen data."