Modeling Tuition Status in Higher Education: A Machine Learning Approach Using European Tertiary Education Register (ETER) Data
This repository documents a machine learning project aimed at predicting the tuition fee status of European higher education institutions. The project uses the European Tertiary Education Register (ETER) dataset and employs an XGBoost classification model. The model classifies institutions into one of three categories: “No Fees,” “Partial Fees,” or “Fees for All Students,” based on a range of institutional characteristics.
The final model achieved an overall accuracy of 96.2% on the test set, demonstrating strong predictive capabilities. This work was undertaken as part of the LPO 7500-01 Machine Learning in Education course.
Abstract from the study: This study develops and evaluates an XGBoost classifier to predict tuition-fee regimes (“No Fees,” “Partial Fees,” and “Fees for All Students”) across European higher-education institutions, using institutional characteristics (legal status, capital and R&D spending, government funding, enrollment figures) drawn from the ETER dataset. After preprocessing (including K-nearest-neighbors imputation) and training on a cross-sectional sample (2018–2021), the model achieved 96.2% overall accuracy. Operationally, this tool can inform policymakers and institutional planners about the key financial and structural drivers of tuition policies. Yet, its cross-sectional design and uneven temporal coverage limit causal inferences, and reliance on KNN imputation may introduce sensitivity to parameter choice.
The primary goal of this project is to develop a robust predictive model that can accurately classify European universities based on their tuition status (No Fees, Partial Fees, or Fees for All Students). The research aims to provide actionable insights into the structural and financial characteristics that are most predictive of a university's tuition policy, contributing to discussions on educational equity and access.
- Name: European Tertiary Education Register (ETER)
- Source: ETER Project Website
- Years Covered in Analysis: 2018–2021 (treated as cross-sectional data)
- Description: The ETER dataset provides comprehensive information on higher education institutions across Europe, including details on institutional characteristics, revenue, expenditure, student enrollment, staffing, research activities, and more.
- Outcome Variable:
tuition_fees(Categorical: "No Fees", "Partial Fees", "Fees for All Students"). - Key Predictors: Legal status, institutional category, financial metrics (e.g., personnel expenditure, capital expenditure, R&D spending, government allocations - adjusted for PPP), staffing levels (FTE), student enrollment and graduation figures (by ISCED levels), and international activity indicators (e.g., Erasmus program participation).
The project follows a standard machine learning workflow using R and the tidymodels framework.
- The raw dataset (
eter_export_selected_variables_eu_updated.csv) was loaded and cleaned. - Special codes representing missing or various data quality issues (e.g., "m", "c", "s", "a", "x") were converted to
NA. - Numeric variables stored as characters were parsed into appropriate numeric types.
- Irrelevant identifiers and flags with excessive missingness were removed.
- Categorical variables were converted to factors with descriptive labels.
- The data was split into training (80%) and testing (20%) sets, stratified by the
tuition_feesoutcome variable. - A preprocessing recipe was defined, including:
- K-Nearest Neighbors (KNN) imputation for missing values (with
k=5). - Lumping of infrequent categorical factor levels into an "other" category (threshold 5%).
- Handling of unknown levels in categorical predictors.
- Creation of dummy variables for nominal predictors.
- Removal of zero-variance predictors.
- K-Nearest Neighbors (KNN) imputation for missing values (with
- Tuition Fee Distribution: Most institutions in the dataset charge "Partial Fees," followed by "Full Fees." "No Fees" was the least common category.
- Personnel Expenditure: Institutions with "Partial Fees" showed the highest median personnel expenditure, while "No Fees" institutions had the lowest.
- Legal Status & Personnel: "Private-Government Dependent" institutions charging "Partial Fees" had the highest median total personnel.
- Model Choice: XGBoost (eXtreme Gradient Boosting) was selected for its efficiency with large datasets, ability to capture non-linear relationships, robustness against overfitting (via regularization), and inherent feature importance capabilities.
- Implementation: The
boost_treemodel specification from theparsnippackage (engine:xgboost) was used for classification. - Hyperparameter Tuning:
- A space-filling grid search (30 combinations) was used to tune parameters like
tree_depth,min_n,loss_reduction,sample_size,mtry, andlearn_rate. - 10-fold cross-validation (stratified by
tuition_fees) was employed during tuning. - The primary metric for selecting the best model was ROC AUC.
- A space-filling grid search (30 combinations) was used to tune parameters like
- Optimal Hyperparameters: The tuning process identified that optimal performance was generally associated with a small learning rate, minimal loss reduction, moderately deep trees (around 8-12), and sampling a significant portion of features and training data per tree.
- Test Set Performance (Final Model):
- ROC AUC: 0.989 (Excellent discrimination)
- Accuracy: 0.962 (96.2% of institutions correctly classified)
- Brier Class Score: 0.02 (Indicates well-calibrated predicted probabilities)
- Variable Importance:
- The most influential predictor was
legal_status_Private(whether an institution is private). - Other significant factors included capital expenditure, basic government allocation, the presence of ISCED-6 degrees, R&D expenditure, and various measures of student enrollment and personnel (FTE).
- The most influential predictor was
- Confusion Matrix Highlights:
- The model performed well across all classes, with "Partial Fees" being the most accurately predicted (also the most frequent class).
- The primary misclassifications involved confusing "No Fees" with "Partial Fees," and "Fees for All Students" with "Partial Fees."
- Notably, the model never misclassified an institution charging "Fees for All Students" as one charging "No Fees," and vice-versa.
README.md: This file.Final Project/: Contains the main R Markdown file for the final paper (lpo_7500_final_project_ali_abid.Rmd), its rendered PDF output, the bibliography (eterproject.bib), the primary dataset used (eter_export_selected_variables_eu_updated.csv), and the saved tuned XGBoost model object (xg_tune_resampled.Rdata). An outline Rmd is also present.Project Check-in I/: Includes the R Markdown file, PDF/HTML outputs, and initial dataset for the first project milestone.Project Check-in II/: Contains R Markdown files, outputs, and datasets for the second project milestone focusing on EDA.Project Check-in III/: Holds the R Markdown file, datasets, and saved model for the third milestone, which details the initial XGBoost model construction and tuning..gitattributes,.gitignore: Git configuration files.
- Software:
- R (version 4.0 or higher recommended)
- RStudio IDE (recommended for working with R Markdown files)
- R Libraries: Ensure the following R packages are installed. You can install them using
install.packages("package_name").tidyverse(for data manipulation and visualization, includesggplot2,dplyr,readr, etc.)tidymodels(for the modeling framework, includesrsample,parsnip,recipes,workflows,tune,yardstick)xgboost(the engine for the XGBoost model)vip(for variable importance plots)formattable(used for table formatting in Rmd)janitor(for data cleaning tasks likeclean_names())natbib&stevetemplates(used for formatting the final R Markdown paper -Final Project/lpo_7500_final_project_ali_abid.Rmd)
- Data: The primary dataset (
eter_export_selected_variables_eu_updated.csv) is located in theFinal Project/andProject Check-in II/&Project Check-in III/directories. - Execution:
- Navigate to the relevant project directory (e.g.,
Final Project/). - Open the R Markdown file (e.g.,
lpo_7500_final_project_ali_abid.Rmd) in RStudio. - The Rmd files can be "knitted" in RStudio to reproduce the analysis and reports.
- Note on Model Training: The XGBoost hyperparameter tuning and final model training can be computationally intensive. The Rmd files in
Project Check-in IIIandFinal Projectinclude logic to load a pre-tuned model object (xg_tune_resampled.Rdata) to save time if it's available in the working directory. To run the tuning from scratch, you might need to setfit_model <- TRUEin the Rmd code and ensure the RData file is not present or an alternative path is specified.
- Navigate to the relevant project directory (e.g.,
- Cross-Sectional Analysis: While the ETER dataset has a longitudinal component, this analysis treats the data as cross-sectional due to inconsistencies in year-to-year reporting for all institutions. This limits the ability to draw causal inferences or model temporal trends.
- Imputation Method: K-Nearest Neighbors (KNN) imputation was used. The performance of KNN can be sensitive to the choice of
kand the distance metric. XGBoost can internally handle missing values, which could be an alternative approach. - Model Scope: The study focused exclusively on XGBoost. Comparisons with other machine learning algorithms (e.g., Random Forest, SVM, Neural Networks) were not performed due to time constraints.
- Temporal Analysis: Incorporate the time-series nature of the ETER data to model changes in tuition status over time.
- Imputation Strategy: Further investigate the impact of different missing data imputation techniques or leverage XGBoost's built-in capabilities for handling missingness.
- Comparative Model Analysis: Extend the research to include and compare the performance of other classification algorithms.
- Author: Ali Abid, M.Ed. (Vanderbilt University, Peabody College)
- Email:
ali.abid@vanderbilt.edu - GitHub: aliabidhasan
- Email:
- Acknowledgements: Special thanks to Professor Will Doyle for his support and guidance in making machine learning understandable.