Automated feature selection is a crucial step in the data pre-processing stage for machine learning models. Stepwise model selection, guided by the Akaike Information Criterion (AIC), is an effective method to achieve this. In the R programming language, the stepAIC
function is provided for this purpose as part of the MASS
package. In this article, we will go through a detailed guide on how to use the stepAIC
function in R for feature selection.
Table of Contents
- Introduction to AIC
- Installing and Loading Required Packages
- Data Preparation
- Building an Initial Model
- Running stepAIC
- Interpretation and Understanding the Output
- Further Considerations
- Limitations and Drawbacks
- Conclusion
1. Introduction to AIC
Before diving into the step-by-step guide, it’s essential to understand what AIC stands for and what it aims to achieve. Akaike Information Criterion (AIC) is a metric devised by Hirotsugu Akaike in 1973. The AIC estimates the relative quality of different statistical models. Lower AIC values indicate a better fit of the model to the data, while penalizing the model for its complexity. The formula for calculating AIC is:

Where k is the number of estimated parameters in the model, and L^ is the maximized value of the likelihood function for the model.
2. Installing and Loading Required Packages
First of all, you need to install the MASS
package if you haven’t done so already. You can install it from CRAN by running:
install.packages("MASS")
After the installation is complete, load the package using:
library(MASS)
3. Data Preparation
The next step is to prepare the dataset. For demonstration purposes, let’s use the built-in mtcars
dataset:
data(mtcars)
head(mtcars)
4. Building an Initial Model
Before running stepAIC
, you must fit an initial model that serves as the starting point. Typically, the initial model contains all possible predictors:
initial_model <- lm(mpg ~ ., data = mtcars)
summary(initial_model)
5. Running stepAIC
With the initial model in place, it’s time to run stepAIC
:
stepwise_model <- stepAIC(initial_model, direction = "both")
The direction
parameter can take one of the three values: “forward”, “backward”, or “both”, signifying the type of stepwise selection to perform.
6. Interpretation and Understanding the Output
After running stepAIC
, you’ll see a series of outputs indicating which predictors were added or dropped at each step. At the end, the function returns the best model according to the AIC.
You can review the details of the final model using:
summary(stepwise_model$finalModel)
7. Further Considerations
- Validation: Always validate your model using techniques like cross-validation to avoid overfitting.
- Multi-Collinearity: Beware that
stepAIC
doesn’t handle multicollinearity well. Consider using techniques like VIF to deal with it. - Interaction terms: You can include interaction terms in the initial model if you suspect that the effect of predictors is not additive.
8. Limitations and Drawbacks
- Computational Expense: For a large number of predictors, the algorithm can become computationally expensive.
- Local Optima: The function might return a local minimum AIC value, not necessarily the global minimum.
9. Conclusion
Using stepAIC
in R provides a structured, automated approach to feature selection based on AIC. Though it’s powerful, one must be cautious of its limitations and always validate the final model.
By understanding how to effectively use stepAIC
in R, you can better prepare your datasets for machine learning models, ensuring that only the most relevant features are included, thereby improving the model’s performance while reducing complexity.