Click-through Rate (CTR) is a crucial metric that shows the percentage of visitors who click on an ad, providing insights into ad effectiveness. Businesses might considerably benefit from studying the click-through rate when developing their advertising tactics. By analyzing CTR statistics, companies may determine whether advertisements resonate with their target demographic and generate more engagement. By allocating money to the most effective advertising and modifying their marketing strategy to increase CTR, they are able to optimize their ad campaigns through Random forest classifier. The main objective of predicting ad CTR is:
Based on these goals, we will use the Random Forest to develop a model that can accurately estimate whether the user will click on an ad based on the user’s age, daily time spent on the site, daily internet usage, and gender. This article will guide you through predicting whether the user will click the ad using Random Forest Classifier. Now, let’s make the prediction through the steps in the article.
This article was published as a part of the Data Science Blogathon.
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
import plotly.graph_objects as go
import plotly.express as px
import plotly.io as pio
pio.templates.default = "plotly_white"
We imported the ‘plotly’ library for easy data visualization. The ‘graph_objects’ module is used to create interactive and customizable visualizations, including plots, charts, and graphs. The ‘express’ module provides a high-level interface to create data visualizations with less code and a simpler interface. The ‘io’ module is used to configure various settings related to visualisations, such as templates, themes, and rendering options. We call ‘RandomForestClassifier’ to model and predict ad CTR. And the last line of code sets the default template for the Plotly visualization to be “plotly_white”, which is a predefined light or white background color scheme.
The availability of data is critical for any data analysis task. A dataset with all the characteristics and variables necessary for the particular task is crucial. The dataset that Gaurav Dutta uploaded on Kaggle is appropriate in this specific instance. However, I put it on my GitHub to ease the analysis process.
url = "https://raw.githubusercontent.com/ataislucky/Data-Science/main/dataset/ad_ctr.csv"
data = pd.read_csv(url)
print(data.head())
Dataset ov
Below are all the features in the dataset:
data["Clicked on Ad"] = data["Clicked on Ad"].map({0: "No", 1: "Yes"})
The code above is for transforming the contents of the “Clicked on Ad” column where 0=No and 1=Yes
First, We do an analysis to find out if user activity affects CTR.
fig = px.box(data,
x="Daily Time Spent on Site",
color="Clicked on Ad",
title="Click Through Rate based on Time Spent on Site",
color_discrete_map={'Yes':'blue',
'No':'red'})
fig.update_traces(quartilemethod="exclusive")
fig.show()
CTR vs. Time spent
People seem to be more inclined to click on advertisements the longer they stay on internet pages. Second, we conducted an analysis to find out whether a user’s daily internet usage affects CTR.
fig = px.box(data,
x="Daily Internet Usage",
color="Clicked on Ad",
title="Click Through Rate based on Daily Internet Usage",
color_discrete_map={'Yes':'blue',
'No':'red'})
fig.update_traces(quartilemethod="exclusive")
fig.show()
CTR vs Daily internet usage
Based on the graph, more daily internet users will click ads more often. Next, we analyze whether the user’s age has an effect on the click-through rate.
fig = px.box(data,
x="Age",
color="Clicked on Ad",
title="Click Through Rate based on Age",
color_discrete_map={'Yes':'blue',
'No':'red'})
fig.update_traces(quartilemethod="exclusive")
fig.show()
CTR vs Age
Based on the graph above, users around the age of 40 dominate how often they click on ads. Next, we test whether user revenue has any effect on click-through rates.
fig = px.box(data,
x="Area Income",
color="Clicked on Ad",
title="Click Through Rate based on Income",
color_discrete_map={'Yes':'blue',
'No':'red'})
fig.update_traces(quartilemethod="exclusive")
fig.show()
CTR vs Income
High-income consumers are less likely to click on advertisements, although there appears to be hardly any difference that is statistically significant. The overall click-through rate for the ad is then calculated. Here, we must determine the proportion of users who left an impression on the advertisement versus those who clicked on it. So let’s examine the user distribution.
data["Clicked on Ad"].value_counts()
User Click
Therefore, 4917 out of 10,000 people clicked on the advertising. Let’s determine the CTR.
click_through_rate = 4917 / 10000 * 100
print(click_through_rate)
CTR score
Therefore, the CTR is 49.17.
Next, let’s create a machine-learning model that can forecast the click-through rate. The dataset will first be divided into training and testing sets. Before, the “Gender” column’s values had to be transformed into numbers. By substituting “Male” for “1” and “Female” for “0,” this effectively encodes the category variable “Gender” into binary form for quicker analysis. Moreover, the “Ad Topic Line” and “City” columns from the “x” dataframe should be deleted as they did not serve as input variables for the machine learning model.
data["Gender"] = data["Gender"].map({"Male": 1,"Female": 0})
x=data.iloc[:,0:7]
x=x.drop(['Ad Topic Line','City'],axis=1)
y=data.iloc[:,9]
xtrain,xtest,ytrain,ytest=train_test_split(x,y,test_size=0.2,random_state=33)
Now let’s deploy the random forecast classification model to train the data.
model = RandomForestClassifier()
model.fit(x, y)
Next, let’s calculate the accuracy of the model
y_pred = model.predict(xtest)
print(accuracy_score(ytest,y_pred))
Accuracy score
It turns out that the accuracy score is very good, which is equal to 95.2%.
Finally, we come to the model testing stage by making predictions based on existing features.
import warnings
warnings.filterwarnings("ignore")
print("Ads Click Through Rate Prediction : ")
a = float(input("Daily Time Spent on Site: "))
b = float(input("Age: "))
c = float(input("Area Income: "))
d = float(input("Daily Internet Usage: "))
e = input("Gender (Male = 1, Female = 0) : ")
features = np.array([[a, b, c, d, e]])
print("Will the user click on ad = ", model.predict(features))
Model Testing
Variables a, b, c, d, and e are the features inputted by the user, while the prediction results show “yes,” which indicates that if the daily time spent on site is 61.2, the age is 35, the income area is 5800, the daily internet usage is 115.21, and the gender is male, then the prediction result is “yes.”
This article starts by analyzing of the click-through rate based on daily time spent on the website, the age of the user, area income, daily internet usage, and user gander. Then, it calculates the CTR score based on the sum of users before predicting the ad click-through rate using Random Forest Classifier. Broadly speaking, in this post, we have discussed the following:
Overall, the article provides a comprehensive guide on ad click-through rate prediction with a Random Forest classifier using Python. If you have any questions or comments, please leave them below. The complete code is here.
The media shown in this article is not owned by Analytics Vidhya and is used at the Author’s discretion.