## 2 Materials and Methods  
The proposed algorithm builds on a previously established methodology for partially synthetic data generation, as introduced in [24]. This initial approach uses data visualization tools, specifically UMAP, to generate synthetic data that maintain essential patterns of the original data. The partially synthetic data generation process relies on two datasets: a _reference dataset_ and an _incomplete dataset_. The reference dataset, which contains all the features of interest, serves as a template to generate synthetic values in the incomplete dataset, which contains missing attributes. In this approach, UMAP is first trained on the reference dataset to create a low-dimensional representation that captures the essential structural characteristics of the data. Synthetic values are then assigned to missing attributes in the incomplete dataset, resulting in \"trial\" data points that are projected into the same UMAP-reduced space. By comparing these generated samples with the reference data in this low-dimensional space, the samples are validated in two steps. One validation step calculates whether the generated sample is within a certain radius around a class centroid. In case it is, the sample is \"cluster-validated\" and the corresponding class or target attribute is also assigned to the sample. The other step involves assigning a reliability score to the synthetic value of the sample. First, the mean value of the synthetic feature of the nearest neighbors is computed. The difference between the mean neighbor value and the synthetic value (feature disparity) determines the reliability score, as indicated in Table 1. Finally, only samples that exceed a certain reliability score threshold are included in the resulting _partially synthetic dataset_. To generate fully synthetic data, the original methodology is adapted to operate iteratively, thus allowing for the creation of synthetic values for all features sequentially. The setup remains largely consistent with the partially synthetic framework: a reference \begin{table}
\begin{tabular}{c c} \hline \hline
**Feature Disparity (\(f_{\text{disp}}\))** & **Reliability Scores (\(r_{c}\))** \\ \hline \(f_{\text{disp}}\leq\varepsilon\) & \(1\) \\ \(\varepsilon<f_{\text{disp}}\leq 2\varepsilon\) & \(0.9\) \\ \(2\varepsilon<f_{\text{disp}}\leq 3\varepsilon\) & \(0.8\) \\ \(3\varepsilon<f_{\text{disp}}\leq 4\varepsilon\) & \(0.7\) \\ \(4\varepsilon<f_{\text{disp}}\leq 5\varepsilon\) & \(0.6\) \\ \(5\varepsilon<f_{\text{disp}}\leq 6\varepsilon\) & \(0.5\) \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Reliability scores. Value \(\varepsilon\) depends on the range of the synthetic feature. dataset containing all necessary attributes and a secondary dataset that serves as the incomplete dataset. For fully synthetic data generation, however, the process involves an iterative feature-generation approach, as detailed in Figure 2:  
1. Initial setup: the process starts by removing a single attribute from the \"incomplete\" dataset, thereby creating the initial missing feature scenario. The UMAP-based methodology is then applied as in the original partially synthetic method, generating synthetic values for the removed attribute. 2. Sequential iterations: after completing the first iteration and validating synthetic samples for the initially removed feature, a different attribute is removed from the resulting dataset, and the process is repeated. At each step, the synthetic values generated in prior iterations are preserved. 3. Final outcome: this iterative process is repeated for each attribute in the reference dataset until all features have been synthetically generated. The final result is a fully synthetic dataset that replicates the reference dataset's structure without including any original data entries. This iterative feature-by-feature synthesis allows for the gradual creation of a fully synthetic dataset that preserves the statistical properties and feature relationships inherent to the reference dataset.