Welcome to a fresh chapter of our Feature Engineering for Machine Learning! Today, we'll unravel an insightful element of machine learning models: feature interaction
. Using our trusty sidekick, the UCI Abalone Dataset, we'll traverse the fascinating world of feature interaction and discover its unparalleled influence on model accuracy.
Feature interaction plays a vital role, especially in the world of machine learning. When multiple attributes jointly influence the target in a way that individual features cannot capture, they are said to "interact". By recognizing and leveraging these interactions, we can guide our machine-learning models to make more accurate predictions.
In a machine-learning context, feature interaction can be divided into additive and multiplicative interactions. An additive interaction means that the effects of two or more individual features combine, contributing to the target variable. Conversely, multiplicative interaction implies that features enhance or dampen each other's impact.
Consider a real-life scenario. Predicting an individual's happiness isn't solely dependent on their personal life or work life. Instead, it's an interaction of both. A balance between a satisfying personal and work life leads to a happy individual.
Let's unravel the potential interactions hidden within our UCI Abalone Dataset. We'll engineer new features based on our conjectures and assess their impact.
Python1from ucimlrepo import fetch_ucirepo 2import pandas as pd 3import seaborn as sns 4import matplotlib.pyplot as plt 5 6# Collect the UCI Abalone dataset 7abalone = fetch_ucirepo(id=1) 8X = abalone.data.features 9y = abalone.data.targets 10 11# Engineering new features which multiply Shucked weight and height. 12X['Shucked_weight*Height'] = X['Shucked_weight'] * X['Height'] 13 14# Exclude the categorical feature 'Sex' before computing the correlation matrix 15numerical_features = X.select_dtypes(include=['float64', 'int64']) 16 17# Creating a correlation matrix for numerical features 18correlation_matrix = numerical_features.corr() 19 20# Display correlation matrix as a heatmap 21sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm') 22plt.show()
Displaying the correlation matrix as a heatmap provides us with a holistic view of how each feature relates to the others. The color intensity indicates the correlation's strength, painting a more vivid picture.
Model accuracy reflects the proportion of correct predictions made by the machine learning model. It precisely communicates how the model performs across a series of tests or holdouts.
Let's witness the impact of feature interaction by creating a machine-learning model with and without our engineered feature:
Python1# Importing necessary libraries 2from sklearn.model_selection import train_test_split 3from sklearn.linear_model import LinearRegression 4from sklearn.metrics import mean_squared_error 5 6# Perform one-hot encoding on the 'Sex' column 7X_encoded = pd.get_dummies(X, columns=['Sex']) 8 9# Baseline model excluding the engineered feature 10X_base = X_encoded.drop('Shucked_weight*Height', axis=1) 11X_train, X_test, y_train, y_test = train_test_split(X_base, y, test_size=0.2, random_state=42) 12lr_base = LinearRegression() 13lr_base.fit(X_train, y_train) 14y_pred_base = lr_base.predict(X_test) 15mse_base = mean_squared_error(y_test, y_pred_base) 16 17# Model including the engineered feature 18X_train, X_test, y_train, y_test = train_test_split(X_encoded, y, test_size=0.2, random_state=42) 19lr = LinearRegression() 20lr.fit(X_train, y_train) 21y_pred = lr.predict(X_test) 22mse = mean_squared_error(y_test, y_pred) 23 24# Displaying the model performance 25print(f"MSE for Baseline model: {mse_base}") 26print(f"MSE for Model with engineered feature: {mse}")
output
Markdown1MSE for Baseline model: 4.891232447128562 2MSE for Model with engineered feature: 4.847949790041983
In this case, our model is evaluated based on the Mean Square Error(MSE). A lower MSE implies that the predicted values deviate less from the actual values, indicating a model that excels in predictions. While the impact of the feature is not very meaningful, we still see an improvement in prediction quality.
Kudos on journeying through the intriguing landscape of feature interaction! You've gained a comprehensive understanding of feature interaction, engineered features based on interactions, and observed their effect on model accuracy.
Feature interaction paves new pathways, enabling machine learning models to capture more complex relationships and enhance their predictive power.
Before we wrap up, you'll encounter several practice exercises designed to reinforce and apply the skills and knowledge you've gained today. Enjoy exploring multiple feature combinations and the unique impacts they project. Remember, the more you practice, the more you learn. Happy engineering!