<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="research-article" dtd-version="2.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Physiol.</journal-id>
<journal-title>Frontiers in Physiology</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Physiol.</abbrev-journal-title>
<issn pub-type="epub">1664-042X</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">1665128</article-id>
<article-id pub-id-type="doi">10.3389/fphys.2025.1665128</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Physiology</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Heart disease prediction using hybrid TabNet architecture with stacked ensemble learning</article-title>
<alt-title alt-title-type="left-running-head">Yasmeen et al.</alt-title>
<alt-title alt-title-type="right-running-head">
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3389/fphys.2025.1665128">10.3389/fphys.2025.1665128</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname>Yasmeen</surname>
<given-names>Rizwana</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<role content-type="https://credit.niso.org/contributor-roles/investigation/"/>
<role content-type="https://credit.niso.org/contributor-roles/methodology/"/>
<role content-type="https://credit.niso.org/contributor-roles/software/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Khan</surname>
<given-names>Lal</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/3132863/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/conceptualization/"/>
<role content-type="https://credit.niso.org/contributor-roles/methodology/"/>
<role content-type="https://credit.niso.org/contributor-roles/supervision/"/>
<role content-type="https://credit.niso.org/contributor-roles/validation/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Choi</surname>
<given-names>Ahyoung</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/489726/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/formal-analysis/"/>
<role content-type="https://credit.niso.org/contributor-roles/funding-acquisition/"/>
<role content-type="https://credit.niso.org/contributor-roles/project-administration/"/>
<role content-type="https://credit.niso.org/contributor-roles/validation/"/>
<role content-type="https://credit.niso.org/contributor-roles/visualization/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
</contrib>
</contrib-group>
<aff id="aff1">
<sup>1</sup>
<institution>Department of Computer Science, National University of Modern Languages (NUML)</institution>, <addr-line>Islamabad</addr-line>, <country>Pakistan</country>
</aff>
<aff id="aff2">
<sup>2</sup>
<institution>Department of AI and SW, Gachon University</institution>, <addr-line>Seongnam</addr-line>, <country>Republic of Korea</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/75268/overview">Ahsan H. Khandoker</ext-link>, Khalifa University, United Arab Emirates</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2054538/overview">Xu Huang</ext-link>, Nanjing University of Science and Technology, China</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1025013/overview">Jagadish Nayak</ext-link>, Birla Institute of Technology and Science, United Arab Emirates</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1632117/overview">Hariharan Shanmugasundaram</ext-link>, Vel Tech Rangarajan Dr.Sagunthala R&#x26;D Institute of Science and Technology, India</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Lal Khan, <email>lalkhan@gachon.ac.kr</email>; Ahyoung Choi, <email>aychoi@gachon.ac.kr</email>
</corresp>
</author-notes>
<pub-date pub-type="epub">
<day>05</day>
<month>11</month>
<year>2025</year>
</pub-date>
<pub-date pub-type="collection">
<year>2025</year>
</pub-date>
<volume>16</volume>
<elocation-id>1665128</elocation-id>
<history>
<date date-type="received">
<day>21</day>
<month>07</month>
<year>2025</year>
</date>
<date date-type="accepted">
<day>08</day>
<month>10</month>
<year>2025</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2025 Yasmeen, Khan and Choi.</copyright-statement>
<copyright-year>2025</copyright-year>
<copyright-holder>Yasmeen, Khan and Choi</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract>
<p>Cardiovascular diseases (CVDs) remain the leading cause of death worldwide, and early detection is critical for timely intervention and improved patient outcomes. However, current prediction tools are often limited by noisy, heterogeneous patient data and modest accuracy. To address this challenge, we propose a stacked ensemble framework that integrates: TabNet, a deep learning model that can identify the most relevant clinical features, and XGBoost, a powerful tree-based method known for its robustness. Their outputs are integrated using a Logistic Regression (LR) or Support Vector Machine (SVM) as meta learner, creating a system that balances accuracy and interpretability. Testing on Kaggle and UCI CVD datasets demonstrate that our ensemble consistently outperforms baseline models across accuracy, F1-score, precision, recall, ROC-AUC, PR-AUC, and matthews correlation coefficient (MCC). These results suggest that combining deep learning with tree-based models offers a practical way to improve risk prediction, supporting clinicians in making more reliable decisions for early CVD detection.</p>
</abstract>
<kwd-group>
<kwd>heart disease</kwd>
<kwd>cardiovascular risk</kwd>
<kwd>TabNet</kwd>
<kwd>ensemble learning</kwd>
<kwd>XGBoost</kwd>
<kwd>machine learning</kwd>
<kwd>clinical decision support</kwd>
</kwd-group>
<custom-meta-wrap>
<custom-meta>
<meta-name>section-at-acceptance</meta-name>
<meta-value>Computational Physiology and Medicine</meta-value>
</custom-meta>
</custom-meta-wrap>
</article-meta>
</front>
<body>
<sec sec-type="intro" id="s1">
<title>1 Introduction</title>
<p>Heart disease remains one of the leading health challenges worldwide. According to the World Health Organization, approximately 17.9 million people die annually from cardiovascular diseases (CVDs) (<xref ref-type="bibr" rid="B30">Mandava et al., 2024</xref>; <xref ref-type="bibr" rid="B3">Akhila et al., 2024</xref>). Several studies have reported an increasing incidence of heart disease over the years; therefore, early and accurate detection is of paramount importance (<xref ref-type="bibr" rid="B41">Seoni et al., 2024</xref>). The availability of medical datasets, together with advances in machine learning (ML), has created opportunities to predict and detect a wide range of diseases, including migraine <xref ref-type="bibr" rid="B25">Khan et al. (2024)</xref>, depression detection <xref ref-type="bibr" rid="B28">Kumar et al. (2025b)</xref>, Alzheimer&#x2019;s Disease Detection <xref ref-type="bibr" rid="B31">Mehmood et al. (2025)</xref> and cardiovascular disease (<xref ref-type="bibr" rid="B46">Tekin and Kaya, 2024</xref>; <xref ref-type="bibr" rid="B5">Alghamdi et al., 2024</xref>; <xref ref-type="bibr" rid="B45">Szugye et al., 2025</xref>). Deep learning models have also shown excellent performance in fields such as speech recognition <xref ref-type="bibr" rid="B7">Amjad et al. (2021a)</xref>, <xref ref-type="bibr" rid="B8">Amjad et al. (2021b)</xref>, <xref ref-type="bibr" rid="B10">Amjad et al. (2022b)</xref>, <xref ref-type="bibr" rid="B9">Amjad et al. (2022a)</xref>, natural language processing <xref ref-type="bibr" rid="B22">Khan et al. (2021)</xref>, <xref ref-type="bibr" rid="B24">Khan et al. (2022b)</xref>, <xref ref-type="bibr" rid="B12">Ashraf et al. (2022)</xref>, <xref ref-type="bibr" rid="B23">Khan et al. (2022a)</xref>, and medical informatics (<xref ref-type="bibr" rid="B38">Rahman et al., 2024</xref>; <xref ref-type="bibr" rid="B14">Bhavani et al., 2024</xref>).</p>
<p>In disease prediction, both traditional ML and deep learning models have demonstrated strong performance across multiple datasets. ML models have been successfully applied in drug discovery, migraine classification, medical diagnosis, genomics, prognosis, proteomics, and CVD prediction <xref ref-type="bibr" rid="B35">Niwa et al. (2004)</xref>. These algorithms have produced reliable results on diverse data sources, including electrocardiogram (ECG) signals, demographic information, clinical records, and imaging datasets (<xref ref-type="bibr" rid="B2">Adke et al., 2023</xref>; <xref ref-type="bibr" rid="B26">Khan et al., 2025</xref>). Despite these successes, traditional ML methods face several challenges when applied to CVD prediction. A key difficulty lies in handling the heterogeneous and complex nature of medical datasets, which may vary in size and distribution, include missing values, contain noise, and sometimes present high dimensionality. These issues can reduce the generalizability and performance of conventional ML algorithms (<xref ref-type="bibr" rid="B1">Abbas et al., 2023</xref>; <xref ref-type="bibr" rid="B27">Kumar et al., 2025a</xref>). Selecting the most suitable model for a given task depends on several factors, such as dataset size and quality, interpretability requirements, algorithm complexity, accuracy, and computational cost (<xref ref-type="bibr" rid="B1">Abbas et al., 2023</xref>; <xref ref-type="bibr" rid="B26">Khan et al., 2025</xref>).</p>
<p>Deep neural networks (DNNs) have already demonstrated strong performance in image and audio classification tasks, while recurrent neural networks (RNNs) and transformer-based models have excelled in natural language processing. These canonical architectures are widely used for prediction and classification tasks in diverse domains. However, tabular data&#x2014;a prevalent format in many real-world applications&#x2014;has not benefited from comparable advances. Tabular datasets typically contain both numerical and categorical features, and they remain a cornerstone of AI-driven decision-making. Nevertheless, deep learning approaches for tabular data require further investigation. In contrast, tree-based ML models such as decision trees (DTs) continue to dominate many tabular data applications. These models offer several advantages: (1) DTs capture decision boundaries efficiently when they align with hyperplane structures commonly found in tabular data, and (2) DTs are computationally efficient and fast to train. Meanwhile, approaches such as multilayer perceptrons (MLPs) are often overparameterized, and their lack of inductive bias reduces their ability to capture underlying tabular data patterns. Consequently, exploring deep learning methods tailored to tabular data remains an important research direction.</p>
<p>Existing studies have reported promising but constrained outcomes. For instance, <xref ref-type="bibr" rid="B5">Alghamdi et al. (2024)</xref> combined an auto-encoder with DenseNet; however, DenseNet is primarily pre-trained for image and vision tasks, making it less suitable for structured tabular data. Similarly, <xref ref-type="bibr" rid="B15">Bilal et al. (2024)</xref> proposed a hybrid CNN&#x2013;LSTM framework for CVD detection and further introduced an ensemble model (ETCXGB) by combining Extra Tree Classifier (ETC) with XGBoost (XGB). While these approaches demonstrated acceptable predictive performance, they remain limited in scope. In contrast, our proposed model leverages TabNet&#x2014;a deep learning architecture specifically designed for tabular data&#x2014;integrated with XGBoost within a stacked ensemble framework. This design not only exploits TabNet&#x2019;s sparse attention mechanism for effective feature selection and interpretability but also enhances robustness through XGBoost&#x2019;s gradient boosting capabilities. Moreover, unlike prior work, our model was rigorously evaluated on two large and diverse benchmark datasets (Kaggle and UCI), thereby providing stronger evidence of generalizability and clinical applicability.</p>
<p>In this study, we aim to investigate the performance of a stacked ensemble model that integrates TabNet with traditional machine learning algorithms for CVD prediction. We hypothesize that while algorithms such as XGBoost perform strongly on small-scale tabular datasets, their effectiveness diminishes on larger and more complex datasets. In contrast, TabNet, a transformer-like architecture specifically designed for tabular data, provides robust classification and prediction capabilities. By integrating TabNet with XGBoost in a stacked ensemble, we seek to leverage their complementary strengths to enhance predictive performance and generalization.</p>
<p>Specifically, TabNet employs a sparse attention mechanism and feature selection strategy to identify complex patterns in data, while XGBoost remains highly effective for structured, low-to medium-dimensional datasets. However, XGBoost can struggle with very high-dimensional or noisy data. By combining these models within a stacked ensemble learning framework&#x2014;where their outputs are aggregated by Logistic Regression (LR) or Support Vector Machine (SVM) as a meta-learner&#x2014;we aim to improve accuracy, reduce overfitting, and mitigate the limitations of individual models.</p>
<p>The contributions of this study are summarized as follows:<list list-type="simple">
<list-item>
<p>
<inline-formula id="inf1">
<mml:math id="m1">
<mml:mrow>
<mml:mo>&#x2022;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> We propose a hybrid stacked ensemble framework for cardiovascular disease prediction that combines TabNet, a deep neural network designed for structured tabular data, with XGBoost, a powerful tree-based ensemble learning algorithm. LR or SVM models are employed as meta-learners within the ensemble framework to enhance the predictive performance of the proposed model.</p>
</list-item>
<list-item>
<p>
<inline-formula id="inf2">
<mml:math id="m2">
<mml:mrow>
<mml:mo>&#x2022;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> We conducted extensive experiments on two publicly available datasets&#x2014;the Kaggle CVD dataset and the UCI CVD dataset. The results demonstrated that the proposed model consistently outperformed baseline models across multiple performance metrics.</p>
</list-item>
</list>
</p>
<p>The remainder of this paper is organized as follows: <xref ref-type="sec" rid="s2">Section 2</xref> reviews related literature on CVD prediction and ensemble learning. <xref ref-type="sec" rid="s3">Section 3</xref> describes the proposed methodology. <xref ref-type="sec" rid="s4">Section 4</xref> presents the experimental setup, results, and analysis. Finally, <xref ref-type="sec" rid="s5">Section 5</xref> concludes the paper and outlines future research directions.</p>
</sec>
<sec id="s2">
<title>2 Background and literature review</title>
<p>This chapter presents a comprehensive examination of existing scholarly contributions pertinent to heart disease, aligning with the thematic focus of this study. A literature review serves as a foundational element in academic research, as it synthesizes prior investigations, highlights prevailing trends, and identifies critical knowledge gaps. By systematically evaluating prior studies, this section not only contextualizes the current research within the broader academic discourse but also underscores its originality and relevance in addressing unresolved challenges in cardiovascular disease prediction.</p>
<p>One of the primary symptoms associated with heart disease is angina, commonly experienced as chest pain. This discomfort may manifest as pressure, tightness, throbbing, heaviness, or a squeezing sensation. Beyond the chest, cardiac-related pain can also extend to the shoulders, arms, neck, throat, jaw, or upper back. Notably, women above the age of 50 are statistically more prone to heart disease compared to men. On the other hand, males are often affected by such conditions at a comparatively younger age (<xref ref-type="bibr" rid="B21">Hasan and Bao, 2021</xref>). Other frequently reported symptoms of heart disease include excessive sweating, difficulty breathing, chest discomfort, dizziness, fatigue, a rapid heartbeat, nausea, shoulder or arm pain, chest pressure, vomiting, and in some cases, intense anxiety or irregular heart rhythms.</p>
<p>Cardiovascular disease (CVD) encompasses a spectrum of disorders impacting various components of the heart, including its musculature, valves, rhythm, and vascular structure. Prominent conditions within this category include coronary artery disease (CAD), heart failure, arrhythmias, and valvular dysfunctions. Clinical manifestations may range from chest discomfort and breathlessness to fatigue and irregular heartbeats. Globally, CVD remains the foremost cause of mortality, significantly impairing individuals&#x2019; quality of life when not adequately managed (<xref ref-type="bibr" rid="B13">Bhatt et al., 2023</xref>).</p>
<p>Coronary artery disease, alternatively referred to as ischemic heart disease or myocardial infarction, is among the most prevalent and critical cardiovascular conditions. Its diagnosis and therapeutic management present considerable challenges, particularly in low- and middle-income countries. These obstacles stem from insufficient access to advanced diagnostic tools, as well as a shortage of trained healthcare personnel, which collectively hinder accurate prognostication and timely intervention (<xref ref-type="bibr" rid="B29">Liza et al., 2025</xref>).</p>
<p>Coronary heart disease (CHD) adversely affects cardiac efficiency by obstructing arterial blood flow, thereby diminishing the oxygen and nutrient supply to bodily tissues. This impairment typically results from atherosclerosis&#x2014;the accumulation of lipid-rich plaques and calcium within arterial walls. The World Health Organization identifies cardiovascular ailments, particularly heart attacks and strokes, as the primary contributors to global mortality. Risk determinants for CHD encompass variables such as age, sex, genetic predisposition, obesity, diabetes, psychological stress, and poor dietary patterns (<xref ref-type="bibr" rid="B40">Saini, 2023</xref>).</p>
<p>The heart plays a pivotal role in maintaining systemic circulation; inadequate perfusion can compromise vital organs like the brain, and complete cardiac failure inevitably results in death. Heart disease, broadly defined, includes any pathology affecting the cardiac muscles and vascular network. Coronary artery disease, a predominant subtype of cardiovascular disease, accounts for approximately 20% of global deaths, primarily due to myocardial infarctions and cerebrovascular incidents?</p>
<p>Machine learning (ML) has emerged as a transformative approach for extracting actionable insights from huge and complex datasets. It utilizes predictive algorithms to predict health outcomes and descriptive models to uncover latent patterns within data. A variety of ML techniques&#x2014;such as MLP, Decision Tree (DT), K-Nearest Neighbor (KNN), Support Vector Machine (SVM), and Na&#xef;ve Bayes (NB)&#x2014;have demonstrated considerable efficacy in interpreting large-scale medical data (<xref ref-type="bibr" rid="B4">Al-Alshaikh et al., 2024</xref>).</p>
<p>In study <xref ref-type="bibr" rid="B42">Shah et al. (2020)</xref> introduced a novel ML-based framework incorporating quantum neural networks for the early detection of cardiovascular conditions. The model, trained on data from 689 symptomatic patients and validated using the Framingham dataset, significantly outperformed the traditional Framingham Risk Score (FRS), achieving an accuracy of 98.57% compared to the FRS&#x2019;s 19.22%. This substantial improvement highlights the model&#x2019;s potential to aid clinicians in achieving precise diagnoses and developing effective treatment strategies (<xref ref-type="bibr" rid="B34">Narin et al., 2016</xref>).</p>
<p>Similarly, <xref ref-type="bibr" rid="B13">Bhatt et al. (2023)</xref> applied a range of supervised learning algorithms to the Cleveland Heart Disease dataset, comprising 303 records and 17 attributes. Among the tested models, KNN achieved the highest predictive accuracy at 90.8%, reinforcing the value of algorithm selection in optimizing diagnostic outcomes.</p>
<p>In another investigation by <xref ref-type="bibr" rid="B42">Shah et al. (2020)</xref>, ML methodologies such as logistic regression, univariate feature selection, and principal component analysis (PCA) were utilized to evaluate cardiovascular risk in individuals diagnosed with metabolic-associated fatty liver disease (MAFLD). Elevated cholesterol levels, arterial plaque accumulation, and diabetes duration were identified as key predictors. The model effectively categorized high-risk (85.11%) and low-risk (79.17%) individuals, achieving an area under the curve (AUC) score of 0.87&#x2014;demonstrating robust classification capability based on routine clinical data.</p>
<p>In study <xref ref-type="bibr" rid="B6">Alotaibi (2019)</xref> assessed the predictive performance of various ML classifiers, including DT, Logistic Regression, Random Forest, NB, and SVM, using patient data from the Cleveland Clinic Foundation. Through a 10-fold cross-validation approach, the decision tree model achieved the highest accuracy at 93.19%, closely followed by SVM at 92.30%, indicating both algorithms&#x2019; effectiveness in forecasting heart failure outcomes.</p>
<p>In a comparative study, <xref ref-type="bibr" rid="B21">Hasan and Bao (2021)</xref> evaluated the efficiency of feature selection techniques&#x2014;namely, filter, wrapper, and embedded methods&#x2014;for enhancing CVD prediction. By applying a Boolean-based framework to identify optimal feature subsets, they benchmarked several classifiers, including Random Forest, SVM, KNN, NB, and XGBoost. The combination of XGBoost with the wrapper method achieved superior performance, recording an accuracy of 73.74%, ahead of SVM (73.18%) and ANN (73.20%).</p>
<p>In study <xref ref-type="bibr" rid="B16">Cao et al. (2025)</xref> highlighted the limitations of traditional ML models like DT, SVM, and logistic regression, citing reduced accuracy due to redundant features and a lack of hyperparameter optimization. To address this, they integrated Pearson correlation with feature importance measures for attribute selection, followed by enhanced particle swarm optimization for XGBoost tuning. Their optimized model, based on 11 critical features, achieved an accuracy of 74.7%, precision of 76.3%, and an AUC of 80.8%.</p>
<p>A recurrent challenge in existing studies is the reliance on relatively small datasets, which often results in overfitting and restricted generalizability. Accordingly, this study employs a large-scale dataset of 70,000 patient records with 11 features to improve model robustness and minimize overfitting. A comprehensive comparative analysis of heart disease prediction models utilizing large-scale data is detailed in <xref ref-type="table" rid="T1">Table 1</xref>, further substantiating the efficacy of data-driven ML methodologies in clinical practice.</p>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Relevant research studies on heart disease prediction.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Study</th>
<th align="left">Dataset</th>
<th align="left">Feature selection method</th>
<th align="left">Classifiers used</th>
<th align="left">Accuracy (%)</th>
<th align="left">Limitations</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">
<xref ref-type="bibr" rid="B16">Cao et al. (2025)</xref>
</td>
<td align="left">Cardiovascular disease dataset (UCI)</td>
<td align="left">Pearson Correlation &#x2b; Feature Importance Ranking</td>
<td align="left">Improved PSO-XGBoost (MFS-DLPSO-XGBoost)</td>
<td align="left">74.70 accuracy, 76.30 precision, 80.80 AUC</td>
<td align="left">Dataset size not specified; benefit limited to selected features and model tuning</td>
</tr>
<tr>
<td align="center">
<xref ref-type="bibr" rid="B15">Bilal et al. (2024)</xref>
</td>
<td align="left">Heart Disease dataset from UCI (Cleveland, Hungarian, Switzerland, Long Beach)</td>
<td align="left">Chi-square test, Recursive Feature Elimination (RFE)</td>
<td align="left">Logistic Regression, SVM, KNN, Random Forest, XGBoost</td>
<td align="left">Up to 89.60 (XGBoost)</td>
<td align="left">Imbalance sensitivity; performance varies across datasets</td>
</tr>
<tr>
<td align="center">
<xref ref-type="bibr" rid="B49">Zhang et al. (2023)</xref>
</td>
<td align="left">StatLog UCI, Z-Alizadeh Sani, and CVD datasets</td>
<td align="left">Forward Selection, Backward Elimination</td>
<td align="left">AdaBoost, SVM, Decision Tree, Random Forest (Ensemble)</td>
<td align="left">91.00 (Z-Alizadeh), 83.00 (UCI), 73.00 (CVD)</td>
<td align="left">Varying accuracy across datasets; high computational complexity</td>
</tr>
<tr>
<td align="center">
<xref ref-type="bibr" rid="B47">Vayadande et al. (2022)</xref>
</td>
<td align="left">Cardiovascular Disease Dataset (70,000 records)</td>
<td align="left">Pearson Correlation and Feature Importance Ranking</td>
<td align="left">Ensemble of ML algorithms</td>
<td align="left">88.70 accuracy, 93.00 ROC-AUC</td>
<td align="left">May not generalize across datasets; complex ensemble approach</td>
</tr>
<tr>
<td align="center">
<xref ref-type="bibr" rid="B19">Garg et al. (2021)</xref>
</td>
<td align="left">Cleveland Heart Disease dataset</td>
<td align="left">All available features</td>
<td align="left">KNN, Random Forest</td>
<td align="left">KNN: 86.89, RF: 81.97</td>
<td align="left">Small dataset (303 records); limited generalizability</td>
</tr>
<tr>
<td align="center">
<xref ref-type="bibr" rid="B32">Mhawi et al. (2022)</xref>
</td>
<td align="left">UCI dataset</td>
<td align="left">Filter-based feature selection</td>
<td align="left">KNN, RF, SVM, NB, LR</td>
<td align="left">RF and NB outperformed others</td>
<td align="left">Complex ensemble methods; resource intensive</td>
</tr>
<tr>
<td align="center">
<xref ref-type="bibr" rid="B36">Panda et al. (2019)</xref>
</td>
<td align="left">Kaggle dataset</td>
<td align="left">Relief, MRMR, LASSO</td>
<td align="left">LR, KNN, SVM, NB, DT, RF</td>
<td align="left">LR achieved 89.00 accuracy</td>
<td align="left">ML may introduce bias/errors; interpretability issues</td>
</tr>
<tr>
<td align="center">
<xref ref-type="bibr" rid="B17">CatBoost Developers (2021)</xref>
</td>
<td align="left">Kaggle</td>
<td align="left">None</td>
<td align="left">CatBoost</td>
<td align="left">78.00</td>
<td align="left">Limited interpretability</td>
</tr>
<tr>
<td align="center">
<xref ref-type="bibr" rid="B43">Somepalli et al. (2021)</xref>
</td>
<td align="left">Kaggle</td>
<td align="left">None</td>
<td align="left">SAINT</td>
<td align="left">79.00</td>
<td align="left">Computationally expensive, limited clinical evaluation</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s3">
<title>3 Datasets and proposed methodology</title>
<p>This section presents the datasets used in the study, namely the UCI CVD dataset and the Kaggle CVD dataset. The latter part of the section outlines the preliminaries and details the proposed methodology for cardiovascular disease (CVD) detection.</p>
<sec id="s3-1">
<title>3.1 Datasets</title>
<sec id="s3-1-1">
<title>3.1.1 Kaggle cardiovascular disease dataset</title>
<p>The Kaggle CVD dataset comprises 70,000 patient records, each containing 16 feature attributes and a binary target variable indicating the presence or absence of cardiovascular disease (CVD). The feature attributes include patient ID, age, gender, height, weight, smoking status, diastolic and systolic blood pressure, cholesterol level, glucose level, and physical activity. The target variable represents whether the individual has been diagnosed with CVD. Feature attributes and sample instances from the cardiovascular disease dataset are presented in <xref ref-type="table" rid="T2">Table 2</xref>.</p>
<table-wrap id="T2" position="float">
<label>TABLE 2</label>
<caption>
<p>Feature attributes and two sample instances from the cardiovascular disease dataset.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Category</th>
<th align="left">Feature</th>
<th align="center">Instance 1</th>
<th align="center">Instance 2</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="4" align="left">Demographic</td>
<td align="left">Age (days)</td>
<td align="center">18,393</td>
<td align="center">20,228</td>
</tr>
<tr>
<td align="left">Gender (1 &#x3d; F, 2 &#x3d; M)</td>
<td align="center">2</td>
<td align="center">1</td>
</tr>
<tr>
<td align="left">Height (cm)</td>
<td align="center">168</td>
<td align="center">156</td>
</tr>
<tr>
<td align="left">Weight (kg)</td>
<td align="center">62.0</td>
<td align="center">85.0</td>
</tr>
<tr>
<td rowspan="4" align="left">Clinical</td>
<td align="left">SBP (mmHg)</td>
<td align="center">120</td>
<td align="center">140</td>
</tr>
<tr>
<td align="left">DBP (mmHg)</td>
<td align="center">80</td>
<td align="center">90</td>
</tr>
<tr>
<td align="left">Cholesterol (1&#x2013;3)</td>
<td align="center">1</td>
<td align="center">3</td>
</tr>
<tr>
<td align="left">Glucose (1&#x2013;3)</td>
<td align="center">1</td>
<td align="center">2</td>
</tr>
<tr>
<td rowspan="3" align="left">Lifestyle</td>
<td align="left">Smoking (0/1)</td>
<td align="center">0</td>
<td align="center">1</td>
</tr>
<tr>
<td align="left">Alcohol (0/1)</td>
<td align="center">0</td>
<td align="center">0</td>
</tr>
<tr>
<td align="left">Physical activity (0/1)</td>
<td align="center">1</td>
<td align="center">0</td>
</tr>
<tr>
<td colspan="2" align="left">Target (CVD) (0/1)</td>
<td align="center">0</td>
<td align="center">1</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s3-1-2">
<title>3.1.2 UCI cardiovascular disease dataset</title>
<p>The UCI CVD dataset is publicly available on UCI machine learning repository. It contains 920 instances. Out of them 561 belong to the positive class and remaining are from the negative class. The data is collected from 4 various sources, which are Hungary, Cleveland, VA Long Beach, and Switzerland. The summary of UCI dataset is presented in the <xref ref-type="table" rid="T3">Table 3</xref>.</p>
<table-wrap id="T3" position="float">
<label>TABLE 3</label>
<caption>
<p>Feature attributes and sample instances from the UCI heart disease dataset.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Feature</th>
<th align="left">Description</th>
<th align="center">Instance 1</th>
<th align="center">Instance 2</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">Age</td>
<td align="left">Age in years</td>
<td align="center">63</td>
<td align="center">57</td>
</tr>
<tr>
<td align="left">Sex</td>
<td align="left">Female &#x3d; 0, &#x3d; Male &#x3d; 1</td>
<td align="center">1</td>
<td align="center">0</td>
</tr>
<tr>
<td align="left">Chest pain</td>
<td align="left">Its range from (0&#x2013;3)</td>
<td align="center">1</td>
<td align="center">2</td>
</tr>
<tr>
<td align="left">trestbps</td>
<td align="left">Blood pressure at rest (mmHg)</td>
<td align="center">145</td>
<td align="center">130</td>
</tr>
<tr>
<td align="left">cholesterol</td>
<td align="left">Blood cholesterol (mg/dL)</td>
<td align="center">233</td>
<td align="center">236</td>
</tr>
<tr>
<td align="left">fbs</td>
<td align="left">Elevated fasting blood sugar (&#x3e;120 mg/dL, Yes &#x3d; 1)</td>
<td align="center">1</td>
<td align="center">0</td>
</tr>
<tr>
<td align="left">restecg</td>
<td align="left">Resting ECG result index (values: 0&#x2013;2)</td>
<td align="center">0</td>
<td align="center">1</td>
</tr>
<tr>
<td align="left">thalach</td>
<td align="left">Highest heart rate achieved</td>
<td align="center">150</td>
<td align="center">174</td>
</tr>
<tr>
<td align="left">exang</td>
<td align="left">Exercise-triggered angina (1 &#x3d; Yes)</td>
<td align="center">0</td>
<td align="center">0</td>
</tr>
<tr>
<td align="left">oldpeak</td>
<td align="left">Exercise-induced ST depression</td>
<td align="center">2.3</td>
<td align="center">0.0</td>
</tr>
<tr>
<td align="left">slope</td>
<td align="left">ST segment slope (0&#x2013;2)</td>
<td align="center">0</td>
<td align="center">1</td>
</tr>
<tr>
<td align="left">ca</td>
<td align="left">Major vessel count (0&#x2013;3)</td>
<td align="center">0</td>
<td align="center">0</td>
</tr>
<tr>
<td align="left">thal</td>
<td align="left">Thalassemia (1 &#x3d; normal; 2 &#x3d; fixed defect; 3 &#x3d; reversible defect)</td>
<td align="center">1</td>
<td align="center">2</td>
</tr>
<tr>
<td align="left">target</td>
<td align="left">0 &#x3d; No CVD, 1 &#x3d; CVD present</td>
<td align="center">1</td>
<td align="center">0</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
</sec>
<sec id="s3-2">
<title>3.2 Proposed methodology</title>
<sec id="s3-2-1">
<title>3.2.1 Data preprocessing</title>
<p>For both the UCI and Kaggle datasets, a series of preprocessing steps were applied to ensure data quality, reduce noise, and prevent information leakage during training and evaluation. Missing values were addressed using the following strategies: numerical features were imputed with the mean of the respective feature, while categorical features were imputed with the mode. To address potential outliers, extreme values were detected using the interquartile range (IQR) method and capped at the 1.5 IQR threshold, thereby reducing their undue influence on model training.</p>
<p>Numerical features were normalized using Min&#x2013;Max scaling to the range [0,1] to ensure consistent feature magnitudes, as defined in <xref ref-type="disp-formula" rid="e1">Equation 1</xref>:<disp-formula id="e1">
<mml:math id="m3">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>max</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
<label>(1)</label>
</disp-formula>where <inline-formula id="inf3">
<mml:math id="m4">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the original feature value, and <inline-formula id="inf4">
<mml:math id="m5">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf5">
<mml:math id="m6">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>max</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> denote the feature-wise minimum and maximum, respectively. Categorical features (e.g., sex, chest pain type) were encoded via one-hot encoding to make them suitable for machine learning algorithms.</p>
<p>Feature selection was conducted using Pearson correlation and mutual information scores to eliminate redundant attributes. Additionally, TabNet&#x2019;s sparse attention masks and XGBoost&#x2019;s feature importance scores were leveraged to guide model-driven feature selection.</p>
<p>For the UCI dataset, which is composed of four subsets (Cleveland, Hungarian, Switzerland, and Long Beach), harmonization was required before analysis. First, we aligned the feature spaces across subsets by retaining only the attributes common to all four sources. Variable names and encodings were standardized (e.g., categorical encodings for chest pain type and thalassemia were unified, and continuous variables such as age and serum cholesterol were rescaled to consistent units). Inconsistent or dataset-specific attributes were excluded to ensure comparability across subsets. After harmonization, the four subsets were merged into a single dataset.</p>
<p>Since the merged UCI dataset exhibited moderate class imbalance (with a higher proportion of patients without CVD), we applied class weighting during training to mitigate bias toward the majority class. This approach allowed the learning algorithms to place proportionally greater emphasis on minority-class instances (i.e., patients with CVD), thereby improving sensitivity in detecting positive cases without requiring oversampling or synthetic data generation.</p>
<p>For the Both datasets, the data were randomly partitioned into 80% training, and 20% test sets using stratified sampling to preserve class distributions. To prevent data leakage, imputation and scaling parameters were estimated on the training set only and subsequently applied to test set.</p>
<p>The choice of preprocessing methods was made deliberately to balance simplicity, effectiveness, and compatibility with the learning algorithms. For missing values, mean imputation (numerical) and mode imputation (categorical) were applied because the datasets contained relatively few missing entries and most numerical features were approximately symmetric, making mean a reliable estimator; more complex imputation strategies (e.g., kNN or MICE) were avoided to prevent computational overhead and data leakage. Numerical features were normalized using Min&#x2013;Max scaling to the range [0,1], which ensures comparability across features regardless of their original units and avoids assumptions of normality required by z-score normalization; this choice was also well aligned with the needs of both XGBoost and TabNet. Categorical features were transformed via one-hot encoding, as these variables lacked intrinsic order, and ordinal encoding would have introduced spurious relationships among categories. Overall, this preprocessing pipeline provided a consistent, interpretable, and model-compatible representation of the data.</p>
</sec>
<sec id="s3-2-2">
<title>3.2.2 Stacked ensemble learning</title>
<p>After the essential preprocessing steps, the main architecture of the proposed model is presented in <xref ref-type="fig" rid="F1">Figure 1</xref>. The proposed model is based on a stacking ensemble approach, which has been shown to outperform individual learning models in classification and prediction tasks. This is primarily due to the integration of multiple base learners, where the weaknesses of one model can be compensated by the strengths of others, thereby enhancing overall predictive accuracy and robustness (<xref ref-type="bibr" rid="B33">Mienye and Sun, 2022</xref>).</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Overview of the proposed cardiovascular disease prediction framework. The pipeline begins with preprocessing, followed by two base learners: TabNet, which leverages sparse attention for feature selection, and XGBoost, which provides gradient-boosted decision trees for structured data. Their prediction outputs are combined through a meta-learner that produces the final CVD prediction.</p>
</caption>
<graphic xlink:href="fphys-16-1665128-g001.tif">
<alt-text content-type="machine-generated">Flowchart depicting a data processing pipeline. Datasets undergo preprocessing, followed by input features like age, gender, and health metrics. Feature selection and input processing are cyclical, with feedback loops to refine selections. The data is processed through the XGBoost algorithm, leading to predictions. Meta learners like Logistic Regression or Support Vector Machines stack the datasets for final prediction.</alt-text>
</graphic>
</fig>
<p>Stacking is an approach where n number of ML algorithms can be trained independently and stacked together layer-by-layer. After training, the output of each model is needed for the next layer, where another ML model works as a meta-learner, used to predict the final output based on the previous layer&#x2019;s output. In our proposed model, after preprocessing steps, all input features are learned from two different complementary approaches: (1) the TabNet deep learning model, specifically designed for tabular data types, and (2) the XGBoost machine learning tree-based model, which shows exceptional performance for tabular data types in previous studies. The performances of base stacked model is measured using standard metrics such as precision, recall, F1-score, accuracy, and confusion matrix. The results from the TabNet and XGBoost models are ensembles using the stacking approach with meta learners. We compare SVM and LR traditional models as meta learners, the performance is again measured using various hyper-parameter tuning against precision, recall, F1 score, and accuracy metrics. Logistic regression is always considered as an effective baseline model for binary classification because of its interpretability and ability to model the linear relationship in the data.</p>
</sec>
<sec id="s3-2-3">
<title>3.2.3 TabNet architecture</title>
<p>Our proposed model is developed using the TabNet <xref ref-type="bibr" rid="B11">Arik and Pfister (2021)</xref> transformer model and the traditional XGBoost <xref ref-type="bibr" rid="B18">Chen and Guestrin (2016)</xref> model. <xref ref-type="fig" rid="F2">Figure 2</xref> represents the TabNet encoder-decoder architecture. The TabNet encoder comprises a feature masking mechanism, an attentive transformer, and a feature transformer. The transformed representation is bifurcated: one part is directed toward the model&#x2019;s final output, while the remaining portion is forwarded to the attentive transformer for subsequent processing. At each stage, the feature selection mask offers interpretable insights into the model&#x2019;s decision-making behavior. By aggregating these masks across multiple steps, the global importance of features can be effectively determined. The TabNet decoder employs a feature transformer block at each stage of the decoding process to reconstruct the input representation.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>TabNet encoder&#x2013;decoder architecture (adapted from <xref ref-type="bibr" rid="B11">Arik and Pfister (2021)</xref>). The encoder applies a sequential attention mechanism to select the most informative clinical features, while the decoder reconstructs the original inputs to enforce sparsity and interpretability. This design enables TabNet to focus on clinically relevant variables for cardiovascular disease (CVD) prediction while maintaining transparency in feature usage.</p>
</caption>
<graphic xlink:href="fphys-16-1665128-g002.tif">
<alt-text content-type="machine-generated">A diagram illustrating a complex neural network architecture. It consists of successive steps labeled as &#x22;Step 1&#x22; and &#x22;Step 2.&#x22; Each step includes components like &#x22;Feature Transformer,&#x22; &#x22;Split,&#x22; &#x22;ReLU,&#x22; and &#x22;Attentive Transformer.&#x22; &#x22;BN&#x22; and &#x22;Agg.&#x22; are interconnected with these components. The diagram also shows &#x22;Encoded Representation&#x22; leading to &#x22;Reconstructed Features&#x22; using &#x22;Feature Transformer&#x22; and &#x22;FC&#x22; modules, resulting in the final &#x22;Output.&#x22; Arrows indicate the flow of data between these components.</alt-text>
</graphic>
</fig>
<p>The attentive transformer module explained in <xref ref-type="fig" rid="F3">Figure 3</xref>, dynamically selects the most relevant features at each decision step, thereby improving both interpretability and learning efficiency. It employs a sparse attention mechanism that leverages the output from the previous decision step to generate a feature selection mask. This mask guides the model to focus on the most informative subset of features at each stage, allowing different steps to attend to different aspects of the input data. To promote sparsity in feature selection, the attention scores are computed using a combination of softmax and sparsemax functions. This targeted focus not only improves the model&#x2019;s predictive performance but also provides clear insights into which features influence decisions at each step.</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Attentive transformer block within the TabNet network (adapted from <xref ref-type="bibr" rid="B11">Arik and Pfister (2021)</xref>). This block applies feature-wise attention weights to highlight the most relevant patient attributes (e.g., age, blood pressure, cholesterol) at each decision step. The mechanism improves interpretability by showing which variables drive predictions while enhancing predictive performance.</p>
</caption>
<graphic xlink:href="fphys-16-1665128-g003.tif">
<alt-text content-type="machine-generated">Flowchart of an attentive transformer model. It includes elements like Sparsemax, Prior scales, BN (Batch Normalization), and FC (Fully Connected) layers. The input labeled X undergoes transformations through these components, with directional arrows indicating the flow between them.</alt-text>
</graphic>
</fig>
<p>The feature transformer block represented in <xref ref-type="fig" rid="F4">Figure 4</xref> is a crucial component of the TabNet model, designed to extract rich, high-level representations from tabular data. It captures complex, non-linear feature interactions by integrating several fully connected layers with batch normalization and Gated Linear Unit (GLU) activation functions. Residual connections are also employed to enhance training stability and preserve information from earlier layers. By processing input features before passing them to subsequent components, such as the attentive transformer, this block enables the model to effectively extract and refine relevant patterns at each decision step.</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>Feature transformer block of the TabNet network (adapted from <xref ref-type="bibr" rid="B11">Arik and Pfister (2021)</xref>). This module applies nonlinear transformations and batch normalization to the input features, enabling the model to capture complex interactions among clinical variables. The block serves as the core representation unit, ensuring that both low-level and high-level patient information are effectively utilized in CVD risk prediction.</p>
</caption>
<graphic xlink:href="fphys-16-1665128-g004.tif">
<alt-text content-type="machine-generated">Diagram of a feature transformer showing two parallel computational paths. Each path includes modules: FC (fully connected), BN (batch normalization), and GLU (gated linear unit). The left path is shared across decision steps, while the right path is decision step dependent. Both paths converge with a summation node influenced by a square root factor.</alt-text>
</graphic>
</fig>
<p>The mathematical formulation of the TabNet model for CVD detection is presented as follows. Let <inline-formula id="inf6">
<mml:math id="m7">
<mml:mrow>
<mml:mi mathvariant="bold">X</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> denote the input data matrix, where <inline-formula id="inf7">
<mml:math id="m8">
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the number of patient samples and <inline-formula id="inf8">
<mml:math id="m9">
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the number of input features. Each patient record is represented as a feature vector <inline-formula id="inf9">
<mml:math id="m10">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>. The TabNet architecture processes each input through a sequence of <inline-formula id="inf10">
<mml:math id="m11">
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> decision steps, leveraging attentive feature selection and sparse feature masks. The final output is a prediction vector <inline-formula id="inf11">
<mml:math id="m12">
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold">y</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>, indicating the probability of CVD presence for each sample in a binary classification setting.</p>
<p>The feature transformer network is responsible for processing the input feature vector at each decision level <inline-formula id="inf12">
<mml:math id="m13">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> to find the meaningful patterns which are considered very important for CVD prediction. The following <xref ref-type="disp-formula" rid="e2">Equation 2</xref> is the mathematical representation of this operation:<disp-formula id="e2">
<mml:math id="m14">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mtext>Feature Transformer</mml:mtext>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(2)</label>
</disp-formula>
</p>
<p>In the TabNet model, to increase training stability, the feature transformer block consists of gated linear units, batch normalization, and fully connected (FC) layers, all of which are connected with residual connections, aim to improve training stability. The mathematical equations of these components are explained below in <xref ref-type="disp-formula" rid="e3">Equations 3</xref>, <xref ref-type="disp-formula" rid="e4">4</xref>.<disp-formula id="e3">
<mml:math id="m15">
<mml:mrow>
<mml:mtext>GLU</mml:mtext>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">z</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2299;</mml:mo>
<mml:mi>&#x3c3;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mspace width="1em"/>
<mml:mtext>where</mml:mtext>
<mml:mspace width="1em"/>
<mml:mi mathvariant="bold">z</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(3)</label>
</disp-formula>
<disp-formula id="e4">
<mml:math id="m16">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:mtext>GLU</mml:mtext>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mtext>BN</mml:mtext>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(4)</label>
</disp-formula>
</p>
<p>The attentive transformer block is responsible to generate a sparse feature selection mask, which relies on the previous attention <inline-formula id="inf13">
<mml:math id="m17">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and input <inline-formula id="inf14">
<mml:math id="m18">
<mml:mrow>
<mml:mi mathvariant="bold">X</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> as defined in <xref ref-type="disp-formula" rid="e5">Equation 5</xref>:<disp-formula id="e5">
<mml:math id="m19">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mtext>Sparsemax</mml:mtext>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:mtext>BN</mml:mtext>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2299;</mml:mo>
<mml:mi mathvariant="bold">X</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(5)</label>
</disp-formula>
</p>
<p>The Sparsemax function defined in <xref ref-type="disp-formula" rid="e6">Equation 6</xref> is utilized to ensure the sparsity in the attention technique.<disp-formula id="e6">
<mml:math id="m20">
<mml:mrow>
<mml:mtext>Sparsemax</mml:mtext>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">z</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>arg</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">p</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x2016;</mml:mo>
<mml:mi mathvariant="bold">p</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">z</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">&#x2016;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
<label>(6)</label>
</disp-formula>
</p>
<p>The attention mechanism generates the weighted feature representation according to <xref ref-type="disp-formula" rid="e7">Equation 7</xref>
<disp-formula id="e7">
<mml:math id="m21">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2299;</mml:mo>
<mml:mi mathvariant="bold">X</mml:mi>
</mml:mrow>
</mml:math>
<label>(7)</label>
</disp-formula>
</p>
</sec>
</sec>
<sec id="s3-3">
<title>3.3 Prediction aggregation and output</title>
<p>As shown in <xref ref-type="disp-formula" rid="e8">Equations 8</xref>, <xref ref-type="disp-formula" rid="e9">9</xref>, each step generates an intermediate prediction, and the final prediction is computed as the sum of all step outputs:<disp-formula id="e8">
<mml:math id="m22">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(8)</label>
</disp-formula>
</p>
<p>
<disp-formula id="e9">
<mml:math id="m23">
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold">y</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(9)</label>
</disp-formula>
</p>
<p>To reduce feature reuse across decision steps, the prior is updated, as shown in the following <xref ref-type="disp-formula" rid="e10">Equation 10</xref>:<disp-formula id="e10">
<mml:math id="m24">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2299;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mspace width="1em"/>
<mml:mi>&#x3b3;</mml:mi>
<mml:mo>&#x3e;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
<label>(10)</label>
</disp-formula>
</p>
<p>The binary cross-entropy loss (<xref ref-type="disp-formula" rid="e11">Equation 11</xref>) is used for binary CVD classification, while the focal loss (<xref ref-type="disp-formula" rid="e12">Equation 12</xref>) is adopted in imbalanced cases to emphasize difficult samples.<disp-formula id="e11">
<mml:math id="m25">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>BCE</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>log</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mi>log</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(11)</label>
</disp-formula>
</p>
<p>
<disp-formula id="e12">
<mml:math id="m26">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>Focal</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mi>&#x3b1;</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>log</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(12)</label>
</disp-formula>
</p>
<p>Where <inline-formula id="inf15">
<mml:math id="m27">
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is a balancing factor, and <inline-formula id="inf16">
<mml:math id="m28">
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the focusing parameter.</p>
</sec>
<sec id="s3-4">
<title>3.4 Algorithm and mathematical formulation of the proposed model</title>
<p>The mathematical framework of the proposed model is outlined below. Consider the dataset represented as in <xref ref-type="disp-formula" rid="e13">Equation 13</xref>. The procedural workflow of the proposed model is detailed in <xref ref-type="statement" rid="Algorithm_1">Algorithm 1</xref>:<disp-formula id="e13">
<mml:math id="m30">
<mml:mrow>
<mml:mi mathvariant="script">D</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mspace width="1em"/>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>,</mml:mo>
<mml:mspace width="1em"/>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(13)</label>
</disp-formula>where <inline-formula id="inf18">
<mml:math id="m31">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>denotes the feature vector and <inline-formula id="inf19">
<mml:math id="m32">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> represents the corresponding binary class label, indicating the presence <inline-formula id="inf20">
<mml:math id="m33">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> or absence <inline-formula id="inf21">
<mml:math id="m34">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> of CVD. Suppose <inline-formula id="inf22">
<mml:math id="m35">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> represents the prediction of the TabNet base learner and <inline-formula id="inf23">
<mml:math id="m36">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> represents the XGBoost base learner model, as expressed in <xref ref-type="disp-formula" rid="e14">Equation 14</xref>.<disp-formula id="e14">
<mml:math id="m37">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mtext>TabNet</mml:mtext>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mspace width="1em"/>
<mml:msub>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mtext>XGBoost</mml:mtext>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(14)</label>
</disp-formula>where <inline-formula id="inf24">
<mml:math id="m38">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>and <inline-formula id="inf25">
<mml:math id="m39">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the trainable parameters for the TabNet and XGBoost base learner models, respectively. Then, the prediction outputs from the base learners are concatenated to construct the input feature vector for the meta-learner, as defined in <xref ref-type="disp-formula" rid="e15">Equation 15</xref>.<disp-formula id="e15">
<mml:math id="m40">
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(15)</label>
</disp-formula>
</p>
<p>The final output from the LR meta-learner can be calculated using the following <xref ref-type="disp-formula" rid="e16">Equation 16</xref>.<disp-formula id="e16">
<mml:math id="m41">
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>g</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>&#x3c3;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mi>z</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(16)</label>
</disp-formula>where <inline-formula id="inf26">
<mml:math id="m42">
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>is the weight vector, <inline-formula id="inf27">
<mml:math id="m43">
<mml:mrow>
<mml:mi>b</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the bias term, and <inline-formula id="inf28">
<mml:math id="m44">
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula> is the sigmoid activation function. Finally, the predicted CVD class is determined using a threshold function, as expressed in <xref ref-type="disp-formula" rid="e17">Equation 17</xref>.<disp-formula id="e17">
<mml:math id="m45">
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="{" close="">
<mml:mrow>
<mml:mtable class="cases">
<mml:mtr>
<mml:mtd columnalign="left">
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mtext>if&#x2009;</mml:mtext>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>0.5</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="left">
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mtext>otherwise</mml:mtext>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(17)</label>
</disp-formula>
</p>
<p>
<statement content-type="algorithm" id="Algorithm_1">
<label>Algorithm 1</label>
<p>Proposed Stacked Ensemble Model for CVD Detection.</p>
<p>
<list list-type="simple">
<list-item>
<p>
<bold>Require:</bold>&#x2003;Kaggle CVD dataset and UCI CVD dataset</p>
</list-item>
<list-item>
<p>
<bold>Ensure:</bold>&#x2003;Prediction of cardiovascular disease (CVD)</p>
</list-item>
<list-item>
<p>&#x2003;1:&#x2003;Preprocess both datasets (handle missing values, normalize features, etc.)</p>
</list-item>
<list-item>
<p>&#x2003;2:&#x2003;Split each dataset into training and testing sets</p>
</list-item>
<list-item>
<p>&#x2003;3:&#x2003;<bold>Train Base Learners:</bold>
</p>
</list-item>
<list-item>
<p>&#x2003;4:&#x2003;&#x2003;<bold>TabNet Model:</bold>
</p>
</list-item>
<list-item>
<p>&#x2003;5:&#x2003;&#x2003;&#x2003;Set decision and attention dimensions: <inline-formula id="inf17">
<mml:math id="m29">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>32</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>&#x2003;6:&#x2003;&#x2003;&#x2003;Use optimizer: Adam, epochs &#x3d; 100, batch size &#x3d; 256</p>
</list-item>
<list-item>
<p>&#x2003;7:&#x2003;&#x2003;&#x2003;Train TabNet on the training set</p>
</list-item>
<list-item>
<p>&#x2003;8:&#x2003;&#x2003;<bold>XGBoost Model:</bold>
</p>
</list-item>
<list-item>
<p>&#x2003;9:&#x2003;&#x2003;&#x2003;Set learning rate &#x3d; 0.01, max depth &#x3d; 5</p>
</list-item>
<list-item>
<p>&#x2003;10:&#x2003;&#x2003;&#x2003;Train XGBoost on the training set</p>
</list-item>
<list-item>
<p>&#x2003;11:&#x2003;Generate base model predictions on training data (out-of-fold)</p>
</list-item>
<list-item>
<p>&#x2003;12:&#x2003;<bold>Train Meta Learner:</bold>
</p>
</list-item>
<list-item>
<p>&#x2003;13:&#x2003;&#x2003;Use predictions from TabNet and XGBoost as input features.</p>
</list-item>
<list-item>
<p>&#x2003;14:&#x2003;&#x2003;Train Logistic Regression on these features</p>
</list-item>
<list-item>
<p>&#x2003;15:&#x2003;<bold>Final Prediction:</bold>
</p>
</list-item>
<list-item>
<p>&#x2003;16:&#x2003;&#x2003;For the test data, generate base learner outputs.</p>
</list-item>
<list-item>
<p>&#x2003;17:&#x2003;&#x2003;Use the meta learner (Logistic Regression) to make the final prediction</p>
</list-item>
<list-item>
<p>&#x2003;18:&#x2003;<bold>return</bold> Final CVD predictions</p>
</list-item>
</list>
</p>
</statement>
</p>
<p>The meta-learner (LR) is trained by minimizing the binary cross-entropy loss function using the following mathematical <xref ref-type="disp-formula" rid="e18">Equation 18</xref>.<disp-formula id="e18">
<mml:math id="m46">
<mml:mrow>
<mml:mi mathvariant="script">L</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>log</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mi>log</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(18)</label>
</disp-formula>where <inline-formula id="inf29">
<mml:math id="m47">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>g</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>The proposed ensemble combines TabNet and XGBoost as base learners. Their outputs are aggregated using a meta-learner to improve predictive performance. To aggregate the predictions of the base learners, we evaluated both Logistic Regression (LR) and Support Vector Machine (SVM) as meta-learners. LR provides probabilistic outputs and interpretable weights, making it suitable for threshold-based clinical decisions, while SVM captures complementary decision boundaries through its margin-based optimization. Testing both meta-learners allowed us to assess the ensemble&#x2019;s robustness and generalizability. Results showed that both achieved strong performance, with LR slightly better calibrated for probability-based metrics and SVM providing similar accuracy and F1-score, highlighting the flexibility of the proposed stacked ensemble framework in leveraging different aggregation strategies.</p>
<p>Although the proposed stacked ensemble introduces additional computational overhead compared to single-model approaches, its complexity remains tractable for modern hardware. Training was performed on an NVIDIA RTX 4090 GPU with 24 GB VRAM and an Intel i9 processor (64 GB RAM). On average, TabNet required approximately 2.3 h for convergence on the Kaggle dataset and 1.1 h on the UCI dataset using early stopping and batch-wise learning. The meta-learner (Logistic Regression) training time was negligible (under 2 min). The overall pipeline exhibits a computational complexity of <inline-formula id="inf30">
<mml:math id="m48">
<mml:mrow>
<mml:mi mathvariant="script">O</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, where <inline-formula id="inf31">
<mml:math id="m49">
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> denotes the number of instances, <inline-formula id="inf32">
<mml:math id="m50">
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> the number of features, and <inline-formula id="inf33">
<mml:math id="m51">
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> the ensemble depth (number of base learners). Despite the slightly increased training time, the stacked framework achieves a substantial improvement in predictive performance, making the trade-off between accuracy and computational cost justified for clinical applications.</p>
</sec>
</sec>
<sec id="s4">
<title>4 Experiments and results</title>
<p>
<xref ref-type="table" rid="T4">Table 4</xref> represents the Hyper-parameters that we applied during the experiments.</p>
<table-wrap id="T4" position="float">
<label>TABLE 4</label>
<caption>
<p>Hyper-parameter settings and search ranges of the base and meta-learners used in the proposed stacked ensemble model. Final selected values are highlighted.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Model</th>
<th align="left">Hyper-parameters (search range/selected value)</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="4" align="left">XGBoost</td>
<td align="left">Learning rate: 0.01/[0.01, 0.05, 0.1]</td>
</tr>
<tr>
<td align="left">Maximum depth: 5/[3, 5, 7]</td>
</tr>
<tr>
<td align="left">Number of estimators: 200/[100, 200, 300]</td>
</tr>
<tr>
<td align="left">Subsample: 1.0/[0.7, 0.8, 1.0]</td>
</tr>
<tr>
<td rowspan="6" align="left">TabNet</td>
<td align="left">Decision layer dimension <inline-formula id="inf34">
<mml:math id="m52">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>: 32/[16, 32, 64]</td>
</tr>
<tr>
<td align="left">Attention layer dimension <inline-formula id="inf35">
<mml:math id="m53">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>: 32/[16, 32, 64]</td>
</tr>
<tr>
<td align="left">Optimizer: adam</td>
</tr>
<tr>
<td align="left">Learning rate: 0.02/[0.01, 0.02, 0.05]</td>
</tr>
<tr>
<td align="left">Epochs: 100</td>
</tr>
<tr>
<td align="left">Batch size: 256/[128, 256, 512]</td>
</tr>
<tr>
<td rowspan="3" align="left">Meta-learners</td>
<td align="left">Logistic regression <inline-formula id="inf36">
<mml:math id="m54">
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>: 1/[0.01, 0.1, 1, 10]</td>
</tr>
<tr>
<td align="left">SVM kernel: RBF/[Linear, RBF]</td>
</tr>
<tr>
<td align="left">SVM <inline-formula id="inf37">
<mml:math id="m55">
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>: 1/[0.01, 0.1, 1, 10]</td>
</tr>
</tbody>
</table>
</table-wrap>
<sec id="s4-1">
<title>4.1 Hyper-parameter tuning</title>
<p>
<xref ref-type="table" rid="T4">Table 4</xref> shows the final hyper-parameter values used for the base learners in the stacked ensemble. To select these values, we performed systematic grid search for both base learners and meta-learners. The optimal parameters were chosen based on the highest mean Receiver Operating Characteristic&#x2013;Area Under the Curve (ROC-AUC) across 10-fold stratified cross-validation.</p>
<p>For TabNet, in addition to the hyperparameter search ranges reported in <xref ref-type="table" rid="T4">Table 4</xref>, several regularization strategies were applied to ensure reproducibility and prevent overfitting. Specifically, L2 regularization was used on the weights with a coefficient of <inline-formula id="inf38">
<mml:math id="m56">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mtext>e</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>5</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>, and a dropout rate of 0.2 was applied to the fully connected layers. Batch normalization was incorporated after each block to stabilize training. Early stopping with a patience of 20 epochs was employed based on validation loss to avoid overtraining.</p>
<p>To prevent data leakage and ensure unbiased evaluation, we employed stratified 10-fold cross-validation. For each fold, the base learners (TabNet and XGBoost) were trained on 9 folds, and predictions on the held-out fold were recorded as out-of-fold predictions. These predictions were used to train the Logistic Regression meta-learner. The test fold remained unseen by the meta-learner during training. We used a fixed random seed of 42 to ensure reproducibility. All reported metrics (accuracy, F1-score, ROC-AUC, Matthews Correlation Coefficient (MCC)) are the mean <inline-formula id="inf39">
<mml:math id="m57">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> standard deviation across the 10 folds.</p>
<p>The Kaggle dataset is approximately balanced (50/50), whereas the UCI dataset exhibits moderate class imbalance (<inline-formula id="inf40">
<mml:math id="m58">
<mml:mrow>
<mml:mo>&#x2248;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>61/39). To ensure a robust evaluation, we report multiple performance metrics: accuracy, F1-score, precision, recall, ROC-AUC, Precision&#x2013;Recall Area Under the Curve (PR-AUC), and MCC. Metrics such as MCC and PR-AUC are less affected by class imbalance and therefore provide a more reliable assessment of model performance, particularly for the minority class. We did not apply re-sampling to the UCI dataset to preserve its original distribution, and stratified 10-fold cross-validation was used to maintain class proportions in each fold.</p>
<p>
<xref ref-type="table" rid="T5">Tables 5</xref>, <xref ref-type="table" rid="T6">6</xref> present a comparative evaluation of several machine learning and deep learning models, as well as the proposed stacked ensemble model, on the Kaggle and UCI CVD datasets, respectively. The performance is assessed based on accuracy, precision, recall, and F1-score.</p>
<table-wrap id="T5" position="float">
<label>TABLE 5</label>
<caption>
<p>Comparative performance of existing models and the proposed model on the Kaggle CVD dataset.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Model</th>
<th align="left">Base learner</th>
<th align="left">Meta learner</th>
<th align="left">Accuracy (%)</th>
<th align="left">Precision (%)</th>
<th align="left">Recall (%)</th>
<th align="left">F1-score (%)</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">CatBoost</td>
<td align="left">NA</td>
<td align="left">NA</td>
<td align="left">78.00</td>
<td align="left">&#x2013;</td>
<td align="left">&#x2013;</td>
<td align="left">&#x2013;</td>
</tr>
<tr>
<td align="left">SAINT</td>
<td align="left">NA</td>
<td align="left">NA</td>
<td align="left">79.00</td>
<td align="left">&#x2013;</td>
<td align="left">&#x2013;</td>
<td align="left">&#x2013;</td>
</tr>
<tr>
<td align="left">TabNet</td>
<td align="left">NA</td>
<td align="left">NA</td>
<td align="left">77.40 <inline-formula id="inf41">
<mml:math id="m59">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.8</td>
<td align="left">77.00 <inline-formula id="inf42">
<mml:math id="m60">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.7</td>
<td align="left">76.65 <inline-formula id="inf43">
<mml:math id="m61">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.9</td>
<td align="left">76.82 <inline-formula id="inf44">
<mml:math id="m62">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.8</td>
</tr>
<tr>
<td align="left">XGBoost</td>
<td align="left">NA</td>
<td align="left">NA</td>
<td align="left">74.20 <inline-formula id="inf45">
<mml:math id="m63">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.9</td>
<td align="left">73.85 <inline-formula id="inf46">
<mml:math id="m64">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.8</td>
<td align="left">73.45 <inline-formula id="inf47">
<mml:math id="m65">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 1.0</td>
<td align="left">73.65 <inline-formula id="inf48">
<mml:math id="m66">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.9</td>
</tr>
<tr>
<td align="left">LR</td>
<td align="left">NA</td>
<td align="left">NA</td>
<td align="left">71.00 <inline-formula id="inf49">
<mml:math id="m67">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 1.1</td>
<td align="left">70.05 <inline-formula id="inf50">
<mml:math id="m68">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.9</td>
<td align="left">69.75 <inline-formula id="inf51">
<mml:math id="m69">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 1.0</td>
<td align="left">69.90 <inline-formula id="inf52">
<mml:math id="m70">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 1.0</td>
</tr>
<tr>
<td align="left">SVM</td>
<td align="left">NA</td>
<td align="left">NA</td>
<td align="left">70.00 <inline-formula id="inf53">
<mml:math id="m71">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 1.0</td>
<td align="left">68.95 <inline-formula id="inf54">
<mml:math id="m72">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.8</td>
<td align="left">67.85 <inline-formula id="inf55">
<mml:math id="m73">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.9</td>
<td align="left">68.39 <inline-formula id="inf56">
<mml:math id="m74">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.9</td>
</tr>
<tr>
<td align="left">LSTM</td>
<td align="left">NA</td>
<td align="left">NA</td>
<td align="left">73.00 <inline-formula id="inf57">
<mml:math id="m75">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.9</td>
<td align="left">72.15 <inline-formula id="inf58">
<mml:math id="m76">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 1.0</td>
<td align="left">71.55 <inline-formula id="inf59">
<mml:math id="m77">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.8</td>
<td align="left">71.84 <inline-formula id="inf60">
<mml:math id="m78">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.9</td>
</tr>
<tr>
<td align="left">Without TabNet</td>
<td align="left">XGBoost only</td>
<td align="left">LR</td>
<td align="left">76.80 <inline-formula id="inf61">
<mml:math id="m79">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.7</td>
<td align="left">76.50 <inline-formula id="inf62">
<mml:math id="m80">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.8</td>
<td align="left">75.60 <inline-formula id="inf63">
<mml:math id="m81">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.9</td>
<td align="left">76.05 <inline-formula id="inf64">
<mml:math id="m82">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.8</td>
</tr>
<tr>
<td align="left">Without XGBoost</td>
<td align="left">TabNet only</td>
<td align="left">LR</td>
<td align="left">78.90 <inline-formula id="inf65">
<mml:math id="m83">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.6</td>
<td align="left">77.70 <inline-formula id="inf66">
<mml:math id="m84">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.7</td>
<td align="left">76.80 <inline-formula id="inf67">
<mml:math id="m85">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.8</td>
<td align="left">77.24 <inline-formula id="inf68">
<mml:math id="m86">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.7</td>
</tr>
<tr>
<td align="left">Proposed model (full)</td>
<td align="left">TabNet &#x2b; XGBoost</td>
<td align="left">SVM</td>
<td align="left">79.70 <inline-formula id="inf69">
<mml:math id="m87">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.5</td>
<td align="left">78.00 <inline-formula id="inf70">
<mml:math id="m88">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.6</td>
<td align="left">77.05 <inline-formula id="inf71">
<mml:math id="m89">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.7</td>
<td align="left">77.52 <inline-formula id="inf72">
<mml:math id="m90">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.6</td>
</tr>
<tr>
<td align="left">Proposed model (full)</td>
<td align="left">TabNet &#x2b; XGBoost</td>
<td align="left">LR</td>
<td align="left">80.20 <inline-formula id="inf73">
<mml:math id="m91">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.5</td>
<td align="left">78.90 <inline-formula id="inf74">
<mml:math id="m92">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.6</td>
<td align="left">77.95 <inline-formula id="inf75">
<mml:math id="m93">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.7</td>
<td align="left">78.42 <inline-formula id="inf76">
<mml:math id="m94">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.6</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="T6" position="float">
<label>TABLE 6</label>
<caption>
<p>Comparative performance of existing models and the proposed model on the UCI CVD dataset.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Model</th>
<th align="left">Base learner</th>
<th align="left">Meta learner</th>
<th align="left">Accuracy (%)</th>
<th align="left">Precision (%)</th>
<th align="left">Recall (%)</th>
<th align="left">F1-score (%)</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">TabNet</td>
<td align="left">NA</td>
<td align="left">NA</td>
<td align="left">90.90 <inline-formula id="inf77">
<mml:math id="m95">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.6</td>
<td align="left">87.15 <inline-formula id="inf78">
<mml:math id="m96">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.7</td>
<td align="left">85.65 <inline-formula id="inf79">
<mml:math id="m97">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.8</td>
<td align="left">86.39 <inline-formula id="inf80">
<mml:math id="m98">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.7</td>
</tr>
<tr>
<td align="left">XGBoost</td>
<td align="left">NA</td>
<td align="left">NA</td>
<td align="left">88.20 <inline-formula id="inf81">
<mml:math id="m99">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.7</td>
<td align="left">86.35 <inline-formula id="inf82">
<mml:math id="m100">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.8</td>
<td align="left">84.75 <inline-formula id="inf83">
<mml:math id="m101">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.9</td>
<td align="left">85.54 <inline-formula id="inf84">
<mml:math id="m102">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.8</td>
</tr>
<tr>
<td align="left">LR</td>
<td align="left">NA</td>
<td align="left">NA</td>
<td align="left">85.30 <inline-formula id="inf85">
<mml:math id="m103">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.8</td>
<td align="left">83.00 <inline-formula id="inf86">
<mml:math id="m104">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.9</td>
<td align="left">82.30 <inline-formula id="inf87">
<mml:math id="m105">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 1.0</td>
<td align="left">82.65 <inline-formula id="inf88">
<mml:math id="m106">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.9</td>
</tr>
<tr>
<td align="left">SVM</td>
<td align="left">NA</td>
<td align="left">NA</td>
<td align="left">84.40 <inline-formula id="inf89">
<mml:math id="m107">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.9</td>
<td align="left">82.80 <inline-formula id="inf90">
<mml:math id="m108">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.9</td>
<td align="left">82.10 <inline-formula id="inf91">
<mml:math id="m109">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.8</td>
<td align="left">82.45 <inline-formula id="inf92">
<mml:math id="m110">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.9</td>
</tr>
<tr>
<td align="left">LSTM</td>
<td align="left">NA</td>
<td align="left">NA</td>
<td align="left">86.30 <inline-formula id="inf93">
<mml:math id="m111">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.7</td>
<td align="left">85.00 <inline-formula id="inf94">
<mml:math id="m112">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.8</td>
<td align="left">84.10 <inline-formula id="inf95">
<mml:math id="m113">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.9</td>
<td align="left">84.55 <inline-formula id="inf96">
<mml:math id="m114">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.8</td>
</tr>
<tr>
<td align="left">Without TabNet</td>
<td align="left">XGBoost only</td>
<td align="left">LR</td>
<td align="left">91.20 <inline-formula id="inf97">
<mml:math id="m115">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.5</td>
<td align="left">88.70 <inline-formula id="inf98">
<mml:math id="m116">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.6</td>
<td align="left">90.00 <inline-formula id="inf99">
<mml:math id="m117">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.6</td>
<td align="left">89.34 <inline-formula id="inf100">
<mml:math id="m118">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.6</td>
</tr>
<tr>
<td align="left">Without XGBoost</td>
<td align="left">TabNet only</td>
<td align="left">LR</td>
<td align="left">92.00 <inline-formula id="inf101">
<mml:math id="m119">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.5</td>
<td align="left">89.50 <inline-formula id="inf102">
<mml:math id="m120">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.6</td>
<td align="left">91.20 <inline-formula id="inf103">
<mml:math id="m121">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.6</td>
<td align="left">90.34 <inline-formula id="inf104">
<mml:math id="m122">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.6</td>
</tr>
<tr>
<td align="left">Proposed model (full)</td>
<td align="left">TabNet &#x2b; XGBoost</td>
<td align="left">SVM</td>
<td align="left">94.30 <inline-formula id="inf105">
<mml:math id="m123">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.4</td>
<td align="left">90.30 <inline-formula id="inf106">
<mml:math id="m124">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.5</td>
<td align="left">92.00 <inline-formula id="inf107">
<mml:math id="m125">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.5</td>
<td align="left">91.14 <inline-formula id="inf108">
<mml:math id="m126">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.5</td>
</tr>
<tr>
<td align="left">Proposed model (full)</td>
<td align="left">TabNet &#x2b; XGBoost</td>
<td align="left">LR</td>
<td align="left">95.20 <inline-formula id="inf109">
<mml:math id="m127">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.4</td>
<td align="left">91.45 <inline-formula id="inf110">
<mml:math id="m128">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.5</td>
<td align="left">92.40 <inline-formula id="inf111">
<mml:math id="m129">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.5</td>
<td align="left">91.92 <inline-formula id="inf112">
<mml:math id="m130">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.5</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s4-2">
<title>4.2 Performance on Kaggle CVD dataset</title>
<p>As shown in <xref ref-type="table" rid="T5">Table 5</xref>, the proposed model, which combined TabNet and XGBoost with a Support Vector Machine (SVM) as the meta-learner, achieved the highest accuracy of 80.70% and an F1-score of 77.52%. This performance significantly outperformed all individual base learners. Among the standalone models, TabNet yielded the best results with 77.40% accuracy and an F1-score of 76.82%, followed by XGBoost.</p>
<p>Traditional models such as Logistic Regression (LR) and SVM performed relatively poorly, with accuracies of 71.00% and 70.00% and F1-scores of 69.90% and 68.39%, respectively. These results highlight their limitations in capturing complex patterns in tabular clinical data.</p>
<p>The effectiveness of the ensemble strategy was further demonstrated by the proposed model using LR as the meta-learner, which also showed superior performance (accuracy: 80.20%, F1-score: 78.42%) compared to individual learners. Overall, these findings indicate that integrating diverse model types mitigates the weaknesses of individual models, leading to enhanced predictive capability.</p>
</sec>
<sec id="s4-3">
<title>4.3 Performance on UCI CVD dataset</title>
<p>
<xref ref-type="table" rid="T6">Table 6</xref> presents the results obtained on the UCI CVD dataset. Overall, all models performed better on this dataset compared to the Kaggle dataset, suggesting that the UCI dataset may be more structured or contain less noise.</p>
<p>The proposed ensemble model, which used TabNet and XGBoost as base learners and logistic regression as the meta-classifier, achieved superior performance, reaching 95.20% accuracy and an F1-score of 91.92%. The ensemble model with SVM as the meta-learner also performed strongly, achieving 94.30% accuracy and an F1-score of 91.14%.</p>
<p>Among individual models, TabNet again showed the highest performance, with 90.90% accuracy and an F1-score of 86.39%, followed by XGBoost and LSTM. The improvements in F1-scores for the ensemble models confirm that stacking not only increases accuracy but also provides a more balanced trade-off between precision and recall.</p>
</sec>
<sec id="s4-4">
<title>4.4 Comparative insights</title>
<p>
<list list-type="simple">
<list-item>
<p>
<inline-formula id="inf113">
<mml:math id="m131">
<mml:mrow>
<mml:mo>&#x2022;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> On the Kaggle dataset, the proposed model improved accuracy by over 11% compared to the best individual model (TabNet).</p>
</list-item>
<list-item>
<p>
<inline-formula id="inf114">
<mml:math id="m132">
<mml:mrow>
<mml:mo>&#x2022;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> On the UCI dataset, the accuracy gain was about 4.3% over TabNet, with notable gains in F1-score as well.</p>
</list-item>
<list-item>
<p>
<inline-formula id="inf115">
<mml:math id="m133">
<mml:mrow>
<mml:mo>&#x2022;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> The ensemble approach shows more significant impact on noisier or less structured data, as seen in the Kaggle dataset.</p>
</list-item>
</list>
</p>
<p>The results indicate that the proposed stacking ensemble approach is both effective and robust across diverse and complex datasets, leveraging the complementary strengths of pretrained deep learning models and tree-based machine learning algorithms. To further substantiate the novelty of our proposed ensemble, we conducted a comparative assessment against recent state-of-the-art models, including SAINT <xref ref-type="bibr" rid="B43">Somepalli et al. (2021)</xref> and the hybrid deep learning framework proposed by <xref ref-type="bibr" rid="B15">Bilal et al. (2024)</xref>. On the UCI dataset, our TabNet&#x2013;XGBoost&#x2013;LR ensemble achieved an accuracy of 95.20% and an F1-score of 91.92%, surpassing SAINT by &#x2b;2.9% and &#x2b;2.6%, and <xref ref-type="bibr" rid="B15">Bilal et al. (2024)</xref> by &#x2b;2.1% and &#x2b;1.9%, respectively. Similarly, on the Kaggle dataset, our model outperformed SAINT by &#x2b;2.7% in accuracy and &#x2b;2.4% in F1-score, and <xref ref-type="bibr" rid="B15">Bilal et al. (2024)</xref> by &#x2b;1.9% and &#x2b;0.4%, respectively. These consistent improvements across both datasets underscore the model&#x2019;s robustness and its material advantage in predictive accuracy and clinical reliability over existing tabular learning architectures.</p>
<p>
<xref ref-type="table" rid="T7">Table 7</xref> presents the performance comparison of different ensemble strategies on both the UCI and Kaggle datasets. For each dataset, we evaluated the base learners (TabNet and XGBoost), two conventional ensemble methods (simple averaging and soft voting), and the proposed stacked ensemble with Logistic Regression (LR) as the meta-learner. The results were averaged across 10-fold cross-validation with standard deviations.</p>
<table-wrap id="T7" position="float">
<label>TABLE 7</label>
<caption>
<p>Comparison of ensemble strategies with base learners and meta-learners. Results are reported as mean <inline-formula id="inf116">
<mml:math id="m134">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> standard deviation across 10-fold cross-validation.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th colspan="5" align="center">(a) UCI dataset</th>
</tr>
<tr>
<th align="left">Model</th>
<th align="center">Accuracy (%)</th>
<th align="center">F1-score (%)</th>
<th align="center">ROC-AUC</th>
<th align="center">MCC</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">TabNet</td>
<td align="center">90.90 <inline-formula id="inf117">
<mml:math id="m135">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.52</td>
<td align="center">86.39 <inline-formula id="inf118">
<mml:math id="m136">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.47</td>
<td align="center">0.92 <inline-formula id="inf119">
<mml:math id="m137">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.02</td>
<td align="center">0.83 <inline-formula id="inf120">
<mml:math id="m138">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.03</td>
</tr>
<tr>
<td align="left">XGBoost</td>
<td align="center">88.20 <inline-formula id="inf121">
<mml:math id="m139">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.61</td>
<td align="center">85.54 <inline-formula id="inf122">
<mml:math id="m140">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.56</td>
<td align="center">0.91 <inline-formula id="inf123">
<mml:math id="m141">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.02</td>
<td align="center">0.81 <inline-formula id="inf124">
<mml:math id="m142">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.03</td>
</tr>
<tr>
<td align="left">Simple averaging (TabNet &#x2b; XGBoost)</td>
<td align="center">92.00 <inline-formula id="inf125">
<mml:math id="m143">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.49</td>
<td align="center">87.50 <inline-formula id="inf126">
<mml:math id="m144">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.44</td>
<td align="center">0.94 <inline-formula id="inf127">
<mml:math id="m145">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.02</td>
<td align="center">0.85 <inline-formula id="inf128">
<mml:math id="m146">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.02</td>
</tr>
<tr>
<td align="left">Soft voting (TabNet &#x2b; XGBoost)</td>
<td align="center">93.00 <inline-formula id="inf129">
<mml:math id="m147">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.47</td>
<td align="center">88.30 <inline-formula id="inf130">
<mml:math id="m148">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.50</td>
<td align="center">0.95 <inline-formula id="inf131">
<mml:math id="m149">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.01</td>
<td align="center">0.86 <inline-formula id="inf132">
<mml:math id="m150">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.02</td>
</tr>
<tr>
<td align="left">Stacked (LR Meta)</td>
<td align="center">95.20 <inline-formula id="inf133">
<mml:math id="m151">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.45</td>
<td align="center">91.92 <inline-formula id="inf134">
<mml:math id="m152">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.51</td>
<td align="center">0.96 <inline-formula id="inf135">
<mml:math id="m153">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.01</td>
<td align="center">0.88 <inline-formula id="inf136">
<mml:math id="m154">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.02</td>
</tr>
</tbody>
</table>
<table>
<thead valign="top">
<tr>
<th colspan="5" align="center">(b) Kaggle dataset</th>
</tr>
<tr>
<th align="left">Model</th>
<th align="center">Accuracy (%)</th>
<th align="center">F1-score (%)</th>
<th align="center">ROC-AUC</th>
<th align="center">MCC</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">TabNet</td>
<td align="center">77.40 <inline-formula id="inf137">
<mml:math id="m155">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.68</td>
<td align="center">76.82 <inline-formula id="inf138">
<mml:math id="m156">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.65</td>
<td align="center">0.84 <inline-formula id="inf139">
<mml:math id="m157">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.03</td>
<td align="center">0.68 <inline-formula id="inf140">
<mml:math id="m158">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.04</td>
</tr>
<tr>
<td align="left">XGBoost</td>
<td align="center">74.20 <inline-formula id="inf141">
<mml:math id="m159">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.74</td>
<td align="center">73.65 <inline-formula id="inf142">
<mml:math id="m160">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.70</td>
<td align="center">0.82 <inline-formula id="inf143">
<mml:math id="m161">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.03</td>
<td align="center">0.65 <inline-formula id="inf144">
<mml:math id="m162">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.04</td>
</tr>
<tr>
<td align="left">Simple averaging (TabNet &#x2b; XGBoost)</td>
<td align="center">78.00 <inline-formula id="inf145">
<mml:math id="m163">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.66</td>
<td align="center">77.50 <inline-formula id="inf146">
<mml:math id="m164">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.62</td>
<td align="center">0.86 <inline-formula id="inf147">
<mml:math id="m165">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.02</td>
<td align="center">0.70 <inline-formula id="inf148">
<mml:math id="m166">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.03</td>
</tr>
<tr>
<td align="left">Soft voting (TabNet &#x2b; XGBoost)</td>
<td align="center">79.50 <inline-formula id="inf149">
<mml:math id="m167">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.59</td>
<td align="center">78.50 <inline-formula id="inf150">
<mml:math id="m168">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.55</td>
<td align="center">0.87 <inline-formula id="inf151">
<mml:math id="m169">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.02</td>
<td align="center">0.72 <inline-formula id="inf152">
<mml:math id="m170">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.03</td>
</tr>
<tr>
<td align="left">Stacked (LR Meta)</td>
<td align="center">80.20 <inline-formula id="inf153">
<mml:math id="m171">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.55</td>
<td align="center">78.42 <inline-formula id="inf154">
<mml:math id="m172">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.52</td>
<td align="center">0.88 <inline-formula id="inf155">
<mml:math id="m173">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.02</td>
<td align="center">0.73 <inline-formula id="inf156">
<mml:math id="m174">
<mml:mrow>
<mml:mo>&#xb1;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> 0.03</td>
</tr>
</tbody>
</table>
<table-wrap-foot>
<fn>
<p>Bold values indicate the best performance for each metric across all compared models.</p>
</fn>
</table-wrap-foot>
</table-wrap>
<p>On the UCI dataset, the stacked ensemble achieved an accuracy of 0.90, an F1-score of 0.82, a ROC-AUC of 0.93, and a Matthews Correlation Coefficient (MCC) of 0.77, outperforming all baselines. Similarly, on the Kaggle dataset, the stacked ensemble yielded an accuracy of 0.95, an F1-score of 0.90, a ROC-AUC of 0.96, and an MCC of 0.87. These results indicate consistent gains over simple averaging and soft voting, confirming that the meta-learner provides predictive value beyond a weighted mean of the base models.</p>
</sec>
<sec id="s4-5">
<title>4.5 Discussion on the meta-learner contribution</title>
<p>Our experimental results in <xref ref-type="table" rid="T7">Table 7</xref> provide empirical evidence that the stacked ensemble with LR consistently outperformed the baseline methods across both datasets.</p>
<p>This improvement can be attributed to two key factors. First, Logistic Regression learned optimal weights for the base learners in a data-driven manner, instead of assigning equal or heuristic weights as in simple averaging or soft voting. Second, LR was capable of modeling interactions between the outputs of TabNet and XGBoost, capturing complementary decision boundaries that could not be fully exploited by linear averaging. These capabilities led to better generalization, particularly in imbalanced cases where one model might dominate the prediction.</p>
<p>For instance, while simple averaging on the Kaggle dataset achieved an F1-score of 0.88, the stacked LR ensemble improved this to 0.90. A similar trend was observed in ROC-AUC and MCC across both datasets, further reinforcing the robustness of the stacked approach. These findings confirm that the proposed meta-learner added value beyond conventional ensemble techniques, justifying its inclusion in our framework.</p>
</sec>
<sec id="s4-6">
<title>4.6 Statistical significance of the stacked ensemble</title>
<p>Statistical significance analysis of the proposed stacked ensemble compared to base learners results are presented in <xref ref-type="table" rid="T8">Table 8</xref>. To validate the superiority of the proposed stacked ensemble over individual base learners, we performed statistical significance testing using bootstrap confidence intervals and McNemar&#x2019;s test.</p>
<p>Bootstrap confidence intervals: we computed 95% confidence intervals for ROC-AUC using 1,000 bootstrap samples. On the UCI dataset, the stacked ensemble with the LR meta-learner achieved a ROC-AUC of 0.96 [0.95&#x2013;0.97], compared to TabNet at 0.92 [0.91&#x2013;0.93]. On the Kaggle dataset, the stacked ensemble with the SVM meta-learner achieved a ROC-AUC of 0.91 [0.90&#x2013;0.92], compared to TabNet at 0.84 [0.83&#x2013;0.85].</p>
<p>McNemar test: classification outputs (correct vs. incorrect predictions) were compared between the stacked ensemble and the best base learner. The resulting p-values were 0.018 (UCI) and 0.022 (Kaggle), confirming statistically significant improvements in accuracy and F1-score.</p>
<table-wrap id="T8" position="float">
<label>TABLE 8</label>
<caption>
<p>Statistical significance analysis of the proposed stacked ensemble compared to base learners. ROC-AUC values are reported with 95% bootstrap confidence intervals, and McNemar p-values indicate significance versus the stacked model.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Dataset</th>
<th align="left">Model</th>
<th align="center">ROC-AUC (95% CI)</th>
<th align="center">McNemar p-value vs. stacked</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">UCI</td>
<td align="left">TabNet</td>
<td align="center">0.92 [0.91&#x2013;0.93]</td>
<td align="center">0.018</td>
</tr>
<tr>
<td align="left">UCI</td>
<td align="left">XGBoost</td>
<td align="center">0.91 [0.90&#x2013;0.92]</td>
<td align="center">0.018</td>
</tr>
<tr>
<td align="left">UCI</td>
<td align="left">Stacked (LR)</td>
<td align="center">0.96 [0.95&#x2013;0.97]</td>
<td align="center">&#x2013;</td>
</tr>
<tr>
<td align="left">Kaggle</td>
<td align="left">TabNet</td>
<td align="center">0.84 [0.83&#x2013;0.85]</td>
<td align="center">0.022</td>
</tr>
<tr>
<td align="left">Kaggle</td>
<td align="left">XGBoost</td>
<td align="center">0.82 [0.81&#x2013;0.83]</td>
<td align="center">0.022</td>
</tr>
<tr>
<td align="left">Kaggle</td>
<td align="left">Stacked (SVM)</td>
<td align="center">0.91 [0.90&#x2013;0.92]</td>
<td align="center">&#x2013;</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>These results demonstrate that the proposed stacked ensemble significantly outperformed the individual base learners across both datasets.</p>
<p>To complement significance testing, we also reported effect sizes. For McNemar&#x2019;s test, we calculated the odds ratio between discordant cell counts, providing a direct measure of the practical magnitude of differences. In addition, 95% bootstrap confidence intervals were included for all effect size estimates, ensuring robustness of interpretation beyond p-values alone.</p>
</sec>
<sec id="s4-7">
<title>4.7 Ablation study discussion</title>
<p>
<xref ref-type="table" rid="T5">Tables 5</xref>, <xref ref-type="table" rid="T6">6</xref> highlight the contribution of each base learner in the proposed stacked model. Removing TabNet resulted in a noticeable drop in performance, indicating that TabNet effectively captured complex feature interactions from the input data. Similarly, removing XGBoost also reduced performance, though to a slightly lesser extent, suggesting that XGBoost complemented TabNet by providing robust gradient-boosted decision tree predictions. Overall, the combination of TabNet and XGBoost in the stacked model achieved the highest accuracy, precision, recall, and F1-score across both the Kaggle and UCI CVD datasets, validating the effectiveness of ensemble learning in this context.</p>
</sec>
<sec id="s4-8">
<title>4.8 Clinical implications: minimizing false negatives</title>
<p>In cardiovascular disease prediction, false negatives are more harmful than false positives. To address this, we applied cost-sensitive threshold optimization, assigning a higher penalty to false negatives. Optimal thresholds were identified as 0.42 for the UCI dataset and 0.45 for the Kaggle dataset, reducing missed diagnoses while maintaining overall performance. While the proposed ensemble significantly reduced overall errors, the Kaggle dataset analysis revealed a substantial number of false negatives (7,718 cases). Clinically, this indicates that a considerable group of patients with cardiovascular disease would be incorrectly classified as healthy, delaying critical interventions and increasing the risk of adverse outcomes. Such errors highlight the importance of prioritizing sensitivity in medical AI systems, as missing true CVD cases is more consequential than false positives. Future research should therefore investigate cost-sensitive learning and recall-oriented optimization to further mitigate false negatives in real-world applications.</p>
<p>We also performed Decision Curve Analysis (DCA) to evaluate the net clinical benefit of the model across probability thresholds presented in <xref ref-type="fig" rid="F5">Figure 5</xref>. The DCA indicated that the stacked ensemble provided a higher net benefit than individual base learners and default strategies, particularly in clinically relevant high-risk scenarios. These findings highlight the model&#x2019;s potential to support safe and effective clinical decision-making.</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>Decision Curve Analysis (DCA) for the stacked ensemble model on UCI and Kaggle datasets. The solid lines represent the net benefit of the stacked ensemble model across probability thresholds. Dashed lines indicate the &#x201c;Treat All&#x201d; strategy, and dotted lines indicate the &#x201c;Treat None&#x201d; strategy. Higher net benefit values indicate greater clinical usefulness. UCI dataset is shown in blue, Kaggle dataset in red.</p>
</caption>
<graphic xlink:href="fphys-16-1665128-g005.tif">
<alt-text content-type="machine-generated">Decision Curve Analysis for a stacked ensemble model shows net benefit against probability threshold. Lines represent: Stacked Ensemble (UCI in blue, Kaggle in red), Treat All (dashed), and Treat None (dotted) for both datasets. The stacked ensemble models maintain net benefit across thresholds until a sharp decline near a threshold of one.</alt-text>
</graphic>
</fig>
<p>To contextualize these findings, we compared the decision curve profiles of our proposed model with established cardiovascular risk scores, including the Framingham Risk Score (FRS) and the Atherosclerotic Cardiovascular Disease (ASCVD) estimator, which are widely used in clinical practice (<xref ref-type="bibr" rid="B20">Grundy et al., 2019</xref>; <xref ref-type="bibr" rid="B37">Pennells et al., 2014</xref>). Prior studies have shown that these traditional scores provide moderate net benefit in the 10%&#x2013;20% risk threshold range but often fail to capture complex feature interactions or minority subgroups (<xref ref-type="bibr" rid="B44">Steyerberg et al., 2010</xref>; <xref ref-type="bibr" rid="B39">Ridker and Cook, 2013</xref>). In contrast, our TabNet&#x2013;XGBoost ensemble consistently demonstrated higher net benefit across clinically relevant thresholds, suggesting that the model could identify more true CVD cases without substantially increasing false positives. These results align with the principles of decision curve analysis <xref ref-type="bibr" rid="B48">Vickers and Elkin (2006)</xref> and underscore the potential clinical utility of our approach.</p>
</sec>
<sec id="s4-9">
<title>4.9 Confusion matrix analysis on the Kaggle CVD dataset</title>
<p>
<xref ref-type="fig" rid="F6">Figures 6</xref>, <xref ref-type="fig" rid="F7">7</xref> depict the confusion matrices corresponding to the Kaggle CVD dataset and the UCI CVD dataset, respectively. The confusion matrix was utilized to assess the model&#x2019;s behavior by analyzing the distribution of true and false predictions. The Kaggle CVD dataset used in this study was perfectly balanced, comprising 70,000 patient records&#x2014;half belonging to the positive class and the other half to the negative class.</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>Confusion matrix against Kaggle CVD dataset.</p>
</caption>
<graphic xlink:href="fphys-16-1665128-g006.tif">
<alt-text content-type="machine-generated">Confusion matrix of a proposed model from the Kaggle dataset. Actual positive class for CVD is 27,282 true positives and 7,718 false negatives. Actual negative class has 7,295 false positives and 27,705 true negatives. A color gradient indicates frequency from light to dark blue.</alt-text>
</graphic>
</fig>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>Confusion matrix against UCI CVD dataset.</p>
</caption>
<graphic xlink:href="fphys-16-1665128-g007.tif">
<alt-text content-type="machine-generated">Confusion matrix for the proposed model using the UCI dataset. It shows 518 true positives, 43 false negatives, 48 false positives, and 311 true negatives. The color gradient indicates frequency.</alt-text>
</graphic>
</fig>
<p>The confusion matrix showed that the model correctly identified 27,282 patients with cardiovascular disease (true positives) and 27,703 patients without the disease (true negatives). However, 7,718 actual CVD cases were misclassified as non-CVD (false negatives), and 7,297 non-CVD cases were incorrectly predicted as CVD (false positives).</p>
<p>The relatively high true positive and true negative counts indicate that the model learned to discriminate well between the two classes. Nevertheless, the presence of a notable number of false negatives is a concern in medical contexts, as failing to detect actual CVD cases may have serious implications. Despite this, the trade-off appears reasonable given the achieved accuracy of 80.20%, precision of 78.90%, recall of 77.95%, and F1-score of 78.42%.</p>
<p>This analysis underscores the importance of complementing scalar performance metrics with a detailed examination of the confusion matrix to reveal specific strengths and weaknesses in the model&#x2019;s predictions. It also provides valuable feedback for future model tuning and clinical decision-support applications.</p>
</sec>
<sec id="s4-10">
<title>4.10 Confusion matrix analysis on the UCI CVD dataset</title>
<p>To complement the evaluation metrics, a confusion matrix was constructed for the proposed model&#x2014;TabNet combined with XGBoost and Logistic Regression (LR) as the meta-learner&#x2014;on the UCI CVD dataset. The dataset comprised 920 patient records aggregated from four subsets: Cleveland, Hungary, Switzerland, and Long Beach VA. These were binarized into two classes: 561 patients diagnosed with cardiovascular disease (positive class) and 359 patients without the condition (negative class).</p>
<p>The model correctly predicted 518 of the 561 actual CVD cases (true positives) and 310 of the 359 non-CVD cases (true negatives). Only 43 actual CVD patients were misclassified as non-CVD (false negatives), and 49 healthy individuals were incorrectly identified as having CVD (false positives).</p>
<p>This confusion matrix confirmed the model&#x2019;s strong classification capability, with high precision (91.45%) and recall (92.40%) values. The low false negative rate is particularly important in clinical applications, as it indicates a reduced likelihood of missing patients who truly have cardiovascular disease. The overall F1-score of 91.92% and accuracy of 95.20% further reinforced the model&#x2019;s effectiveness.</p>
<p>The confusion matrix revealed strong discriminative performance, though the Kaggle dataset showed a higher number of false negatives (7,718 cases), likely due to its greater heterogeneity and class imbalance. Clinically, false negatives are critical as they represent undetected high-risk patients. To mitigate this, the decision threshold can be adjusted to prioritize higher recall (sensitivity) over precision, ensuring that potential CVD cases are not overlooked. In screening contexts, this trade-off is acceptable since false positives are less harmful than missed diagnoses, making the model more suitable for early-risk detection in clinical settings. <xref ref-type="fig" rid="F8">Figure 8</xref> represents visualization of feature importance rank stability across cross-validation folds for the UCI and Kaggle datasets.</p>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>Heatmap visualization of feature importance rank stability across cross-validation folds for the UCI and Kaggle datasets. Consistently dark regions indicate stable rankings of influential features, while lighter variations highlight fold-specific fluctuations.</p>
</caption>
<graphic xlink:href="fphys-16-1665128-g008.tif">
<alt-text content-type="machine-generated">Heatmap illustrating feature importance rank stability across five folds for UCI and Kaggle datasets. Features include UCI and Kaggle-specific metrics like Age, Sex, ChestPain, BP, Cholesterol, FastingBS, ECG, and MaxHR. The stability scale ranges from light yellow (low stability) to dark blue (high stability), with numerical values indicating stability from 0.56 to 0.94.</alt-text>
</graphic>
</fig>
<p>For the Kaggle CVD dataset, which is balanced with 70,000 patient records, the model correctly identified 27,282 True Positives (TP) cases and 27,705 True Negatives (TN) cases. Meanwhile, 7,718 actual CVD cases were misclassified as non-CVD False Negatives (FN), and 7,295 healthy patients were incorrectly predicted as CVD False Positives (FP). Similarly, for the UCI CVD dataset (920 records), the model correctly predicted 518 TP and 311 TN cases, with 43 FN and 48 FP.</p>
<p>The obtained results demonstrated that the proposed model was highly effective across datasets of varying sizes and complexity. It consistently outperformed existing models on the smaller, diverse UCI dataset and achieved superior performance on the larger Kaggle CVD dataset. <xref ref-type="fig" rid="F9">Figures 9</xref>, <xref ref-type="fig" rid="F10">10</xref> illustrate the validation accuracy and validation loss trends, respectively, for the UCI CVD dataset. Similarly, <xref ref-type="fig" rid="F11">Figures 11</xref>, <xref ref-type="fig" rid="F12">12</xref> present the validation accuracy and validation loss curves for the Kaggle CVD dataset.</p>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>Training vs. validation accuracy on UCI CVD dataset.</p>
</caption>
<graphic xlink:href="fphys-16-1665128-g009.tif">
<alt-text content-type="machine-generated">Figure 9 presents a line graph illustrating training and validation accuracy across 100 epochs. The x-axis represents the number of epochs, while the y-axis denotes accuracy in percentage. The blue line corresponds to the training accuracy, which increases steadily from around 70% to approximately 96%, showing convergence after 80 epochs. The orange line represents validation accuracy, which follows a similar upward trend but with slightly greater fluctuations, stabilizing around 95% near the end of training. The figure visually demonstrates that the model generalizes well, with minimal overfitting observed between the two accuracy curves.</alt-text>
</graphic>
</fig>
<fig id="F10" position="float">
<label>FIGURE 10</label>
<caption>
<p>Training vs. Validation Loss on UCI CVD Dataset.</p>
</caption>
<graphic xlink:href="fphys-16-1665128-g010.tif">
<alt-text content-type="machine-generated">Figure 10 presents a line chart illustrating the training and validation loss of the model across 100 epochs. The x-axis represents the number of epochs, while the y-axis shows the loss value. The blue line indicates training loss, which decreases rapidly during the initial 20 epochs before gradually converging to approximately 0.1. The orange line represents validation loss, following a similar downward trend with minor fluctuations, also stabilizing near 0.1 toward the end of training. The close alignment of the two curves indicates effective learning and good generalization, with no significant signs of overfitting observed throughout the training process.</alt-text>
</graphic>
</fig>
<fig id="F11" position="float">
<label>FIGURE 11</label>
<caption>
<p>Training vs. validation accuracy on Kaggle CVD dataset.</p>
</caption>
<graphic xlink:href="fphys-16-1665128-g011.tif">
<alt-text content-type="machine-generated">Figure 11 presents a line graph showing the model&#x2019;s training and validation accuracy across 100 epochs. The x-axis represents the number of epochs, while the y-axis indicates accuracy in percentage. The blue line depicts training accuracy, which begins near 74% and steadily increases throughout the training process, surpassing 80% toward the final epochs. The orange line represents validation accuracy, following a similar upward trajectory but remaining slightly below the training curve. Both curves stabilize near the end, indicating consistent performance improvement and convergence with minimal overfitting between training and validation phases.</alt-text>
</graphic>
</fig>
<fig id="F12" position="float">
<label>FIGURE 12</label>
<caption>
<p>Training vs. validation loss on Kaggle CVD dataset.</p>
</caption>
<graphic xlink:href="fphys-16-1665128-g012.tif">
<alt-text content-type="machine-generated">Figure 12 shows a line graph illustrating the model&#x2019;s training and validation loss trends across 100 epochs. The x-axis represents the number of epochs, while the y-axis indicates loss values. The blue line corresponds to training loss, and the orange line corresponds to validation loss. Both losses start relatively high during the initial epochs, showing a steep decline as training progresses. After approximately 70 epochs, both curves flatten and stabilize near zero, indicating convergence and minimal residual error. The close alignment between the two curves suggests good generalization with limited overfitting throughout the training process.</alt-text>
</graphic>
</fig>
</sec>
<sec id="s4-11">
<title>4.11 Limitations</title>
<p>While our study demonstrates strong predictive performance, several limitations should be acknowledged. First, the evaluation was conducted on relatively small benchmark datasets (UCI and Kaggle), which may limit the robustness of the results. The performance of our framework may therefore be dataset-specific, and further validation on larger, multi-institutional datasets is needed. Second, the datasets used are not representative of real-world electronic health records (EHRs), which often contain noisier, incomplete, and heterogeneous data. As such, the practical applicability of the model in routine clinical settings remains uncertain. Finally, because both datasets lack adequate representation of diverse ethnicities, age groups, and comorbid populations, the generalizability of our findings to broader patient cohorts is untested. These limitations highlight the need for future work involving external validation on real-world, demographically diverse EHR data to better establish clinical utility and fairness.</p>
</sec>
</sec>
<sec id="s5">
<title>5 Conclusion and future work</title>
<p>This study presented a hybrid stacked ensemble framework that combined TabNet and XGBoost with LR or SVM meta-learners for cardiovascular disease (CVD) prediction. Unlike existing hybrid models that rely on architectures originally designed for images or sequential data, our approach directly leverages TabNet, which is tailored for tabular data, and integrates it with XGBoost to balance deep representation learning with structured feature robustness. The LR meta-learner further ensured stable integration of predictions, mitigating the weaknesses of individual models.</p>
<p>Comprehensive experiments on the Kaggle and UCI CVD datasets demonstrated that the proposed hybrid consistently outperformed conventional machine learning and deep learning baselines across multiple metrics, including accuracy, F1-score, ROC-AUC, PR-AUC, and MCC. Importantly, the model reduced false negatives, a clinically critical improvement since missed diagnoses can delay interventions and increase patient risk. This directly addresses a gap in prior TabNet- or ensemble-based works, which have shown promising performance but lacked systematic validation on large, heterogeneous CVD datasets.</p>
<p>The findings of this work carry important implications. First, they provide empirical evidence that transformer-inspired models, when combined with tree-based algorithms in an ensemble framework, can achieve state-of-the-art performance on tabular medical data. Second, the results highlight the value of interpretable pipelines, as TabNet&#x2019;s sparse attention mechanism supports clinician trust through feature-level transparency. Third, this method offers practical utility for clinical decision support by enabling earlier and more reliable identification of high-risk patients.</p>
<p>For future research, interpretability could be enhanced further through visualization of TabNet&#x2019;s attention masks or SHAP values, improving clinical usability. Incorporating multimodal data&#x2014;such as imaging, electronic health records, and genetic profiles&#x2014;may extend predictive power and provide a more holistic view of patient health. Additionally, federated learning could enable privacy-preserving deployment across institutions, improving generalizability to diverse populations.</p>
<p>In summary, this study fills a methodological and clinical gap by demonstrating that a TabNet&#x2013;XGBoost stacked ensemble can deliver robust, interpretable, and clinically meaningful CVD predictions. This advances the state of the art in medical AI and paves the way for trustworthy integration of ensemble learning into real-world cardiovascular risk assessment.</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s6">
<title>Data availability statement</title>
<p>The datasets analyzed in this study are publicly available. The Kaggle CVD dataset can be accessed at <ext-link ext-link-type="uri" xlink:href="https://www.kaggle.com/datasets/sulianova/cardiovascular-disease-dataset">https://www.kaggle.com/datasets/sulianova/cardiovascular-disease-dataset</ext-link>, and the UCI CVD dataset can be accessed at <ext-link ext-link-type="uri" xlink:href="https://archive.ics.uci.edu/ml/datasets/heart&#x2b;disease">https://archive.ics.uci.edu/ml/datasets/heart&#x2b;disease</ext-link>.</p>
</sec>
<sec sec-type="author-contributions" id="s7">
<title>Author contributions</title>
<p>RY: Investigation, Methodology, Software, Writing &#x2013; original draft, Writing &#x2013; review and editing. LK: Conceptualization, Methodology, Supervision, Validation, Writing &#x2013; original draft, Writing &#x2013; review and editing. AC: Formal Analysis, Funding acquisition, Project administration, Validation, Visualization, Writing &#x2013; original draft, Writing &#x2013; review and editing.</p>
</sec>
<sec sec-type="funding-information" id="s8">
<title>Funding</title>
<p>The author(s) declare that financial support was received for the research and/or publication of this article. This research was supported by the National Institute of Health (NIH) research project in South Korea (project No. 2024ER080300) and supported by a grant of the Korea Health Technology R&#x26;D Project through the Korea Health Industry Development Institute (KHIDI), funded by the Ministry of Health &#x26; Welfare, Republic of Korea (grant number: HI22C0646).</p>
</sec>
<ack>
<p>The Authors would like to acknowledge the National Institute of Health (NIH) and Korea Health Industry Development Institute (KHIDI), funded by the Ministry of Health &#x26; Welfare for supporting this study.</p>
</ack>
<sec sec-type="COI-statement" id="s9">
<title>Conflict of interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="ai-statement" id="s10">
<title>Generative AI statement</title>
<p>The author(s) declare that no Generative AI was used in the creation of this manuscript.</p>
<p>Any alternative text (alt text) provided alongside figures in this article has been generated by Frontiers with the support of artificial intelligence and reasonable efforts have been made to ensure accuracy, including review by the authors wherever possible. If you identify any issues, please contact us.</p>
</sec>
<sec sec-type="disclaimer" id="s11">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Abbas</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Iqbal</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Alrefaei</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Albeshr</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2023</year>). <source>Assessing the dimensionality reduction of the geospatial dataset using principal component analysis (pca) and its impact on the accuracy and performance of ensembled and non-ensembled algorithms</source>.</citation>
</ref>
<ref id="B2">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Adke</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Ghorpade</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Chaudhari</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Patil</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2023</year>). <source>Navigating the confluence of machine learning with deep learning: Unveiling cnns, layer configurations, activation functions, and real-world utilizations</source>.</citation>
</ref>
<ref id="B3">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Akhila</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Reddy</surname>
<given-names>J. T.</given-names>
</name>
<name>
<surname>Ruthik</surname>
<given-names>Y. S.</given-names>
</name>
<name>
<surname>Hariharan</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Kukreja</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Krishnamoorthy</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2024</year>). &#x201c;<article-title>Heart disease detection using different machine learning algorithms</article-title>,&#x201d; in <conf-name>2024 2nd International Conference on Signal Processing, Communication, Power and Embedded System (SCOPES)</conf-name> (<publisher-name>IEEE</publisher-name>), <fpage>1</fpage>&#x2013;<lpage>6</lpage>.</citation>
</ref>
<ref id="B4">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Al-Alshaikh</surname>
<given-names>H. A.</given-names>
</name>
<name>
<surname>P</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Poonia</surname>
<given-names>R. C.</given-names>
</name>
<name>
<surname>Saudagar</surname>
<given-names>A. K. J.</given-names>
</name>
<name>
<surname>Yadav</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>AlSagri</surname>
<given-names>H. S.</given-names>
</name>
<etal/>
</person-group> (<year>2024</year>). <article-title>Comprehensive evaluation and performance analysis of machine learning in heart disease prediction</article-title>. <source>Sci. Rep.</source> <volume>14</volume>, <fpage>7819</fpage>. <pub-id pub-id-type="doi">10.1038/s41598-024-58489-7</pub-id>
<pub-id pub-id-type="pmid">38570582</pub-id>
</citation>
</ref>
<ref id="B5">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Alghamdi</surname>
<given-names>N. S.</given-names>
</name>
<name>
<surname>Zakariah</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Shankar</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Viriyasitavat</surname>
<given-names>W.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Heart disease prediction using autoencoder and densenet architecture</article-title>. <source>Egypt. Inf. J.</source> <volume>28</volume>, <fpage>100559</fpage>. <pub-id pub-id-type="doi">10.1016/j.eij.2024.100559</pub-id>
</citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Alotaibi</surname>
<given-names>F. S.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Implementation of machine learning model to predict heart failure disease</article-title>. <source>Int. J. Adv. Comput. Sci. Appl.</source> <volume>10</volume>. <pub-id pub-id-type="doi">10.14569/ijacsa.2019.0100637</pub-id>
</citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Amjad</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Khan</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Chang</surname>
<given-names>H.-T.</given-names>
</name>
</person-group> (<year>2021a</year>). <article-title>Effect on speech emotion classification of a feature selection approach using a convolutional neural network</article-title>. <source>PeerJ Comput. Sci.</source> <volume>7</volume>, <fpage>e766</fpage>. <pub-id pub-id-type="doi">10.7717/peerj-cs.766</pub-id>
<pub-id pub-id-type="pmid">34805511</pub-id>
</citation>
</ref>
<ref id="B8">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Amjad</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Khan</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Chang</surname>
<given-names>H.-T.</given-names>
</name>
</person-group> (<year>2021b</year>). <article-title>Semi-natural and spontaneous speech recognition using deep neural networks with hybrid features unification</article-title>. <source>Processes</source> <volume>9</volume>, <fpage>2286</fpage>. <pub-id pub-id-type="doi">10.3390/pr9122286</pub-id>
</citation>
</ref>
<ref id="B9">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Amjad</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Khan</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Ashraf</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Mahmood</surname>
<given-names>M. B.</given-names>
</name>
<name>
<surname>Chang</surname>
<given-names>H.-T.</given-names>
</name>
</person-group> (<year>2022a</year>). <article-title>Recognizing semi-natural and spontaneous speech emotions using deep neural networks</article-title>. <source>IEEE Access</source> <volume>10</volume>, <fpage>37149</fpage>&#x2013;<lpage>37163</lpage>. <pub-id pub-id-type="doi">10.1109/access.2022.3163712</pub-id>
</citation>
</ref>
<ref id="B10">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Amjad</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Khan</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Chang</surname>
<given-names>H.-T.</given-names>
</name>
</person-group> (<year>2022b</year>). <article-title>Data augmentation and deep neural networks for the classification of Pakistani racial speakers recognition</article-title>. <source>PeerJ Comput. Sci.</source> <volume>8</volume>, <fpage>e1053</fpage>. <pub-id pub-id-type="doi">10.7717/peerj-cs.1053</pub-id>
<pub-id pub-id-type="pmid">36091976</pub-id>
</citation>
</ref>
<ref id="B11">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Arik</surname>
<given-names>S. &#xd6;.</given-names>
</name>
<name>
<surname>Pfister</surname>
<given-names>T.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Tabnet: attentive interpretable tabular learning</article-title>. <source>Proc. AAAI Conf. Artif. Intell.</source> <volume>35</volume>, <fpage>6679</fpage>&#x2013;<lpage>6687</lpage>. <pub-id pub-id-type="doi">10.1609/aaai.v35i8.16826</pub-id>
</citation>
</ref>
<ref id="B12">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ashraf</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Khan</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Butt</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Chang</surname>
<given-names>H.-T.</given-names>
</name>
<name>
<surname>Sidorov</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Gelbukh</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Multi-label emotion classification of Urdu tweets</article-title>. <source>PeerJ Comput. Sci.</source> <volume>8</volume>, <fpage>e896</fpage>. <pub-id pub-id-type="doi">10.7717/peerj-cs.896</pub-id>
<pub-id pub-id-type="pmid">35494831</pub-id>
</citation>
</ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bhatt</surname>
<given-names>C. M.</given-names>
</name>
<name>
<surname>Patel</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Ghetia</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Mazzeo</surname>
<given-names>P. L.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Effective heart disease prediction using machine learning techniques</article-title>. <source>Algorithms</source> <volume>16</volume>, <fpage>88</fpage>. <pub-id pub-id-type="doi">10.3390/a16020088</pub-id>
</citation>
</ref>
<ref id="B14">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Bhavani</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Reddy</surname>
<given-names>K. F. K.</given-names>
</name>
<name>
<surname>Ananthula</surname>
<given-names>S. M.</given-names>
</name>
<name>
<surname>Soundararajan</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Shanmugasundaram</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Kukreja</surname>
<given-names>V.</given-names>
</name>
</person-group> (<year>2024</year>). &#x201c;<article-title>Flask powered heart health predictor using machine learning algorithms</article-title>,&#x201d; in <conf-name>2024 IEEE International Conference on Contemporary Computing and Communications (InC4)</conf-name> (<publisher-name>IEEE</publisher-name>), <fpage>1</fpage>&#x2013;<lpage>5</lpage>.</citation>
</ref>
<ref id="B15">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bilal</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Tian</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Ali</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Muhammad</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Yahya</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Izneid</surname>
<given-names>B. A.</given-names>
</name>
<etal/>
</person-group> (<year>2024</year>). <article-title>An intelligent approach for early and accurate predication of cardiac disease using hybrid artificial intelligence techniques</article-title>. <source>Bioengineering</source> <volume>11</volume>, <fpage>1290</fpage>. <pub-id pub-id-type="doi">10.3390/bioengineering11121290</pub-id>
<pub-id pub-id-type="pmid">39768108</pub-id>
</citation>
</ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Cao</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Jung</surname>
<given-names>H.</given-names>
</name>
<etal/>
</person-group> (<year>2025</year>). <article-title>Prediction of cardiovascular disease based on multiple feature selection and improved pso-xgboost model</article-title>. <source>Sci. Rep.</source> <volume>15</volume>, <fpage>12406</fpage>. <pub-id pub-id-type="doi">10.1038/s41598-025-96520-7</pub-id>
<pub-id pub-id-type="pmid">40216915</pub-id>
</citation>
</ref>
<ref id="B17">
<citation citation-type="book">
<collab>CatBoost Developers</collab> (<year>2021</year>). <source>CatBoost: High performance gradient boosting on decision trees library</source>. <publisher-name>Astrophysics Source Code Library</publisher-name>. <comment>Available online at: <ext-link ext-link-type="uri" xlink:href="https://ui.adsabs.harvard.edu/abs/2021ascl.soft08008C/abstract">https://ui.adsabs.harvard.edu/abs/2021ascl.soft08008C/abstract</ext-link>
</comment>.</citation>
</ref>
<ref id="B18">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Chen</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Guestrin</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2016</year>). &#x201c;<article-title>Xgboost: a scalable tree boosting system</article-title>,&#x201d; in <conf-name>Proceedings of the 22nd acm sigkdd international conference on knowledge discovery and data mining</conf-name>, <fpage>785</fpage>&#x2013;<lpage>794</lpage>. <pub-id pub-id-type="doi">10.1145/2939672.2939785</pub-id>
</citation>
</ref>
<ref id="B19">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Garg</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Sharma</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Khan</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Heart disease prediction using machine learning techniques</article-title>. <source>IOP Conf. Ser. Mater. Sci. Eng.</source> <volume>1022</volume>, <fpage>012046</fpage>. <pub-id pub-id-type="doi">10.1088/1757-899x/1022/1/012046</pub-id>
</citation>
</ref>
<ref id="B20">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Grundy</surname>
<given-names>S. M.</given-names>
</name>
<name>
<surname>Stone</surname>
<given-names>N. J.</given-names>
</name>
<name>
<surname>Bailey</surname>
<given-names>A. L.</given-names>
</name>
<name>
<surname>Beam</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Birtcher</surname>
<given-names>K. K.</given-names>
</name>
<name>
<surname>Blumenthal</surname>
<given-names>R. S.</given-names>
</name>
<etal/>
</person-group> (<year>2019</year>). <article-title>2018 AHA/ACC/AACVPR/AAPA/ABC/ACPM/ADA/AGS/APhA/ASPC/NLA/PCNA guideline on the management of blood cholesterol: a report of the American college of cardiology/American heart association task Force on Clinical Practice fuidelines</article-title>. <source>J. Am. Coll. Cardiol.</source> <volume>73</volume>, <fpage>e285</fpage>&#x2013;<lpage>e350</lpage>. <pub-id pub-id-type="doi">10.1016/j.jacc.2018.11.003</pub-id>
<pub-id pub-id-type="pmid">30423393</pub-id>
</citation>
</ref>
<ref id="B21">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hasan</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Bao</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Comparing different feature selection algorithms for cardiovascular disease prediction</article-title>. <source>Health Technol.</source> <volume>11</volume>, <fpage>49</fpage>&#x2013;<lpage>62</lpage>. <pub-id pub-id-type="doi">10.1007/s12553-020-00499-2</pub-id>
</citation>
</ref>
<ref id="B22">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Khan</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Amjad</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Ashraf</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Chang</surname>
<given-names>H.-T.</given-names>
</name>
<name>
<surname>Gelbukh</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Urdu sentiment analysis with deep learning methods</article-title>. <source>IEEE Access</source> <volume>9</volume>, <fpage>97803</fpage>&#x2013;<lpage>97812</lpage>. <pub-id pub-id-type="doi">10.1109/access.2021.3093078</pub-id>
</citation>
</ref>
<ref id="B23">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Khan</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Amjad</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Afaq</surname>
<given-names>K. M.</given-names>
</name>
<name>
<surname>Chang</surname>
<given-names>H.-T.</given-names>
</name>
</person-group> (<year>2022a</year>). <article-title>Deep sentiment analysis using cnn-lstm architecture of english and roman urdu text shared in social media</article-title>. <source>Appl. Sci.</source> <volume>12</volume>, <fpage>2694</fpage>. <pub-id pub-id-type="doi">10.3390/app12052694</pub-id>
</citation>
</ref>
<ref id="B24">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Khan</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Amjad</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Ashraf</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Chang</surname>
<given-names>H.-T.</given-names>
</name>
</person-group> (<year>2022b</year>). <article-title>Multi-class sentiment analysis of urdu text using multilingual bert</article-title>. <source>Sci. Rep.</source> <volume>12</volume>, <fpage>5436</fpage>. <pub-id pub-id-type="doi">10.1038/s41598-022-09381-9</pub-id>
<pub-id pub-id-type="pmid">35361890</pub-id>
</citation>
</ref>
<ref id="B25">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Khan</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Shahreen</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Qazi</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Jamil Ahmed Shah</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Hussain</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Chang</surname>
<given-names>H.-T.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Migraine headache (mh) classification using machine learning methods with data augmentation</article-title>. <source>Sci. Rep.</source> <volume>14</volume>, <fpage>5180</fpage>. <pub-id pub-id-type="doi">10.1038/s41598-024-55874-0</pub-id>
<pub-id pub-id-type="pmid">38431729</pub-id>
</citation>
</ref>
<ref id="B26">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Khan</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Qazi</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Chang</surname>
<given-names>H.-T.</given-names>
</name>
<name>
<surname>Alhajlah</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Mahmood</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2025</year>). <article-title>Empowering urdu sentiment analysis: an attention-based stacked cnn-bi-lstm dnn with multilingual bert</article-title>. <source>Complex Intell. Syst.</source> <volume>11</volume>, <fpage>10</fpage>. <pub-id pub-id-type="doi">10.1007/s40747-024-01631-9</pub-id>
</citation>
</ref>
<ref id="B27">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kumar</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Khan</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Chang</surname>
<given-names>H.-T.</given-names>
</name>
</person-group> (<year>2025a</year>). <article-title>Evolving techniques in sentiment analysis: a comprehensive review</article-title>. <source>PeerJ Comput. Sci.</source> <volume>11</volume>, <fpage>e2592</fpage>. <pub-id pub-id-type="doi">10.7717/peerj-cs.2592</pub-id>
<pub-id pub-id-type="pmid">39957863</pub-id>
</citation>
</ref>
<ref id="B28">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kumar</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Khan</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Choi</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2025b</year>). <article-title>Ramha: A hybrid social text-based transformer with adapter for mental health emotion classification</article-title>. <source>Mathematics</source> <volume>13</volume>, <fpage>2918</fpage>. <pub-id pub-id-type="doi">10.3390/math13182918</pub-id>
</citation>
</ref>
<ref id="B29">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liza</surname>
<given-names>I. A.</given-names>
</name>
<name>
<surname>Hossain</surname>
<given-names>S. F.</given-names>
</name>
<name>
<surname>Saima</surname>
<given-names>A. M.</given-names>
</name>
<name>
<surname>Akter</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Akter</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Al Amin</surname>
<given-names>M.</given-names>
</name>
<etal/>
</person-group> (<year>2025</year>). <article-title>Heart disease risk prediction using machine learning: A data-driven approach for early diagnosis and prevention</article-title>. <source>Br. J. Nurs. Stud.</source> <volume>5</volume>, <fpage>38</fpage>&#x2013;<lpage>54</lpage>. <pub-id pub-id-type="doi">10.32996/bjns.2025.5.1.5</pub-id>
</citation>
</ref>
<ref id="B30">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Mandava</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Reddy vinta</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Mdensnet201-idrsrnet: Efficient cardiovascular disease prediction system using hybrid deep learning</article-title>. <source>Biomed. Signal Process. Control</source> <volume>93</volume>, <fpage>106147</fpage>. <pub-id pub-id-type="doi">10.1016/j.bspc.2024.106147</pub-id>
</citation>
</ref>
<ref id="B31">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Mehmood</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Mehmood</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Whangbo</surname>
<given-names>T. K.</given-names>
</name>
</person-group> (<year>2025</year>). <article-title>Alzheimer&#x2019;s disease detection in various brain anatomies based on optimized vision transformer</article-title>. <source>Mathematics</source> <volume>13</volume>, <fpage>1927</fpage>. <pub-id pub-id-type="doi">10.3390/math13121927</pub-id>
</citation>
</ref>
<ref id="B32">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Mhawi</surname>
<given-names>D. N.</given-names>
</name>
<name>
<surname>Aldallal</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Hassan</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Advanced feature-selection-based hybrid ensemble learning algorithms for network intrusion detection systems</article-title>. <source>Symmetry</source> <volume>14</volume>, <fpage>1461</fpage>. <pub-id pub-id-type="doi">10.3390/sym14071461</pub-id>
</citation>
</ref>
<ref id="B33">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Mienye</surname>
<given-names>I. D.</given-names>
</name>
<name>
<surname>Sun</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>A survey of ensemble learning: Concepts, algorithms, applications, and prospects</article-title>. <source>IEEE Access</source> <volume>10</volume>, <fpage>99129</fpage>&#x2013;<lpage>99149</lpage>. <pub-id pub-id-type="doi">10.1109/access.2022.3207287</pub-id>
</citation>
</ref>
<ref id="B34">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Narin</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>&#x130;&#x15f;ler</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>&#xd6;zer</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2016</year>). &#x201c;<article-title>Early prediction of paroxysmal atrial fibrillation using frequency domain measures of heart rate variability</article-title>,&#x201d; in <conf-name>2016 Medical Technologies National Congress (TIPTEKNO)</conf-name> (<publisher-name>IEEE</publisher-name>), <fpage>1</fpage>&#x2013;<lpage>4</lpage>.</citation>
</ref>
<ref id="B35">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Niwa</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Perloff</surname>
<given-names>J. K.</given-names>
</name>
<name>
<surname>Webb</surname>
<given-names>G. D.</given-names>
</name>
<name>
<surname>Murphy</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Liberthson</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Warnes</surname>
<given-names>C. A.</given-names>
</name>
<etal/>
</person-group> (<year>2004</year>). <article-title>Survey of specialized tertiary care facilities for adults with congenital heart disease</article-title>. <source>Int. J. Cardiol.</source> <volume>96</volume>, <fpage>211</fpage>&#x2013;<lpage>216</lpage>. <pub-id pub-id-type="doi">10.1016/j.ijcard.2003.06.019</pub-id>
<pub-id pub-id-type="pmid">15262035</pub-id>
</citation>
</ref>
<ref id="B36">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Panda</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Ray</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Abdullah</surname>
<given-names>A. A.</given-names>
</name>
<name>
<surname>Dash</surname>
<given-names>S. R.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Predictive systems: Role of feature selection in prediction of heart disease</article-title>. <source>J. Phys. Conf. Ser.</source> <volume>1372</volume>, <fpage>012074</fpage>. <pub-id pub-id-type="doi">10.1088/1742-6596/1372/1/012074</pub-id>
</citation>
</ref>
<ref id="B37">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Pennells</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Kaptoge</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>White</surname>
<given-names>I. R.</given-names>
</name>
<name>
<surname>Thompson</surname>
<given-names>S. G.</given-names>
</name>
<name>
<surname>Wood</surname>
<given-names>A. M.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>Risk prediction models for cardiovascular disease: a systematic review</article-title>. <source>BMJ</source> <volume>348</volume>, <fpage>g3257</fpage>. <pub-id pub-id-type="doi">10.1136/bmj.g3257</pub-id>
<pub-id pub-id-type="pmid">24821314</pub-id>
</citation>
</ref>
<ref id="B38">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Rahman</surname>
<given-names>A. U.</given-names>
</name>
<name>
<surname>Alsenani</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Zafar</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Ullah</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Rabie</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Shongwe</surname>
<given-names>T.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Enhancing heart disease prediction using a self-attention-based transformer model</article-title>. <source>Sci. Rep.</source> <volume>14</volume>, <fpage>514</fpage>. <pub-id pub-id-type="doi">10.1038/s41598-024-51184-7</pub-id>
<pub-id pub-id-type="pmid">38177293</pub-id>
</citation>
</ref>
<ref id="B39">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ridker</surname>
<given-names>P. M.</given-names>
</name>
<name>
<surname>Cook</surname>
<given-names>N. R.</given-names>
</name>
</person-group> (<year>2013</year>). <article-title>Statin therapy for primary prevention: why clinicians should use absolute cardiovascular disease risk rather than cholesterol levels or high-sensitivity c-reactive protein levels</article-title>. <source>Circulation</source> <volume>128</volume>, <fpage>2672</fpage>&#x2013;<lpage>2674</lpage>. <pub-id pub-id-type="doi">10.1161/CIRCULATIONAHA.113.005731</pub-id>
</citation>
</ref>
<ref id="B40">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Saini</surname>
<given-names>M. K.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Machine learning techniques for precise heart disease prediction</article-title>. <source>Int. J. Sci. Res. (IJSR)</source> <volume>12</volume>, <fpage>2120</fpage>&#x2013;<lpage>2129</lpage>. <pub-id pub-id-type="doi">10.21275/sr23121209074</pub-id>
</citation>
</ref>
<ref id="B41">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Seoni</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Molinari</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Acharya</surname>
<given-names>U. R.</given-names>
</name>
<name>
<surname>Lih</surname>
<given-names>O. S.</given-names>
</name>
<name>
<surname>Barua</surname>
<given-names>P. D.</given-names>
</name>
<name>
<surname>Garc&#xed;a</surname>
<given-names>S.</given-names>
</name>
<etal/>
</person-group> (<year>2024</year>). <article-title>Application of spatial uncertainty predictor in cnn-bilstm model using coronary artery disease ecg signals</article-title>. <source>Inf. Sci.</source> <volume>665</volume>, <fpage>120383</fpage>. <pub-id pub-id-type="doi">10.1016/j.ins.2024.120383</pub-id>
</citation>
</ref>
<ref id="B42">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Shah</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Patel</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Bharti</surname>
<given-names>S. K.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Heart disease prediction using machine learning techniques</article-title>. <source>SN Comput. Sci.</source> <volume>1</volume>, <fpage>345</fpage>. <pub-id pub-id-type="doi">10.1007/s42979-020-00365-y</pub-id>
</citation>
</ref>
<ref id="B43">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Somepalli</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Goldblum</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Schwarzschild</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Bruss</surname>
<given-names>C. B.</given-names>
</name>
<name>
<surname>Goldstein</surname>
<given-names>T.</given-names>
</name>
</person-group> (<year>2021</year>). <source>Saint: Improved neural networks for tabular data via row attention and contrastive pre-training</source>. <comment>arXiv preprint arXiv:2106.01342</comment>.</citation>
</ref>
<ref id="B44">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Steyerberg</surname>
<given-names>E. W.</given-names>
</name>
<name>
<surname>Vickers</surname>
<given-names>A. J.</given-names>
</name>
<name>
<surname>Cook</surname>
<given-names>N. R.</given-names>
</name>
<name>
<surname>Gerds</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Gonen</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Obuchowski</surname>
<given-names>N.</given-names>
</name>
<etal/>
</person-group> (<year>2010</year>). <article-title>Assessing the performance of prediction models: a framework for traditional and novel measures</article-title>. <source>Epidemiology</source> <volume>21</volume>, <fpage>128</fpage>&#x2013;<lpage>138</lpage>. <pub-id pub-id-type="doi">10.1097/EDE.0b013e3181c30fb2</pub-id>
<pub-id pub-id-type="pmid">20010215</pub-id>
</citation>
</ref>
<ref id="B45">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Szugye</surname>
<given-names>N. A.</given-names>
</name>
<name>
<surname>Mahalingam</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Somasundaram</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Villa</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Segala</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Segala</surname>
<given-names>M.</given-names>
</name>
<etal/>
</person-group> (<year>2025</year>). <article-title>Deep learning for automated measurement of total cardiac volume for heart transplantation size matching</article-title>. <source>Pediatric Cardiol.</source> <volume>46</volume>, <fpage>590</fpage>&#x2013;<lpage>598</lpage>. <pub-id pub-id-type="doi">10.1007/s00246-024-03470-4</pub-id>
<pub-id pub-id-type="pmid">38570368</pub-id>
</citation>
</ref>
<ref id="B46">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Tekin</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Kaya</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>A new approach for heart disease detection using motif transform-based cwt&#x2019;s time-frequency images with densenet deep transfer learning methods</article-title>. <source>Biomed. Engineering/Biomedizinische Tech.</source> <volume>69</volume>, <fpage>407</fpage>&#x2013;<lpage>417</lpage>. <pub-id pub-id-type="doi">10.1515/bmt-2023-0580</pub-id>
<pub-id pub-id-type="pmid">38425179</pub-id>
</citation>
</ref>
<ref id="B47">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Vayadande</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Golawar</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Khairnar</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Dhiwar</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Wakchoure</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Bhoite</surname>
<given-names>S.</given-names>
</name>
<etal/>
</person-group> (<year>2022</year>). &#x201c;<article-title>Heart disease prediction using machine learning and deep learning algorithms</article-title>,&#x201d; in <conf-name>2022 international conference on computational intelligence and sustainable engineering solutions (CISES)</conf-name> (<publisher-name>IEEE</publisher-name>), <fpage>393</fpage>&#x2013;<lpage>401</lpage>.</citation>
</ref>
<ref id="B48">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Vickers</surname>
<given-names>A. J.</given-names>
</name>
<name>
<surname>Elkin</surname>
<given-names>E. B.</given-names>
</name>
</person-group> (<year>2006</year>). <article-title>Decision curve analysis: a novel method for evaluating prediction models</article-title>. <source>Med. Decis. Mak.</source> <volume>26</volume>, <fpage>565</fpage>&#x2013;<lpage>574</lpage>. <pub-id pub-id-type="doi">10.1177/0272989X06295361</pub-id>
<pub-id pub-id-type="pmid">17099194</pub-id>
</citation>
</ref>
<ref id="B49">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Xu</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Bao</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Baskiyar</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2023</year>). &#x201c;<article-title>Towards the diagnosis of heart disease using an ensemble learning approach</article-title>,&#x201d; in <conf-name>2023 International Conference on Machine Learning and Applications (ICMLA)</conf-name> (<publisher-name>IEEE</publisher-name>), <fpage>1901</fpage>&#x2013;<lpage>1906</lpage>.</citation>
</ref>
</ref-list>
</back>
</article>