Final master’s project (TFM)
Predicting bank deposit subscriptions with machine learning and a deep polynomial neural network
A 2024 academic study comparing classical machine-learning baselines with a custom polynomial neural network built in PyTorch.
Master’s programme in Data Science and Business Analytics
IMF / UCAV / Indra · 2024
Final grade · 10/10
Context and data
The project connected my earlier background in marketing and banking with a more rigorous way of studying customer behaviour.
The task was to predict whether a customer would subscribe to a term deposit after a phone marketing campaign, using a public dataset from a Portuguese banking institution.
Approach
The work followed four main stages:
- Data preparation and exploratory analysis
- Feature analysis and dimensionality reduction
- Classical machine-learning baselines
- Design and evaluation of a deep polynomial neural network
Evaluation and results
The classical models provided a reference for evaluating the custom architecture.
In the documented evaluation, the polynomial network remained close to XGBoost overall and identified slightly more positive cases, while XGBoost retained slightly higher accuracy and AUC.
Limitations
The results belong to one historical dataset and its selected preprocessing and evaluation setup.
The outcome was imbalanced, so accuracy alone was not sufficient. Call duration described the completed interaction, limiting its usefulness for decisions made before contacting a customer. The project did not test production deployment or generalisation to another bank or later period.
What remains useful
The project reinforced a way of working that I still use: establish a baseline, define the evaluation criteria, increase complexity only when it is justified, and state limitations alongside the results.
Dataset
Bank Marketing, UCI Machine Learning Repository. Moro, Rita and Cortez, 2014.
Full thesis
The complete document is available in the reader below.
The full PDF is written primarily in Spanish.
Document loading
Document loading