{"paper_id":"4276503f-34ec-4201-9836-e0c55011719a","body_text":"A Novel Framework for Concept Drift Detection for Classification Problems in Data Streams | Research Square window.SnipcartSettings = { analytics: { enabled: false } }; (function() { var accessVector = localStorage.getItem('access_vector') || ''; window.dataLayer = window.dataLayer || []; if (accessVector) { window.dataLayer.push({ user: { profile: { profileInfo: { snid: accessVector } } } }); } })(); (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-K279D39R'); Browse Preprints In Review Journals COVID-19 Preprints AJE Video Bytes Research Tools Research Promotion AJE Professional Editing AJE Rubriq About Preprint Platform In Review Editorial Policies Our Team Advisory Board Help Center Sign In Submit a Preprint Cite Share Download PDF Research Article A Novel Framework for Concept Drift Detection for Classification Problems in Data Streams Usman Ali, Tariq Mahmood This is a preprint; it has not been peer reviewed by a journal. https://doi.org/ 10.21203/rs.3.rs-3244928/v1 This work is licensed under a CC BY 4.0 License Status: Posted Version 1 posted You are reading this latest preprint version Abstract In streaming data environments, data characteristics and probability distributions are likely to change over time, causing a phenomenon called concept drift, which poses challenges for machine learning models to predict accurately. In such non-stationary environments, there is a need to detect concept drift and update the model to maintain an acceptable predictive performance. Existing approaches to drift detection have inherent problems like requirements of truth labels in supervised detection methods and high false positive rate in case of unsupervised drift detection. In this paper, we propose a semi-supervised Autoencoder based Drift Detection Method (AEDDM) aimed at detecting drift without the need of truth labels, yet with a high confidence that the detected drift is real. In a binary classification setting, AEDDM uses two autoencoders in a layered architecture, trained on labelled data and uses a thresholding mechanism based on reconstruction error to signal the presence of drift. The proposed method has been evaluated on four synthetic and four real world datasets with different drifting scenarios. In case of real-world datasets, the induced and detected drifts have been evaluated from classifier’s performance viewpoint using seven mostly used batch classifiers as well as from adaptation perspective in an online learning environment using Hoeffding Tree classifier. The results show that AEDDM affectively detects the distributional changes in data which are most likely to impact the classifier’s performance (real drift) while ignoring the virtual drift thus considerably reducing the false alarms with an ability to adapt in terms of classification performance. Artificial Intelligence and Machine Learning Concept drift Machine learning Autoencoder Data stream Deep learning Figures Figure 1 Figure 2 Figure 3 Figure 4 Figure 5 Figure 6 Figure 7 Figure 8 1 Introduction Due to current advancement in artificial intelligence, cloud storage and computing, the tendency towards the usage of machine learning applications for monitoring and predicting the real-world has increased. Amongst other complex and specialized machine learning tasks, classification is the most widely used. The performance of a machine learning model, specifically a classifier, heavily depends on its generalization capability and the coherence in statistical properties of training and test data. At the time, these models are built and tested, the training and test data is available in its entirety and produces reasonably good results. However, it has been observed that the predictive performance of machine learning models is often impacted when they are deployed in production (Schelter et al. 2018 ; Oladele 2021 ; Schröder and Schulz 2022 ). Due to this variability in performance, there have been concerns about the wide scale applicability of these machine learning solutions in industry. The reason behind this performance degradation is related to the unique characteristics of the data (Wares et al., 2019 ). Specifically, in real world machine learning scenarios, data characteristics and distribution change over time leading to a non-stationary environment which poses challenges for classification models to predict accurately and there is a need to constantly monitor the data stream for detecting such changes and then adapt and retrain the model(Flórez et al., 2023 ). This phenomenon where the data characteristics and distribution change resulting in a need to update the model is called concept drift and the adaption of the model to the new changes is called concept drift adaptation (Gama et al. 2004 ; Schröder and Schulz 2022 ). This research domain has been extensively reviewed from different perspectives (Iwashita and Papa 2019 ; Hu, Kantardzic, and Sethi 2020 ; Gemaque et al. 2020 ; Gama et al. 2014 ). From a probabilistic viewpoint, concept drift can be considered as a change in the joint probability distribution of features ‘X’ and the corresponding labels ‘Y’ with respect to time ‘t’. Concept drift occurs between time S t and S t+1 if P t (X ,Y) \\(\\ne\\) P t+1 (X ,Y), where P t is the joint probability distribution of the feature vector X and the target class label Y at time S t ; and P t+1 is the joint probability distribution at S t+1 (Gama et al., 2014 ). Since the joint pdf of X and Y can be written as P (X, Y) = P(Y|X) x P(X), concept drift can occur due to the changes in the data distribution i.e., P(X) alone, or due to the changes in the posterior i.e., P(Y|X) alone or due to change in both. Based on the source of drift and its impact on the joint probability distribution of features and the target, concept drift can be virtual or real . If joint probability distribution of features and target concept changes due a change in P(X) (change in the distribution of features) without impacting the decision boundary P (Y /X) then such type of drift is virtual drift. If the decision boundary P (Y/X) changes due to a change in P(Y) (Prior probability of the target concept) or P (X/Y) (prior conditional) or due to a change in both, then such a drift is called a real drift (Lu et al., 2019 ). Changes in data distribution can occur at different patterns which may or may not affect the decision boundary (real or virtual concept drift) in a supervised learning scenario. In case of real drift, the performance of the classifier will degrade in terms of evaluation metrics and a model update will be required(Lu et al., 2019 ) which can be done periodically in a passive manner to incorporate the new changes or based on an implicit drift detection mechanism. The former passive approach to update the model is expensive in terms of computational resources as it results in periodic unnecessary model updates even if there is no drift. The latter implicit drift detection is more practical as it updates the model only if there is sufficient evidence about the occurrence of the drift. Based on the speed of the change, drift can also be categorized as sudden, gradual, incremental and recurring (Gama et al., 2014 ). In this research, we are concerned with implicit drift detection i.e., detecting sudden and gradual changes in data distribution which are likely to impact the decision boundary (real drift). Recent approaches to implicit drift detection have some inherent problems. Supervised drift detection methods like DDM (Gama et al., 2004 ), LFR (Heng Wang & Abraham, 2015 ), RDDM (Barros et al., 2017 ), and others (Yu & Abraham, 2017 ; Cabral & Barros, 2018 ; Pesaranghader et al., 2018 ) monitor the model’s performance measures like accuracy, error rate and recall etc. to detect drift. In data streams, these labels are not available immediately after the prediction and it is not possible to detect drift in real time. Semi-supervised methods like OLINDA (Spinosa et al., 2007 ), SAND (Haque, Khan, & Baron, 2016 ), ECHO (Haque, Khan, Baron, et al., 2016 ) rely on the confidence level of predictions to detect drift. These methods are classifier dependent as different classifiers will have different confidence levels. Unsupervised drift detection techniques like (Qahtan et al., 2015 ; Gu et al., 2016 ; Dos Reis et al., 2016 züaçık et al., 2019 and Z. Wang & Wang, 2020) and others etc detect drift by monitoring the changes in the data distribution. These unsupervised techniques suffer from complexity of density estimation from high dimensional data and high false positive rate (detected drift is virtual not impacting the classifier performance thus causing unnecessary model updates). Motived by the recent success of deep learning-based techniques in addressing complex real-life problems and their inherent capability to deal with high dimensional data, we propose a semi-supervised Autoencoder based Drift Detection Method (AEDDM) to detect drift in data streams with a focus to address the problems in current supervised, semi-supervised and unsupervised drift detection techniques. Some recent research papers on drift detection using autoencoders have shown the effectiveness of deep learning technology specifically autoencoders in drift detection domain (Jaworski, Rutkowski, & Angelov, 2020 ; Yong et al., 2020b ; Jaworski et al., 2018 ; Menon & Gressel, 2021 ), but these methods also have some limitations. Former three research papers do not consider the classification scenario and are limited to change detection in the data distribution using reconstruction error and other plots without any explicit mechanism (algorithm) to generate warnings and detect drift. Although ADD (Autoencoder based Drift Detection) proposed by (Menon & Gressel, 2021 ) uses a thresholding mechanism to detect drift but confirms drift if a single batch exceeds threshold thus not considering the possibility of false alarms. Another limitation of this work is that the same threshold is used for different datasets which we have experimentally observed that each dataset as well as each class data has its own reconstruction loss pattern and threshold. Considering the bottlenecks in current supervised, semi-supervised, unsupervised, and deep learning-based drift detecting techniques, our proposed AEDDM methodology for drift detection has the following potential research contributions: An Autoencoder based Drift Detection Method (AEDDM) which uses a thresholding mechanism and a layered architecture to monitor the data distribution of both classes in a binary classification setting. An explicit algorithm which monitors the changes in data distribution based on a thresholding mechanism to generate warnings and then confirm the drift. Use of two different thresholds namely batch threshold and count threshold, thus incorporating extrinsic as well as intrinsic measures to monitor the changes in the incoming batch stream which makes the drift detector robust to false alarms as well as adaptable. A drift detector as effective in detecting real drift as supervised drift detection techniques with the added advantage of no need of true class labels. Unsupervised drift detection yet with a high confidence that the detected drift is real without causing unnecessary model updates and processing overheads. Creation of new synthetic datasets which can be used by the research community along with a novel mechanism to introduce gradual drift at discrete intervals in real-world datasets. We are specifically interested in drift detection rather adaptation. After successful drift detection, any standard adaptation strategy can be used to update the model. The rest of the paper is organized as follows: Section 2 describes the related work in concept drift detection domain; Section 3 provides the theoretical aspects and Section 4 covers our proposed methodology. Experimental results are presented in Section 5 followed by Section 6 which include conclusion and future research directions. 2 Related Work In data streams, an active drift detection mechanism is essential in detecting real drifts and then updating the model with an adaptation strategy in a cost-effective manner. Extensive work has been done by the research community in this direction and still the field is emerging with new extensions. Recent Concept drift detection methods can be classified as supervised/explicit, unsupervised/implicit, and semi-supervised based on the drift detection mechanism. Various review papers on concept drift detection techniques classify different methods into different categories like statistical-based, window-based, ensembles etc. among supervised drift detection approaches (Wares et al., 2019 ), unsupervised drift detection methods (Gemaque et al., 2020 ) and active and passive drift detection methos (Ditzler et al., 2015 ). A brief literature review of these methods is provided in this section. 2.1 Supervised / Explicit Drift Detection Methods Supervised drift detection methods monitor the performance measure of a classifier like accuracy, precision, recall, f-measure, or error rate and assume that class labels are available at prediction time. These methods have been categorized as statistical, window-based and ensemble methods. 2.1.1 Statistical Methods Statistical methods of drift detection apply statistical tests to a window of performance scores of the classifier to detect any significant changes in its performance. The Sequential Probability Ratio Test (SPRT) (Wald, 1973 ) is used to test the hypothesis whether the incoming data belongs to a distribution P 0 or P 1 or more samples are needed to reach to a conclusion. Cumulative Sum (CUSUM) which is also based on SPRT, uses the residuals as an input to detect the change (Page, 1954 ). A variation of CUSUM is Page- Hinckley (PH) test which is used to detect abrupt changes in the average of a gaussian signal (Page, 1954 ). Although CUSUM and PH are similar algorithms, they are used in different streaming environments. CUSUM is applied on residual from a predictor and is used for anomaly detection whereas PH is better suited to signal processing environments to detect sudden changes. Stagger (Schlimmer & Granger, 1986 ) employs concept evaluation and then refinement using Boolean characterization and changes the concept definition (characterization) if the existing definition is not able to provide satisfactory results. Stagger was observed to be sensitive to overfitting, taking longer times to adopt to a new concept after being trained for a longer time on an old concept. Drift Detection Method (DDM) (Gama et al., 2004 ) models the error-rate of an online classifier with a binomial distribution and generates a warning level and then a drift alarm if the error-rate exceeds predefined thresholds. DDM can detect sudden or abrupt drift but suffers in case the concept is changing gradually which goes un-noticed and no warning is generated. A work like DDM is Early Detection Method ( EDDM) (Baena-García et al., 2006 ) which uses the distance between two classification errors to detect the drift and is able to detect slow gradual changes more effectively as compared to DDM. The EDDM method also defines warning levels and drift levels to detect drift like DDM but requires 30 classification errors to occur before it can detect any drift. In some cases, it may take many examples to conceive 30 classification errors and may cause memory overflow. Both DDM and EDDM are sensitive to class imbalance scenario as the minority class may contribute very little to accuracy, to address this (S. Wang et al., 2013 ) proposed a Drift Detection Method for Online Class Imbalance Learning ( DDM-OCI) which uses the change in recall of the minority class (true positive rate) to detect drift. DDM-OCI assume that the presence of class imbalance is known in advance and was evaluated on binary classification problems. It suffers from false positives as well. Another problem with DDM-OCI is that it is quite possible for a drift to occur without changing the recall of minority class, for example in case of a drift from imbalance class distribution to a balance class distribution. Statistical Tests for Equal Proportions ( STEPD) (Nishida & Yamauchi, 2007 ) uses two additional parameters as significance levels for warning and drift levels based on changes in the accuracy of an old and a recent window with size 30 but with small sample size, used statistical test gets ineffective. Other prominent supervised drift detection methods include HDDM (Hoeffding’s bounds Drift Detection Method(Frías-Blanco et al., 2015 ), LFR (Linear Four Rates) (Heng Wang & Abraham, 2015 ), HLFR ( Hierarchical Linear Four Rates(Yu & Abraham, 2017 ), RDDM (Reactive Drift Detection Method)(Barros et al., 2017 ), variants of Fisher’s Exact test (Cabral & Barros, 2018 ) and McDiarmid Drift Detection Methods (MDDMs) (Pesaranghader et al., 2018 ). A detailed literature review of all these methods is available in this pre-print. 2.1.2 Window-based Methods Window-based methods statistically monitor the sliding windows of various sizes instead of monitoring individual instances in a stream. The distribution of a current window is compared with a reference distribution to detect any significant change. (Bifet & Gavaldà, 2007 ) proposed an adaptive-window based drift detection method (ADWIN2) as an improvement of their initial work (ADWIN) which uses a variable size window which adjusts its size based on changes in the data distribution. In ADWIN, user needs to specify only the size of one larger window W which is split up into two optimal sub-windows W hist and W new based on the detected significant change in the means of any such two windows. Windows size grows if no change is detected and shrinks when a drift or change is detected. (Hulten et al., 2001a ) proposed Concept Adapting Very Fast Decision Tree Algorithm (CVFDT) which uses a sliding window to process the data stream and update the tree nodes. If there is a drift, then tree nodes will not pass the Hoeffding’s test in which case a new sub-tree is created with the best new attribute at the root. If the new sub-tree gives better classification performance than the old one, then the old tree is replaced. An improvement to CVFDT was E-CVFDT (G. Liu et al., 2013 ) which gives better performance in gradual drift scenarios. Table 1 Review of Drift Detection Methods Supervised Drift Detection Statistical SPRT (Wald, 1973 ) CUSUM(Page, 1954 ) PH (Page, 1954 ) STAGGER (Schlimmer & Granger, 1986 ) DDM (Gama et al., 2004 ) EDDM (Baena-García et al., 2006 ) STEPD (Nishida & Yamauchi, 2007 ) DDM-OCI (S. Wang et al., 2013 ) LFR (Heng Wang & Abraham, 2015 ) HLFR (Yu & Abraham, 2017 ) RDDM (Barros et al., 2017 ) MDDM (Pesaranghader et al., 2018 ) Window-based CVFDT (Hulten et al., 2001a ) ADWIN (Bifet & Gavaldà, 2007 ) E-CVFDT (G. Liu et al., 2013 ) Ensemble-based SEA (Nick Street & Kim, 2001 ) AWE (Haixun Wang et al., 2003 ) AUE (Brzeziński & Stefanowski, 2011 ) DWM (Kolter & Maloof, 2007 ) DOED (Sidhu & Bhatia, 2015 ) RDWM (Sidhu & Bhatia, 2019 ) Learn + + Family ((Ditzler & Polikar, 2013a ) Semi-supervised Drift Detection SAND (Haque, Khan, & Baron, 2016 ) Non-DL Methods ECHO (Liao et al., 2016 ) OLINDDA (Spinosa et al., 2007 ) ECSMiner (Masud et al., 2011 ) DL Methods Bayesian Autoencoders(Yong et al., 2020a ) RBM (Jaworski et al., 2018 ) Autoencoders (Jaworski, Rutkowski, Angelov, et al., 2020 ) Autoencoders, ADD (Menon & Gressel, 2021 ) Autoencoders (Castellani et al., 2021 ) Unsupervised Drift Detection Batch Based MD3 (Sethi & Kantardzic, 2015 ) MD3-RS (Sethi & Kantardzic, 2017 ) NN_DVI (A. Liu et al., 2018 ) A PCA based Change detection (Qahtan et al., 2015 ) HDDDM (Ditzler & Polikar, 2011 ) KS-test (Z. Wang & Wang, 2020b ) Online Incremental KS Test (Dos Reis et al., 2016 ) KSWIN (Raab et al., 2020 ) 2.1.3 Ensemble Methods Instead of using a single classifier’s error rate, ensemble methods use a group of classifiers and their average error rate to detect such changes in underlying concepts. (Nick Street & Kim, 2001 ) proposed SEA (Streaming Ensemble Algorithm) which builds K C4.5 classifiers sequentially on a fixed chunk size to build an ensemble C. When the ensemble is full, it is used for prediction for the incoming data chunk. It also builds a single C4.5 classifier and compares the performance of the ensemble and the single classifier. If the performance of the single classifier is better than the ensemble, then the worst performing classifier is removed, and the new classifier is added to the ensemble. One drawback of SEA lies in its mechanism to remove the worst performing classifier from the ensemble without considering the recency of the data it was trained on. An ensemble with pre-determined size can still have many poor performing classifiers trained on quite older concepts. This problem was addresses by (Haixun Wang et al., 2003 ) ‘s Accuracy Weighted Ensemble ( AWE) which builds a new classifier on each arriving chunk like SEA, but instead of removing the worst performing classifier from the ensemble, it entirely builds a newly ensemble including only those classifiers with MSE less than a pre-defined threshold thus resulting in a variable size ensemble. An obvious drawback in AWE was the silencing effect resulting in no class prediction if none of the classifiers meet the MSE threshold in case of a sudden drift. An improvement to AWE was made by (Brzeziński & Stefanowski, 2011 )‘s Accuracy Updated Ensemble (AUE) algorithm enabling individual classifiers to be updated directly instead of just weights updating. An incremental ensemble method based on Dynamically Weighted Majority ( DWM) was proposed by (Kolter & Maloof, 2007 ) which maintained a weighted pool of experts as base learners. If the ensemble made a mistake, a new expert was added to the pool, and if an expert or base learner made a mistake, its weight was decreased. If an expert continuously made mistakes, it was removed from the ensemble based on a set threshold. DWM uses the prediction from each base learner and its weight to compute the ensemble prediction. Recurring Dynamic Weighted Majority (RDWM) (Sidhu & Bhatia, 2019 ) is another ensemble method which employs two ensembles to detect recurrent drift. There are other ensemble methods from Learn + + family ((Polikar et al., 2001; M. Muhlbaier et al., 2004, M. D. Muhlbaier & Polikar, 2007, M. D. Muhlbaier et al., 2009, Ditzler & Polikar, 2010b, Ditzler & Polikar, 2013a ) which use ensembles of Neural Netwrok based weak learners with varying weighting and voting mechanisms. 2.2 Semi-supervised Drift Detection Methods The dependence of drift detectors on the availability of class labels in supervised drift detection techniques and the associated cost and delays in the availability of the true labels in real world applications drew the attention of the research community towards framing techniques which either do not rely on class labels or have limited reliance. Some of these works require labeled data for initial training and initialization of drift detectors (Castellani et al., 2021 ) and drift detection is done in completely unsupervised way; while other methods use available labelled data for training of classifiers and initialization for drift detectors and classifier’s confidence levels are needed for drift detection (Haque, Khan, & Baron, 2016 ). The formers methods are mainly deep learning methods which use autoencoders for drift detection while the later methods use classifiers like SVM, KNN, ensembles or clustering. A semi-supervised drift detection method SAND (Semi-Supervised Adaptive Novel Class Detection) (Haque, Khan, & Baron, 2016 ) uses classifier’s confidence to detect concept drift. It uses a K-NN based ensemble and needs only limited data for model updating where the confidence level is low. SAND is also able to detect outliers. However, due to change detection after calculating each confidence, SAND becomes inefficient in terms of execution time. To overcome this, (Haque, Khan, Baron, et al., 2016 ), proposed ECHO (Efficient Handling of Concept Drift Evolution over Stream Data ) which uses dynamic programming and performs change detection selectively. (Pinagé et al., 2020 ) proposed a semi-supervised drift detection method which uses self-annotation and ensemble learners like SAND and uses dynamic classifier selection in an online setting. Other well-known semi-supervised drift detection methods include OLINDDA (Online Novelty and Drift Detection Algorithm) (Spinosa et al., 2007 ) which uses k-mean clustering ; ECSMiner (Enhanced Classifier for data Streams with novel class Miner) (Masud et al., 2011 ) which are more focused on novel class detection . 2.2.1 Deep Learning based Drift Detection Methods Some recent works on drift detection are based on deep learning methods including autoencoders and Restricted Boltzmann Machine (RBM). (Yong et al., 2020a ) used Bayesian autoencoders to detect drift in sensors data of an industrial environment. Three different measures including reconstruction loss, aleatoric and epistemic uncertainties have been used to detect drift. In case of a real drift (drift already present in data due to sensors degrading conditions) all three measures show a considerable deviation. (Jaworski et al., 2018 ) applied RBM on a synthetic binary dataset generated with the help of RBM to detect sudden and gradual drift. Two indicators, reconstruction loss and free energy have been used to detect drift in the data. In case of drift, both measure indicate a considerable difference from the normal data. (Jaworski, Rutkowski, Angelov, et al., 2020 ) applied autoencoders to the same dataset and used reconstruction error and cross-entropy using autoencoders and proved that sudden and gradual drift can be detected with autoencoders. All these methods are limited to change detection in data distribution and do not consider the classification scenario without considering the impact of changes in data distribution on the classifier’s decision boundary. Autoencoder based Drift Detection (ADD) (Menon & Gressel, 2021 ) is another recent work which uses autoencoders to detect drift in phishing data. To detect drift, reconstruction loss is compared with user defined thresholds and Hoeffding’s tree is used as a classifier. The author has showed significant improvement in accuracy after drift detection and adaptation. However, this work too has some limitations like using a single autoencoder to model the distribution of all the classes in a classification dataset, use of the same thresholds for all the datasets and not considering the possibility of false positives. Another autoencoder based drift detection method which considers a classification scenario is proposed by (Castellani et al., 2021 ) and uses a constrained low-dimensional embedding of the input data. The proposed method shows the effectiveness of autoencoders in learning the distribution of data and detecting real drifts while ignoring the virtual drifts. 2.3 Unsupervised Drift Detection Methods Algorithms in unsupervised drift detection methods usually maintain two windows namely reference(historical) window and detection window (new data) and use a distance measure to quantify the difference between the distribution of historical data and new data. Historical window is keep fixed while detection window is a sliding. If the difference in data distributions of two windows is significant, then a drift is detected with an indication of drift points (Lu et al., 2019 ). Unsupervised drift detection is also known as “data distribution-based drift detection” or “implicit drift detection”. Unsupervised drift detection methods have been broadly classified into batch-based and online-based methods (Gemaque et al., 2020 ). If drift is detected based on a batch of data elements as a detection window, then these methods are called batch-based drift detection methods and if drift is detected based on each individual instance in the detection window, then it is called as online drift detection. 2.3.1 Batch-Based Unsupervised Drift Detection Methods Margin Density Drift Detection (MD3) (Sethi & Kantardzic, 2015 ) uses a trained SVM classifier with a known set of minimum and maximum density values [𝜌 min , 𝜌 max ] along with a threshold θ𝜌. For an incoming batch of data, MD3 checks every instance whether it lies in margins or not and counts number of instances lying in the margin. It compares this count with previous 𝜌 min , 𝜌 max values and updates 𝜌 min , 𝜌 max for the current batch. If 𝜌 max - 𝜌 min > θ𝜌 then a drift is detected. One major problem with MD3 is that it is classifier dependent and works only with SVM. (Sethi & Kantardzic, 2017 ) proposed a classifier-independent version of MD3 which monitors blind spots densities of multiple classifiers and if there is a considerable disagreement between individual classifiers then it is an indication of a high uncertainty. It uses margin density in the case of linear SVM and blind-spot density in case of other classifiers like decision trees and nearest neighbors as base learners in an ensemble. A significant difference between margin or blind-spot densities of two data windows (reference and detection window) indicates a drift in the dataset. This modified MD3 technique is referred to as MD3-RS (Random Subspace). A drift detection method based on dissimilarity in regional densities NNDVI ( Nearest Neighbour based Density Variation Identification) was proposed by (A. Liu et al., 2018 ) which uses K-Nearest Neighbour ( KNN) to identify the variation in regional densities and to detect drift. (Qahtan et al., 2015 ) proposed a PCA based drift detection method for multidimensional data streams which uses principal component analysis to project the high dimensional data into a lower dimensional space and then uses density estimation to compare two windows for drift detection. HDDDM (Hellinger Distance based Drift Detection Method)(Ditzler & Polikar, 2011 ) is another batch based drift detection method which uses Hellinger distance between a reference and a detection window to detect drift. A KS (Kolmogorov Smirnov ) test based drift detection (Z. Wang & Wang, 2020b ) another batch based method which uses KS test to compare the distributions of two batches and signals drift if the difference is significant based on the computed p-value and chosen significance level. 2.3.2 Online-based Unsupervised Drift Detection Methods An online drift detection method based on an incremental KS-test (Dos Reis et al., 2016 ) tests whether two samples belong to the same data distribution or not .The hypothesis test is applied with the addition of each new sample in the detection window. KSWIN (Kolmogorov- Smirnov Windowing) (Raab et al., 2020 ) is another online version of KS based drift detection which uses a fixed-size sliding window ψ divided into two sub windows R (recent concept) and W (last concept) of the same size r . The elements of W are sampled uniformly from n-r part of the ψ (where n is the size of ψ) and last r represent the recent concept R. If two windows R and W differ significantly then a drift is detected. 2.4 Summary of Literature Review The above literature review has been provided on the most common and popular drift detection methods and summarized in Table 1 . The characteristics of drift detection techniques are summarized in Table 2 . Table 2 Summary of Drift Detection Techniques Comparison Criteria Detection Approach Supervised Semi-Supervised Unsupervised Deep Learning Based Dependency on true labels in detection ⎫ × × × Dependency on true labels in adaptation ⎫ Limited ⎫ ⎫ Classifier dependency ⎫ ⎫ × × False alarms × ⎫ ⎫ under research Types of drift detected Surely Real Probably Real Probably virtual Under research Signal Analyzed Univariate Univariate Multivariate Univariate Ability to summarize high dimensional data × × Limited Inherent The properties of an ideal drift detector can be summarized as follows: An ideal drift detector should be as reliable as is the drift detection based on supervised drift detection techniques. Drift detection process should not be dependent on class labels as in case of unsupervised drift detection techniques. Any available labelled should be leveraged in training a drift detector like in semi-supervised drift detection techniques. The power of deep learning should be used to summarize high dimensional data. Keeping in view the derived properties of an ideal drift detector, we propose an Autoencoder based Drift Detection Method (AEDDM) which works in batches and the drift detection is done in completely unsupervised way with a high confidence that the detected drift is real. In the next section, we provide theoretical aspects of AEDDM including a autoencoders and batch based drift detection. 3 Theoretical Aspects The proposed AEDDM approach for drift detection is an autoencoder based approach where drift detection is done in a batch manner. Both concepts are briefly described in this section. 3.1 Autoencoder An autoencoder is an artificial neural network that learns efficient data encodings for the input data by ignoring the noise to re-generate the input at the output layer (Goodfellow 2016 ; Soppin, Ramachandra, and Chandrashekar 2021 ). It uses a set of recognition weights to map the input into a code vector at the hidden layer and then uses a set of generative weights to reconstruct the coded vector into original input at the output layer (Hinton & Zemel, 1994 ). A simple autoencoder consists of an input layer, one or more hidden layers and an output layer of the same size as of input layer. It has an encoder part which consists of an input layer and one or more hidden layers. In the case of more than one hidden layer, the later hidden layers are smaller in size so that the network can encode the original input onto a smaller space. The last hidden layer in the encoder part is called the bottleneck. The decoder part is the exact replica of the encoder part. The encoder layer uses a non-linear function f to encode the input layer values to a latent and compressed representation as given by the equation h = f(x) while decoding the latent represention, the decoder uses another function g to reconstruct the origional input as given by the equation g(h) = x \\({\\prime }\\) The reconstruction loss is defined as the mean squarred difference between the original input and the reconstructed input over all training instances and can be represented by Eq. 1. Minimizing the reconstruction loss acts as the objective function in training an autoencoder. L ( x,x \\({\\prime }\\) )= \\(\\frac{1}{n}\\sum _{i=1}^{n}{\\left({x}_{i}-{x}_{i}^{{\\prime }}\\right)}^{2}\\) Eq. 1 Consider an autoencoder with only one hidden layer. Inputs are encoded to a latent representation at the hidden layer by using a nonlinear activation function as given by the equation h = σ (Wx + b) where σ is an element-wise sigmoid or Rectified Linear Unit (ReLU) activation function, W and b are weight and bias vectors respectively, which are initialized randomly during the training phase. Decoding takes place through decoder by using the encoded representation at the bottleneck and is given by the equation \\({X}^{{\\prime }}\\) = \\({\\sigma }^{{\\prime }}\\left({W}_{h}^{{\\prime }}+b\\right)\\) . During the forward pass in training through backpropagation, difference is calculated between the original input X and reconstructed input X \\({\\prime }\\) and weights and biases are updated in the backward pass based on the computed error. The training continues till the number of epochs elapses and objective function is minimized. 3.2 Batch-based Drift Detection In batch-based drift detection, the streaming data is accumulated in small batches of fixed size and drift detection is done in a batch manner. A general framework for unsupervised batch-based drift detection adapted from (Gemaque et al., 2020 ) and (A. Liu et al., 2018 ) with slight modifications is shown in Fig. 2 . It consists of four modules namely offline training phase, online data accumulation phase, distribution comparison phase and a significance test phase. In offline training phase, distribution parameters are computed from the available data ( reference window) like computation of margin densities (Sethi & Kantardzic, 2017 ) and reconstruction error (Castellani et al. 2021 ;Jaworski, Rutkowski, Angelov, et al. 2020 ) which are used to define different thresholds. In module 2, incoming data stream is divided into batches of fixed size and a distribution comparison is made for each batch with respect to the reference window in module 3, while the significance of the difference is tested in module 4 with the help of a statistical test to decide whether the incoming batch has a different distribution as compared to the reference window. The proposed AEDDM method follows a similar framework which is described in the next section. 4 The Proposed Approach: Autoencoder based Drift Detection Method (AEDDM) The proposed AEDDM framework follows a batch-based semi-supervised drift detection mechanism. At the architectural level, it has three components; an offline component where two autoencoders are trained on labelled data for each binary class problem and thresholds are computed; an ensemble component which defines the sequential order of the autoencoders; and an online component where data arrives in batches and drift detection is performed for the whole batch data stream. During the offline training phase (see Fig. 4 ), the available labeled dataset is divided into positive and negative class data based on labels in the dataset. Both positive and negative class data are split up into training (training & validation) and validation sets. Two autoencoders are trained, one for each class. In case autoencoder is to be used as a classifier, one autoencoder can be used but to learn the data distribution of each class perfectly, we need two autoencoders each trained on individual class data. An autoencoder architecture with five layers (Input, H1, Bottleneck, H1, Output) is used to train the autoencoders. For threshold computation, the validation data of each class is divided into batches of size 32 and passed to the respective autoencoder. Reconstruction loss for each instance in a batch and average reconstruction loss for the whole batch are computed. Using these reconstruction loss values, three different thresholds namely instance threshold , batch threshold , and count threshold are computed for both positive class and negative class data. Instance threshold is computed as \\(u+3\\sigma\\) of reconstruction error values. It is assumed that any data point with reconstruction error values greater than the instance threshold will be a drifted data point. Although reconstruction error values are assumed to follow a normal distribution, it is observed that with small batch size, this assumption may not hold for all the batches depending on the distribution of the data in a batch. To combat this, a configurable parameter N is used, which is the number of batches to be considered for instance threshold computation. For N batches, instance threshold is computed as average over N. For each batch in validation data, AEDDM compares the reconstruction loss value for each instance with the instance threshold. The number of instances in a batch exceeding the instance threshold is counted for all the batches. Count Threshold is taken as the maximum or median value ( alpha parameter ) It is assumed that in the case of non-drifted data, the number of instances exceeding the instance threshold in a batch will be less than the count threshold. Any batch where count threshold exceeds is assumed to be a drifted batch. The Batch Threshold is computed using batch average reconstruction loss values. It is taken as \\(u+k\\sigma\\) (based on experimentation default value of k=3 is chosen) over batch average reconstruction error values. It is observed that for large validation data, batch average reconstruction error values follow a normal distribution with some degree of skewness. The ensemble component decides which autoencoder to place at layer 1 and which one at layer 2 in sequential order. Autoencoder with a lower batch threshold is placed at layer 1, while an autoencoder with a higher batch threshold is placed at layer 2, and corresponding thresholds (batch, instance, and count) are used at respective layers, as shown in Flowchart 1. This assembling of autoencoders is carried out initially when autoencoders are trained, and thresholds are computed from validation data. Every time drift is detected, autoencoders will be re-trained on the most recent data, thresholds will be recomputed, and reassembling of the autoencoders will take place. The detection component in AEDDM works in batch mode. It receives data in batches, processes each batch, and keeps a record of each batch. The available data stream is divided into batches of size 32 and passed to AEDDM Algorithm (see Algorithm 1) along with layer 1 and layer 2 trained autoencoders with corresponding batch thresholds, count thresholds, and instance thresholds (already computed in offline component). Circles in Fig. 5 indicate the order of execution of different modules in Algorithm 1. Module 1 or controller executes first and passes each batch to Module 2 (predict_for_each_batch), which computes reconstruction loss for each instance in the batch. Each reconstruction error value is compared with the instance threshold, and the number of instances exceeding the layer 1 instance threshold (exceed_count_layer1) is counted. The average batch reconstruction error (avg_error_layer1) for each batch is also computed. If the avg_error of a batch exceed s layer_one_batch_thres and exceed_count_layer1 exceeds layer_one_count_threshold , then that batch is passed to layer_two_encoder . For each instance, reconstruction error is computed from layer_two_encoder prediction, and this error is compared with layer2_ins_thresh to compute exceed_count_layer2. Average batch reconstruction error avg_error_layer2 is also computed for this batch, and if this avg_error_layer2 and exceed_count_layer2 both exceed their respective thresholds ( layer_two_batch_thres and layer_two_count_threshold ), then this batch is assumed to be a drifted batch, and its index is appended to all_excede_list . Module 2 returns the outputs (see step 2.1.6 in Algorithm1) for each batch back to Controller, where it is stored in batch history. After all available batches have been processed, AE-DDM calls the Drift Detector (Module 3) to detect drift. The Drift Detector module takes batch average reconstruction error, exceed count, batch threshold and count threshold of layer 2 autoencoder. It compares batch average reconstruction error and exceeds count for each batch from batch history with batch threshold and count threshold. If three consecutive batches exceed both thresholds, then drift is confirmed, and if a single batch exceeds these thresholds, a warning is generated. Step 3(a) can be used in AND or OR settings and it is named as the Beta Parameter of AEDDM. Based on experimentation the default value of beta is taken as “AND”. The next section describes the experiments in detail. 5 Experimental Results and Evaluation This section provides the experimental evaluation of the proposed AEDDM method for drift detection. The AEDDM approach has been tested on three sets of experiments from three different perspectives. Firstly, evaluating the proposed approach for sudden and gradual drift detection on synthetic datasets; Secondly, testing it on drift-induced real-world datasets from real and virtual (as well as from sudden and gradual) drift point of view and thirdly comparing the proposed approach with other similar state-of-the-art in an online classification scenario using Hoeffding Tree classifier. The experimental evaluation is aimed at empirically showing that the proposed method can detect sudden and gradual drifts, the detected drift is real thus minimizing the false alarms. Section 5.1 describes the datasets used in this research along with other experimental settings, sections 5.2 show experiments on synthetic datasets, Section 5.3 details the experiments on real world drift induced datasets while Section 5.4 compares the classification performance of AEDDM using Hoeffding tree classifier in an online setting. 5.1 Datasets and Experimental Settings The proposed approach is evaluated on four synthetic datasets including Rotating Hyperplane (Haixun Wang et al., 2003 ,Fan, 2004 ), Moving RBF (Losing et al., 2017 ,Menon & Gressel, 2021 ), GAUSSIAN and Varying Distributions (VD) and four real -world datasets including NOAA, Covertype, KDDCUP99 and ELEC2. These datasets have been briefly described below: - Rotating Hyperplane A hyperplane with d dimensions is represented by the equation i x i =w 0 , If w i x i > = w 0 then instances are labeled as positive otherwise negative. (Hulten et al., 2001a ). A change in classification boundary is introduced by changing the weights of the features gradually. We have used scikit multiflow to generate hyperplane dataset with 10 features. The hyperplane dataset contains slow gradual drift in five features with 60% change magnitude. Moving RBF Dataset This dataset is also generated using scikit multiflow and consists of gaussian distributions which move with constant speed. Moving RBF datasets involves gradual drift. Concept drift can be introduced by changing the position or number of centroids. The generated dataset has 2 classes, 30 attributes and 50 centroids. The drifted data is generated using scikit multiflow random RBF drift generator with a change speed of 0.6. Gaussian Dataset A synthetic dataset with 20 features is drawn from a standard normal distribution based on a specified range of mean and standard deviation. For each feature in negative samples, the mean range is (0.1,0.6) and the standard deviation range is (0.05,0.45) with 30,000 samples. For positive samples, the mean range is (2,7) and standard deviation range is (1.5, 2.5) with 30,000 samples. In drifted data, the mean range for positive class is changed to (4,9) with standard deviation range in the range (1.5,3) while for negative class data the mean range is changed to (0.3,0.9) and standard deviation ranges in the range (0.1,0.5) Varying Distributions (VD) Dataset In this dataset, class 1 instances are sampled from a binomial distribution (n = 10, p = .05) while class 0 instances are sampled from a logistic distribution (loc = 0.38). VD dataset consists of 19200 data points, five features and balanced class distribution. The drifted data contains 30 batches, where initial 20 batches contain non-drifted data. In the last 10 batches, the distribution of both class data is changed in such a way that in batch number 31 and 32 data distribution of both classes changes in one column; in batch 33 and 34 the data distribution changes in two columns, in batch 35 and 36 in three columns and so on. NOAA Weather Dataset: NOAA dataset (Ditzler & Polikar, 2013b ) contains weather measurements in eight dimensions and contains daily records covering 50 years. There are 18,159 records in this dataset and the task is to predict whether it will rain or not. The class distribution is 12,461 records for no rain and 5,698 for rain. Eight attributes are temperature, dew point, sea level pressure, visibility, average wind speed, maximum sustained wind speed, minimum temperature, and maximum temperature. The data has been made available by the National Oceanic and Atmospheric Administration (NOAA) which is referred to as the NOAA dataset. Covertype Forest Covertype (Cabral & Barros, 2018 ; Frías-Blanco et al., 2015 ) dataset divides the forest land based on physical attributes like elevation, soli type, wilderness area, slope etc. of a 30m X 30m region into 7 different classes. The dataset has been made public by the US Forest Service. It contains 581012 records and 54 attributes both numerical and categorical. This dataset has been converted into a binary classification dataset. KDDCUP99 KDDCUP99 is a network intrusion detection dataset which was used in KDDCUP 1999 competition. It is a multiclassification dataset where instances are labeled as normal or some known attack type (Pinagé et al., 2020 ). The original dataset contains more than 4M records. We have used one of its subsets which contains 494021 records and 41 dimensions by converting it to a binary classification dataset with class values as normal and attack. ELEC2 Electricity dataset commonly known as ELEC2 (Harries & Wales, 1999 ) shows daily supply, demand and scheduled electricity transfer between states New South Wales and Victoria. It contains 45,312 instances with 8 features. The class label shows whether the price was up or down on a day in New South Wales relative to a moving average of the last 24 hours. This dataset have been used in various research paper related to drift detection (Pinagé et al., 2020 ; Gama et al., 2004 ; Costa et al., 2018 ; A. Liu et al., 2018 ). The summary of the datasets used in this research is shown in Table 3 . In the case of real-world datasets, it is usually not known whether the drift is present or not, and if it is present, the location of the drift is not known. For experimental evaluation, we explicitly introduced drift in these datasets which will be explained in section 5.3 . All the datasets used and generated in this research work are available at https://github.com/Usman07442/ConceptDrift_IJMLC . Table 3 Summary of Datasets Dataset Instances # of Features Type Drift Type / Drift Induced Size of Drifted Data Gaussian 60,000 20 Synthetic Sudden 6000 VD 19,200 5 Synthetic Gradual 960 Hyperplane 40,000 10 Synthetic Gradual 2,560 Moving RBF 40,000 30 Synthetic Gradual 2,560 NOAA 18,159 8 Real Sudden, Gradual 1816 Covertype 581,012 54 Real Sudden, Gradual 58,102 KDD99 494,021 41 Real Sudden, Gradual 49,403 ELEC2 45,312 8 Real Sudden, Gradual 4,531 Experimental Settings In offline training phase, the available dataset is divided into three distinct subsets. Initial 70% data is used for training (and validation) of autoencoders, next 20% data is used for threshold computation and the last 10% data is used for testing the autoencoder on normal non-drifted data stream. The simplest deep autoencoder architecture with one hidden layer in an undercomplete setting is used in all the experiments which allows to compress the input onto a lower dimension at the bottleneck. The size of the hidden layer (number of neurons) is kept approximately one-third of the input and the size of the bottleneck is taken as approximately one-third of the size of the previous hidden layer in the encoder part while decoder part is an exact replica of the encoder part. Since we have real valued data at the input layer, mean squared error (mse) is used as the loss function with Adam optimizer. ReLU activation function is used at all the layers except the output layer where sigmoid is used. For threshold computation, results have been averaged over 10 runs to avoid any experimental bias. To test AEDDM effectiveness in drift detection, drift is introduced in the stream (last 10% of the dataset) which starts at batch 20 (21st batch). The initial 20 batches contain normal (non-drifted) data. For all the datasets batch size of 32 is used for autoencoders training as well as for windowing purposes. The reference window (the training data with computed threshold) is fixed while the detection window moves in batches. The next section describes the experiments on synthetic datasets. 5.2 Experiments on Synthetic Datasets To show the effectiveness of AEDDM in detecting sudden and gradual drifts which are the most common scenarios, four synthetic datasets including Gaussian, VD dataset, Hyperplane and Moving RBF have been used. The former two datasets are newly designed datasets in this research work while the latter two datasets have been used in various research papers in drift detection domain. The focus of this set of experiments is to determine the best set of parameters for AEDDM framework which can be used to effectively detect drift with minimum delay and least false positives. These parameters include: k parameter : k parameter is basically the sensitivity parameter which defines the spread of the data that will be considered as non-drifted. This sensitivity parameter is used in threshold computation and can be determined empirically by applying AEDDM framework on normal non-drifted data as well as on drifted data. We have evaluated the values of k = 1,2,3 to determine the best value of k which can be used in \\(u+k\\sigma\\) for threshold computation (see Table 4 &5) Alpha Parameter To signal a batch as drifted or normal, AEDDM uses batch threshold as well as count threshold. The average reconstruction error of a batch from the respective AE is compared with batch threshold while the exceed count (explained in Section 4 ) of a batch is compared with count threshold. Average reconstruction error hides the internal details of reconstruction error of individual instances in a batch while count threshold encounters this by providing the count of instances which exceed instance threshold (explained in Section 4 ). This count threshold can be computed as a median of batch wise exceed counts in normal data or as a maximum value. Median would make the count threshold more sensitive resulting in more false positives while maximum would make it less sensitive to noise and false positives. The best fit can be determined empirically for a chosen dataset. We name this the Alpha Parameter with two possible values as median or maximum. The logical parameter or “Beta Parameter” Another parameter of AEDDM framework is the logical parameter (see Algorithm 1: Step 3a) which determines whether both thresholds will be used in conjunction or disjunction. It can be empirically established whether to use batch threshold and count threshold in AND setting or in OR setting to signal a batch as normal or drifted. Using AND is expected to be more robust to noise and false alarms but may cause delays in drift detection in some cases. The best fit values of the above three parameters for a dataset can be determined empirically. We name this the Beta Parameter with two possible values as “AND” or “OR. Table 4 summarizes the results for all the selected values of the AEDDM parameters on non-drifted data while Table 5 shows the results on drifted data for four synthetic datasets. In the case of non-drifted data, warnings and false positives are reported over the entire test batch stream while in case of drifted data both warnings and false positives are only counted till the detection point. In all datasets, drift starts from batch 20. The best set of parameters can be determined from both the performance on the non-drifted data as well as the drifted data. In the case of non-drifted data, the best set of parameters is expected to generate a minimum number of warnings and false positives. In the case of Gaussian and VD datasets, there is no clear distinction in performance across different values of k since both classes are more apart from each other from data distribution point of view (See Table 4). But this distinction is much clearer in the case of Hyperplane and moving RBF dataset for k=3 and there are comparatively less warnings and false positives in non-drifted data. Based on this, we have limited our search of best parameters within k=3 across all four datasets. In case of drifted data, the best set of parameters would be where AEDDM can detect drift with minimum delay, warnings, and false positives; delay being the most important. Considering performance on both drifted and non-drifted data, Table 6 summarizes the best set of parameters across all four datasets. Table 4 AEDDM Parameters Calibration on Non-Drifted Data Dataset K Count Threshold Measure: Logical Parameter: AND OR Warnings False Positives Gaussian (187 batches) 1 Median AND 0 0 OR 0 0 Maximum AND 0 0 OR 0 0 2 Median AND 0 0 OR 27 0 Maximum AND 0 0 OR 0 0 3 Median AND 0 0 OR 16 0 Maximum AND 0 0 OR 2 0 VD 60 Batches 1 Median AND 0 0 OR 2 0 Maximum AND 0 0 OR 0 0 2 Median AND 0 0 OR 5 0 Maximum AND 0 0 OR 0 0 3 Median AND 0 0 OR 4 0 Maximum AND 0 0 OR 0 0 Hyperplane 124 Batches 1 Median AND 30 77 OR 27 83 Maximum AND 25 2 OR 46 44 2 Median AND 46 13 OR 46 40 Maximum AND 7 0 OR 16 0 3 Median AND 49 7 OR 55 10 Maximum AND 0 0 OR 2 0 RBF 125 batches 1 Median AND 2 123 OR 2 123 Maximum AND 5 117 OR 2 123 2 Median AND 17 97 OR 4 120 Maximum AND 24 3 OR 48 29 3 Median AND 46 37 OR 31 70 Maximum AND 10 0 OR 24 0 Table 5 Table 5: AEDDM Parameters Calibration on Drifted Data. Dataset K Count Threshold Measure: Logical Parameter: AND OR Warnings Detection Delay False Positives Gaussian 1 Median AND 0 0 0 OR 0 0 0 Maximum AND 0 0 0 OR 0 0 0 2 Median AND 0 0 0 OR 4 0 0 Maximum AND 0 0 0 OR 0 0 0 3 Median AND 0 0 0 OR 2 0 0 Maximum AND 0 0 0 OR 0 0 0 VD 30 Batches 1 Median AND 0 4 0 OR 0 0 0 Maximum AND 0 4 0 OR 0 2 0 2 Median AND 0 5 0 OR 2 1 0 Maximum AND 0 5 0 OR 0 2 0 3 Median AND 0 6 0 OR 2 1 0 Maximum AND 0 6 0 OR 0 2 0 Hyperplane 80 Batches 1 Median AND 8 -20 9 OR 6 -20 12 Maximum AND 5 -1 1 OR 10 -20 4 2 Median AND 7 -19 4 OR 8 -19 5 Maximum AND 3 No Det 0 OR 5 No Det 0 3 Median AND 4 1 0 OR 5 1 0 Maximum AND 1 No Det 0 OR 2 No Det 0 RBF 1 Median AND 0 -20 20 OR 0 -20 20 Maximum AND 0 -20 20 OR 0 -20 20 2 Median AND 2 -20 14 OR 2 -20 17 Maximum AND 5 0 0 OR 9 -14 2 3 Median AND 8 0 3 OR 6 0 8 Maximum AND 4 22 0 OR 6 21 0 Based on the results, it is evident that using k = 3, median as a count threshold measure and using both batch threshold and count threshold in AND setting shows better results. We chose this setting as a default setting of AEDDM which is followed in all rest of the experiments. Table 6 Best Set of Parameters for Synthetic Datasets Dataset Best Parameter Settings K Alpha Beta Gaussian 3 Median AND VD 3 Maximum OR Hyperplane 3 Median AND Moving RBF 3 Median AND To evaluate the results graphically, we have plotted the reconstruction error and exceed counts in Fig. 6 which shows the reconstruction error plots as well as exceed count plots at the outputs of layer 1 and layer 2 autoencoders for all four datasets. For those batches which are not passed to layer 2 autoencoder, exceed count at layer 2 is symbolically set to -1. Reconstruction error plots for both layer 1 and layer 2 autoencoder (Fig. 6 (a) and 6 (b)) show a clear difference between non-drifted data (starting 20 batches) and drifted data which starts from batch 20 in three out of four datasets. In the case of Hyperplane datasets, the difference in reconstruction error is not very clear as there is a very slight difference between the distribution of positive and negative class data (Fig. 6 (iii) a and b). Similarly, exceed counts layer 2 plots (Fig. 6 (d)) show a clear difference between the distribution of drifted and non-drifted data in the case of Gaussian, VD and RBF dataset as compared to the Hyperplane dataset. This distinction is not very clear in layer 1 exceed count plots (Fig. 6 (c)). Since drift is detected based on the reconstruction error and exceed counts at layer 2, so we are more interested in layer 2 outputs specifically. As we have used a simple deep vanilla autoencoder with some default set of hyperparameters, there is a huge space to improve the detection performance on these datasets by calibrating different types of autoencoders with different architectures and set of hyperparameters. The next section details further experimentation of AEDDM on real-world datasets. 5.3 Experiments on Real World Datasets The drift detection performance of AEDDM approach is evaluated on four benchmark real-world datasets including NOAA weather data, Forest Covertype, KDDCUP99 Intrusion detection dataset and ELEC2 electricity dataset. In the case of real-world datasets, it is more likely that the change in distribution of most relevant features will impact the decision boundary to a larger extent and it is expected that such changes will impact the accuracy of the pre-trained classifiers (real drift). Similarly, changes in distribution of features which are less informative should not impact the decision boundary with no or very limited impact on the performance of pre-trained classifiers (virtual drift). An ideal drift detector should be able to consider the data distributional changes in more informative features and ignore the changes in less informative features with respect to drift detection. To test AEDDM on real world datasets, we introduced drift by interchanging the values of top25% ( 30% or 40%) attributes in one setting and by interchanging the feature values of bottom25% (30% or 40%) in another setting by using the same approach followed by (Sethi & Kantardzic, 2017 ) and (Castellani et al., 2021 ). The top 25% and bottom 25% attributes are selected based on feature importance measure like information gain or mutual information. The drift detection results of AEDDM approach have been summarized in Table 7 . For batch threshold k = 3 is used, median is used as a count threshold measure (alpha parameter) while AND is used as a logical parameter (beta parameter) for this set of experiments. The number of batches used in non-drifted and gradual drift case depends on the size of the dataset while in the case of sudden drift initial 55 batches are considered based on the size of the smallest dataset. In case of non-drifted data, AEDDM shows no false positives in all four datasets and only a few warnings in case of NOAA and Covertype datasets (see Table 7 ). A two-sample t-test is used as a significance test with 5% significance level to validate the outcome of AEDDM. The null hypothesis (H0) is true when there is no drift in the datasets and H1 is true when there is a drift in the dataset. The t-test also confirms that there is no drift in the normal non-drifted batch stream for all four datasets. For sudden drift top 25% case, AEDDM detects the drift with zero delay for three datasets and with a delay of four batches in case of ELEC dataset whereas for sudden drift bottom 25% case there are only a few warnings (NOAA = 3, ELEC = 5, Covertype = 16); only one false positive in the case of Covertype and ELEC datasets but no detections in case of all four datasets confirmed by t-test for initial 55 batches. This result strengthens our preposition that a drift detector should be able to detect real drift (drift in important features) while ignoring the virtual drift (changes in less important features) which AEDDM effectively demonstrates through these experiments. To induce gradual drift in the real world datasets, we introduced a new mechanism for incorporating a gradual drift (sudden at discrete steps) in the datasets in such a way that initial 10% data contains no change, for the next 10% data ,values of the top25% attributes are increased by 10% ( as compared to the original values in non-drifted data), the next 10% data values are increased by 20% and so on, so that in the last chunk, data values in the top 25% attributes are increased by 100%. In the case of top25% gradual drift, drift is detected in all four datasets while in the case of bottom25% gradual drift, no drift is detected in NOAA and Covertype. Although the results vary across different datasets in bottom25 gradual drift case, the performance of AEDDM is encouraging and can be further explored. Table 7 AEDDM Drift Detection Results on Real Datasets Dataset Non-drifted Data Sudden Drift (Initial 55 batches considered: drift starts at batch 20) Gradual Drift (Whole batch stream is considered) Top25% (30%/40%) Bottom25% (30%/40%) Top25% Bottom25% Batches Warnings False Positives t-test α = 5% Detection Delay t-test Warnings False Positives t-test Drift Point Detect Point t-test Detect Point t-test NOAA 55 3 0 H 0 0 (Top 40%) H 1 3 0 H 0 6 25 H 1 No Detection H 0 (L1) H 1 (L2) Covertype 1815 51 0 H 0 0 (Top 25%) H 1 16 1 H 0 182 584 H 1 No Detection H 0 KDDCUP 1543 0 0 H 0 0 (Top 30%) H 1 0 0 H 0 155 616 H 1 467 H 1 ELEC2 142 0 0 H 0 4 (Top 30%) H 1 5 1 H 0 15 77 H 1 35 H 1 To demonstrate the impact of drift on the classifier’s performance and effectiveness of AEDDM in detecting real drift while ignoring the virtual drift, we experimented with seven most used classifiers in batch classification problems including logistic regression, random forest, KNN, SVM, XGB, decision tree and MLP (In the case of kddcup99 and Covertype datasets SVM is not used due to long training time). In all four datasets, sudden and gradual drift is introduced using the top25% and bottom25% approach; in sudden case drift starts from batch 20 while in gradual case it starts after initial 10% of the batch stream. Classification performance is measured using f1 score and results averaged over 5 batches are shown in Fig. 7 . For sudden drift scenarios (Fig. 8 (a) and (b)) results are reported only for first 55 batches while for gradual drift scenarios (Fig. 7 (c) and (d)) results have been reported over the entire batch stream. In case of top 25% sudden drift (see Fig. 7 (a)), there is a clear drop in f1score after index 3 (batch indices start from zero) which is batch 20 as the results have been averaged over 5 batches which indicates the drift is real. In case of bottom25% sudden drift (Figure:7(b)), there is not as much degradation in performance and f1score almost follows the same pattern as in case of first non-drifted 20 batches. Here AEDDM shows its robustness to distributional changes in less informative features (virtual drift) and does not detect this drift (see Table 7 ). Similarly, in top25% gradual case (Fig. 7 (c)), f1score gradually falls/changes at discrete intervals in accordance with how the drift is introduced which indicates a real drift and AEDDM detects this drift successfully in three datasets namely NOAA, Covertype and KDDCUP99 with some delays. While in case of bottom25% gradual drift (Fig. 7 (d)), the distributional changes do not impact the classification performance as much (virtual drift) and AEDDM ignores these changes in three of the datasets. These results show the effectiveness of the proposed AEDDM method in detecting distributional changes in the real-world datasets which are more likely to impact the classifier’s performance. Apart from testing the AEDDM performance using batch classifiers, we have also tested it using a well-known online classifier “ Hoeffding tree classifier”. The next section briefly describes these experiments. 5.3 Performance Comparison In real word applications, the drift detection mechanism should be transparent to machine learning scenarios (specifically classification in our case) working in tandem with the arrival of new data. In case a drift is detected which is likely to impact the performance of the classifier, the pre-trained classifier should be retrained with the new data so that it can maintain acceptable predictive performance. To test and compare the performance of the proposed AEDDM approach in an online learning environment, we have used Hoeffding tree (Hulten et al., 2001b ) as a base classifier which is an online incremental learning algorithm. A Hoeffding tree has the capability to adapt to the changes in the new data with the addition of every new sample and gives performance comparable to a non-incremental batch learner with unlimited data availability (Montiel et al., 2018 ). For this set of experiments, we have used the same four real datasets in the top 25% sudden drift setting. The drift is detected by AEDDM in NOAA, Covertype and KDD at batch 20 with zero delay while at batch 26 in case of ELEC dataset with a delay of six batches. Comparison is made across the following: Static Model (NoChange) : A Hoeffding tree is trained on the available training data. It is assumed that no drift occurs, so no drift detector is employed, and no model update takes place. This acts as the lower baseline. Prequential HT : A prequential Hoeffding Tree classifier with 32 as pre-train size and batch size is used. Performance measures like accuracy and kappa statistics are averaged over 32 instances. It acts as an upper baseline as labels are readily available and first HT predicts each instance then updates itself with the correct label. AEDDM (The proposed method): A Hoeffding tree is trained on the entire available label data and used for making predictions until a drift occurs. Each drifted batch becomes part of the training data when labels are available, and the model is retrained. Yet, we haven’t formalized the complete adaptation mechanism for AEDDM, and it will be part of the future work. The current focus is on the effectiveness of real drift detection with a limited demonstration of adaptation. KS Test : Kolmogorov Smirnov test is used for drift detection in an unsupervised manner. It compares an empirical distribution (incoming batch stream) with a theoretical distribution (non-drifted data) to test whether both batches come from the same distribution or not. A p-value less than 0.05 at 5% significance level indicates the presence of drift between the current and reference distribution (Z. Wang & Wang, 2020a ). A Hoeffding tree is trained on the available training data and is used to predict the incoming batches. After the drift point, each incoming batch becomes part of the training data and the Hoeffding is retrained. ADD : ADD is another autoencoder-based batch drift detection method which uses thresholding mechanism to detect drift. It also uses the Hoeffding tree as a base classifier which is initially trained on the available training data along with the autoencoders. ADD uses two different thresholds for gradual and sudden drift and alerts drift if any batch reconstruction error exceeds either threshold. In case of drift, the base classifier is retrained on the current batch and each drifted batch becomes part of the training data to retrain the autoencoders and training loss is recomputed. We have selected KS test based drift detection (Z. Wang & Wang, 2020a ) and ADD (Jaworski et al. 2020 ) for comparison as both are batch based drift detection methods and work in batch incremental settings. The results have been reported for the first 40 batches where the initial 20 batches contain non-drifted data while the last 20 batches contain drifted data with drift starting at batch 20 in case of all four datasets. This equal distribution of drifted and non-drifted batches provides an equal base for accuracy comparison over the entire batch stream. In this set of experiments our focus is to evaluate the drift detection performance of AEDDM followed by an adaptation mechanism so that the pretrained classifier can recover from the drift and performance degradation. Here both prequential Hoeffding tree and ADD have their own adaptation mechanism (described above) while KS test and AEDDM use a similar approach (described above). The static model employs no detection hence no adaptation as well. The plots in Fig. 8 show that the performance of the base classifier falls from batch 20 and then it recovers as the model is retrained based on drift detection and adaptation mechanism by each method. This fall in accuracy is much clearer in the case of KDDCUP99 and Covertype datasets as compared to the other two datasets. The no-update model in all four cases shows how sharp the accuracy falls after drift occurs at batch 20 and if there is no detection and adaptation mechanism. The proposed AEDDM approach effectively detects this drift with zero delay (see Table 7 ) and the adapted base classifier quickly recovers from this drift giving the best average accuracy over the batch stream in case of KDDCUP99, Forest Covertype and ELEC datasets and shares the top rank in case of NOAA dataset with KS approach. The average accuracy scores over the entire batch stream are summarized in Table 8 . The proposed AEDDM approach almost outperforms other methods in all four datasets. The access to experiments can be provided on a reasonable request to the corresponding author. Table 8 Average Batch Accuracy Average Accuracy Over 40 Batches Dataset AEDDM ADD KS Prequential HT No Update NOAA 0.68 0.67 0.68 0.66 0.48 COVERTYPE 0.70 0.62 0.61 0.58 0.57 KDDCUP99 0.94 0.91 0.92 0.93 0.49 ELEC 0.85 0.63 0.83 0.73 0.71 6 Conclusion and Future Work In this paper, the AEDDM approach for drift detection is presented which is capable of detecting drift in a batch stream in an unsupervised manner. For a binary classification problem, the proposed method uses two autoencoders placed in sequential order and uses a thresholding mechanism which is based on batch reconstruction error (batch threshold) and reconstruction error of individual instances within a batch (instance threshold and count threshold). The proposed method learns the distribution of both classes data in training phase and then uses the deviation in batch reconstruction error and exceed counts within an incoming batch stream to signal warning levels and drift. The proposed method has three configurable parameters including ‘ k’ which defines the spread of the non-drifted data, ‘ alpha ‘which is the measure to be used in count threshold (median or maximum) and ‘beta’ which is the logical parameter (AND or OR) and defines whether both batch threshold and count threshold will be used in conjunction or disjunction. From experimentation, the default set of parameters is k = 3, alpha=’median’ and beta=’AND’. The AEDDM method is shown to detect the real drift while ignoring the virtual drift thus considerably reducing the false alarms in different sudden and gradual drifting scenarios. The proposed AEDDM approach has been experimentally analyzed on four synthetic datasets and four real-world benchmark datasets. The results show that AEDDM can detect sudden drift with zero delay in most of the cases and is also able to detect gradual drift effectively using the default set of parameters. The results on real-world datasets show that AEDDM only detects real drift i.e., the distributional changes in most important features while ignores the virtual drift i.e., the distributional changes in less important features. This has been verified by using the effect of drift on seven mostly used classifiers in a binary classification setting using top25% and bottom25% approach. The performance of AEDDM method in online setting has been compared with other state of the art batch drift detection methods including KS test and ADD using Hoeffding tree as a base classifier and the proposed methods shows better performance in terms of average batch accuracy in three out of four real-world datasets. The AEDDM approach has been configured and evaluated using a deep vanilla autoencoder with one hidden layer with some default set of hyperparameters (activation function, neuron in hidden layers, optimizer, loss function, network topology etc. ) using a batch size of 32 as the sliding window. Both autoencoders have been placed in sequential order and batch is only passed to the second autoencoder if the thresholds of first autoencoder exceeds. In these simple and default settings, the AEDDM has shown its effectiveness in detecting real drift in different sudden and gradual scenarios. There is a huge space for experimentation with other possible AEDDM architectures with different types of autoencoders with different set of hyperparameters and batch sizes for binary as well as multiclassification problems with multiple drift points which will be considered as a future work. Declarations The authors have no relevant financial or non-financial interests to disclose. The authors have no competing interests relevant to this article's content. All authors certify that they have no affiliations with or involvement in any organization or entity with any financial interest or non-financial interest in the subject matter or materials discussed in this manuscript. The authors have no financial or proprietary interests in any material discussed in this article. References Baena-García, M., del Campo-Ávila, J., Fidalgo, R., Bifet, A., Gavaldà, R., & Morales-Bueno, R. (2006). Early Drift Detection Method. 4th ECML PKDD International Workshop on Knowledge Discovery from Data Streams , 6 , 77–86. https://doi.org/10.1.1.61.6101 Barros, R. S. M., Cabral, D. R. L., Gonçalves, P. M., & Santos, S. G. T. C. (2017). RDDM: Reactive drift detection method. Expert Systems with Applications , 90 , 344–355. https://doi.org/10.1016/j.eswa.2017.08.023 Bifet, A., & Gavaldà, R. (2007). Learning from time-changing data with adaptive windowing. Proceedings of the 7th SIAM International Conference on Data Mining , 443–448. https://doi.org/10.1137/1.9781611972771.42 Brzeziński, D., & Stefanowski, J. (2011). Accuracy updated ensemble for data streams with concept drift. International Conference on Hybrid Intelligent Systems , 6679 LNAI (PART 2), 155–163. https://doi.org/10.1007/978-3-642-21222-2_19 Cabral, D. R. de L., & Barros, R. S. M. de. (2018). Concept drift detection based on Fisher’s Exact test. Information Sciences , 442 – 443 , 220–234. https://doi.org/10.1016/j.ins.2018.02.054 Castellani, A., Schmitt, S., & Hammer, B. (2021). Task-Sensitive Concept Drift Detector with Constraint Embedding. 2021 IEEE Symposium Series on Computational Intelligence, SSCI 2021 - Proceedings . https://doi.org/10.1109/SSCI50451.2021.9659969 Costa, A. F. J., Albuquerque, R. A. S., & Santos, E. M. Dos. (2018). A Drift Detection Method Based on Active Learning. Proceedings of the International Joint Conference on Neural Networks , 2018 - July . https://doi.org/10.1109/IJCNN.2018.8489364 Ditzler, G., & Polikar, R. (2013a). Incremental Learning of Concept Drift from Streaming Imbalanced Data. IEEE Transactions on Knowledge and Data Engineering , 25 (10), 2283–2301. https://doi.org/10.1109/TKDE.2012.136 Ditzler, G., & Polikar, R. (2011). Hellinger distance based drift detection for nonstationary environments. IEEE SSCI 2011: Symposium Series on Computational Intelligence - CIDUE 2011: 2011 IEEE Symposium on Computational Intelligence in Dynamic and Uncertain Environments , 41–48. https://doi.org/10.1109/CIDUE.2011.5948491 Ditzler, G., & Polikar, R. (2013b). Incremental learning of concept drift from streaming imbalanced data. IEEE Transactions on Knowledge and Data Engineering , 25 (10), 2283–2301. https://doi.org/10.1109/TKDE.2012.136 Ditzler, G., Roveri, M., Alippi, C., & Polikar, R. (2015). Learning in Nonstationary Environments: A Survey. IEEE Computational Intelligence Magazine , 10 (4), 12–25. https://doi.org/10.1109/MCI.2015.2471196 Dos Reis, D., Flach, P., Matwin, S., & Batista, G. (2016). Fast unsupervised online drift detection using incremental kolmogorov-smirnov test. Proceedings of the ACM SIGKDD International Conference on Knowledge Discovery and Data Mining , 13 - 17 - Augu , 1545–1554. https://doi.org/10.1145/2939672.2939836 Fan, W. (2004). Systematic data selection to mine concept-drifting data streams. KDD-2004 - Proceedings of the Tenth ACM SIGKDD International Conference on Knowledge Discovery and Data Mining , 128–137. https://doi.org/10.1145/1014052.1014069 Flórez, A., Rodríguez-Moreno, I., Artetxe, A., Olaizola, I. G., & Sierra, B. (2023). CatSight, a direct path to proper multi-variate time series change detection: perceiving a concept drift through common spatial pattern. International Journal of Machine Learning and Cybernetics . https://doi.org/10.1007/s13042-023-01810-z Frías-Blanco, I., Del Campo-Ávila, J., Ramos-Jiménez, G., Morales-Bueno, R., Ortiz-Díaz, A., & Caballero-Mota, Y. (2015). Online and non-parametric drift detection methods based on Hoeffding’s bounds. IEEE Transactions on Knowledge and Data Engineering , 27 (3), 810–823. https://doi.org/10.1109/TKDE.2014.2345382 Gama, J., Medas, P., Castillo, G., & Rodrigues, P. (2004). Learning with drift detection. Lecture Notes in Computer Science (Including Subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) , 3171 , 286–295. https://doi.org/10.1007/978-3-540-28645-5_29 Gama, J., Zliobaite, I., Bifet, A., Pechenizkiy, M., & Bouchachia, A. (2014). A survey on concept drift adaptation. ACM Computing Surveys , 46 (4). https://doi.org/10.1145/2523813 Gemaque, R. N., Costa, A. F. J., Giusti, R., & dos Santos, E. M. (2020). An overview of unsupervised drift detection methods. Wiley Interdisciplinary Reviews: Data Mining and Knowledge Discovery , 10 (6). https://doi.org/10.1002/widm.1381 Goodfellow, Y. B. and A. (2016). Deep Learning . MIT Press. Gözüaçık, Ö., Bonab, H., Büyükçakır, A., & Can, F. (2019). Unsupervised concept drift detection with a discriminative classifier. International Conference on Information and Knowledge Management, Proceedings , 2365–2368. https://doi.org/10.1145/3357384.3358144 Gu, F., Zhang, G., Lu, J., & Lin, C. T. (2016). Concept drift detection based on equal density estimation. Proceedings of the International Joint Conference on Neural Networks , 2016 - Octob , 24–30. https://doi.org/10.1109/IJCNN.2016.7727176 Haque, A., Khan, L., & Baron, M. (2016). SAND: Semi-supervised adaptive novel class detection and classification over data stream. 30th AAAI Conference on Artificial Intelligence, AAAI 2016 , 1652–1658. Haque, A., Khan, L., Baron, M., Thuraisingham, B., & Aggarwal, C. (2016). Efficient handling of concept drift and concept evolution over Stream Data. 2016 IEEE 32nd International Conference on Data Engineering, ICDE 2016 , 481–492. https://doi.org/10.1109/ICDE.2016.7498264 Harries, M., & Wales, N. S. (1999). Splice-2 comparative evaluation: Electricity pricing . Hinton, G. E., & Zemel, R. S. (1994). Autoencoders, Minimum Description Length and Helmholtz free Energy. Advances in Neural Information Processing Systems , 6 , 3–10. Hu, H., Kantardzic, M., & Sethi, T. S. (2020). No Free Lunch Theorem for concept drift detection in streaming data classification: A review. In Wiley Interdisciplinary Reviews: Data Mining and Knowledge Discovery (Vol. 10, Issue 2). Wiley-Blackwell. https://doi.org/10.1002/widm.1327 Hulten, G., Spencer, L., & Domingos, P. (2001a). Mining time-changing data streams. Proceedings of the Seventh ACM SIGKDD International Conference on Knowledge Discovery and Data Mining , 97–106. https://doi.org/10.1145/502512.502529 Hulten, G., Spencer, L., & Domingos, P. (2001b). Mining time-changing data streams. Proceedings of the Seventh ACM SIGKDD International Conference on Knowledge Discovery and Data Mining , 97–106. https://doi.org/10.1145/502512.502529 Iwashita, A. S., & Papa, J. P. (2019). An Overview on Concept Drift Learning. IEEE Access , 7 , 1532–1547. https://doi.org/10.1109/ACCESS.2018.2886026 Jaworski, M., Duda, P., & Rutkowski, L. (2018). On applying the Restricted Boltzmann Machine to active concept drift detection. 2017 IEEE Symposium Series on Computational Intelligence, SSCI 2017 - Proceedings , 2018 - Janua , 1–8. https://doi.org/10.1109/SSCI.2017.8285409 Jaworski, M., Rutkowski, L., & Angelov, P. (2020). Concept Drift Detection Using Autoencoders in Data Streams Processing. Lecture Notes in Computer Science (Including Subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) , 12415 LNAI , 124–133. https://doi.org/10.1007/978-3-030-61401-0_12 Jaworski, M., Rutkowski, L., Angelov, P., Artificial, P. A.-I. C. on, & 2020, undefined. (2020). Concept Drift Detection Using Autoencoders in Data Streams Processing. Springer , 124–133. https://doi.org/10.1007/978-3-030-61401-0_12 Kolter, J. Z., & Maloof, M. A. (2007). Dynamic weighted majority: An ensemble method for drifting concepts. Journal of Machine Learning Research , 8 , 2755–2790. Liao, J., Zhang, J., & Ng, W. W. Y. (2016). Effects of different base classifiers to Learn++ family algorithms for concept drifting and imbalanced pattern classification problems. Proceedings - International Conference on Machine Learning and Cybernetics , 1 , 99–104. https://doi.org/10.1109/ICMLC.2016.7860884 Liu, A., Lu, J., Liu, F., & Zhang, G. (2018). Accumulating regional density dissimilarity for concept drift detection in data streams. Pattern Recognition , 76 , 256–272. https://doi.org/10.1016/j.patcog.2017.11.009 Liu, G., Cheng, H. R., Qin, Z. G., Liu, Q., & Liu, C. X. (2013). E-CVFDT: An improving CVFDT method for concept drift data stream. 2013 International Conference on Communications, Circuits and Systems, ICCCAS 2013 , 1 , 315–318. https://doi.org/10.1109/ICCCAS.2013.6765241 Losing, V., Hammer, B., & Wersing, H. (2017). KNN classifier with self adjusting memory for heterogeneous concept drift. Proceedings - IEEE International Conference on Data Mining, ICDM , 291–300. https://doi.org/10.1109/ICDM.2016.141 Lu, J., Liu, A., Dong, F., Gu, F., Gama, J., & Zhang, G. (2019). Learning under Concept Drift: A Review. IEEE Transactions on Knowledge and Data Engineering , 31 (12), 2346–2363. https://doi.org/10.1109/TKDE.2018.2876857 Masud, M., Gao, J., Khan, L., Han, J., & Thuraisingham, B. M. (2011). Classification and novel class detection in concept-drifting data streams under time constraints. IEEE Transactions on Knowledge and Data Engineering , 23 (6), 859–874. https://doi.org/10.1109/TKDE.2010.61 Menon, A. G., & Gressel, G. (2021). Concept Drift Detection in Phishing Using Autoencoders. Communications in Computer and Information Science , 1366 , 208–220. https://doi.org/10.1007/978-981-16-0419-5_17 Montiel, J., Read, J., Bifet, A., & Abdessalem, T. (2018). Scikit-multiflow: A Multi-output Streaming Framework. Journal of Machine Learning Research , 19 . https://doi.org/10.5555/3291125.3309634 Nick Street, W., & Kim, Y. S. (2001). A streaming ensemble algorithm (SEA) for large-scale classification. Proceedings of the Seventh ACM SIGKDD International Conference on Knowledge Discovery and Data Mining , 377–382. https://doi.org/10.1145/502512.502568 Nishida, K., & Yamauchi, K. (2007). Detecting concept drift using statistical testing. Lecture Notes in Computer Science (Including Subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) , 4755 LNAI , 264–269. https://doi.org/10.1007/978-3-540-75488-6_27 Oladele, S. (2021). A Comprehensive Guide on How to Monitor Your Models in Production - neptune.ai . Página Oficial Neptune AI. https://neptune.ai/blog/how-to-monitor-your-models-in-production-guide Page, E. S. (1954). Continuous Inspection Schemes. Biometrika , 41 (1/2), 100. https://doi.org/10.2307/2333009 Pesaranghader, A., Viktor, H. L., & Paquet, E. (2018). McDiarmid Drift Detection Methods for Evolving Data Streams. Proceedings of the International Joint Conference on Neural Networks , 2018 - July . https://doi.org/10.1109/IJCNN.2018.8489260 Pinagé, F., dos Santos, E. M., & Gama, J. (2020). A drift detection method based on dynamic classifier selection. Data Mining and Knowledge Discovery , 34 (1), 50–74. https://doi.org/10.1007/s10618-019-00656-w Qahtan, A., Alharbi, B., Wang, S., & Zhang, X. (2015). A PCA-based change detection framework for multidimensional data streams. Proceedings of the ACM SIGKDD International Conference on Knowledge Discovery and Data Mining , 2015 - Augus , 935–944. https://doi.org/10.1145/2783258.2783359 Raab, C., Heusinger, M., & Schleif, F. M. (2020). Reactive Soft Prototype Computing for Concept Drift Streams. Neurocomputing , 416 , 340–351. https://doi.org/10.1016/j.neucom.2019.11.111 Schelter, S., Biessmann, F., Januschowski, T., Salinas, D., Seufert, S., & Szarvas, G. (2018). On Challenges in Machine Learning Model Management. Bulletin of the IEEE Computer Society Technical Committee on Data Engineering , 5–13. http://sites.computer.org/debull/A18dec/p5.pdf Schlimmer, J. C., & Granger, R. H. (1986). Incremental Learning from Noisy Data. Machine Learning , 1 (3), 317–354. https://doi.org/10.1023/A:1022810614389 Schröder, T., & Schulz, M. (2022). Monitoring machine learning models: A categorization of challenges and methods. In Data Science and Management . https://doi.org/10.1016/j.dsm.2022.07.004 Sethi, T. S., & Kantardzic, M. (2015). Don’t pay for validation: Detecting drifts from unlabeled data using Margin Density. Procedia Computer Science , 53 (1), 103–112. https://doi.org/10.1016/j.procs.2015.07.284 Sethi, T. S., & Kantardzic, M. (2017). On the reliable detection of concept drift from streaming unlabeled data. ArXiv . Sidhu, P., & Bhatia, M. P. S. (2015). An online ensembles approach for handling concept drift in data streams: diversified online ensembles detection. International Journal of Machine Learning and Cybernetics , 6 (6), 883–909. https://doi.org/10.1007/s13042-015-0366-1 Sidhu, P., & Bhatia, M. P. S. (2019). A two ensemble system to handle concept drifting data streams: recurring dynamic weighted majority. International Journal of Machine Learning and Cybernetics , 10 (3), 563–578. https://doi.org/10.1007/s13042-017-0738-9 Soppin, S., Ramachandra, M., & Chandrashekar, B. N. (2021). Essentials of Deep Learning and AI: Experience Unsupervised Learning, Autoencoders, Feature Engineering, and Time Series Analysis with TensorFlow, Keras, and scikit-learn (English Edition) . Spinosa, E. J., De Carvalho, A. P. D. L. F., & Gama, J. (2007). OLINDDA: A cluster-based approach for detecting novelty and concept drift in data streams. Proceedings of the ACM Symposium on Applied Computing , 448–452. https://doi.org/10.1145/1244002.1244107 Wald, A. (1973). Sequential Analysis . DOVER PUBLICATIONS, INC. Wang, Haixun, Fan, W., Yu, P. S., & Han, J. (2003). Mining concept-drifting data streams using ensemble classifiers. Proceedings of the ACM SIGKDD International Conference on Knowledge Discovery and Data Mining , 226. https://doi.org/10.1145/956755.956778 Wang, Heng, & Abraham, Z. (2015). Concept drift detection for streaming data. Proceedings of the International Joint Conference on Neural Networks , 2015 - Septe . https://doi.org/10.1109/IJCNN.2015.7280398 Wang, S., Minku, L. L., Ghezzi, D., Caltabiano, D., Tino, P., & Yao, X. (2013). Concept Drift Detection for Online Class Imbalance Learning. Proceedings of the International Joint Conference on Neural Networks . https://doi.org/10.1109/IJCNN.2013.6706768 Wang, Z., & Wang, W. (2020a). Concept Drift Detection Based on Kolmogorov–Smirnov Test. Lecture Notes in Electrical Engineering , 572 LNEE , 273–280. https://doi.org/10.1007/978-981-15-0187-6_31 Wang, Z., & Wang, W. (2020b). Concept Drift Detection Based on Kolmogorov–Smirnov Test. Lecture Notes in Electrical Engineering , 572 LNEE , 273–280. https://doi.org/10.1007/978-981-15-0187-6_31 Wares, S., Isaacs, J., & Elyan, E. (2019). Data stream mining: methods and challenges for handling concept drift. SN Applied Sciences , 1 (11). https://doi.org/10.1007/s42452-019-1433-0 Yong, B. X., Fathy, Y., & Brintrup, A. (2020a). Bayesian Autoencoders for Drift Detection in Industrial Environments. 2020 IEEE International Workshop on Metrology for Industry 4.0 and IoT, MetroInd 4.0 and IoT 2020 - Proceedings , 627–631. https://doi.org/10.1109/MetroInd4.0IoT48571.2020.9138306 Yong, B. X., Fathy, Y., & Brintrup, A. (2020b). Bayesian Autoencoders for Drift Detection in Industrial Environments. 2020 IEEE International Workshop on Metrology for Industry 4.0 and IoT, MetroInd 4.0 and IoT 2020 - Proceedings , 627–631. https://doi.org/10.1109/MetroInd4.0IoT48571.2020.9138306 Yu, S., & Abraham, Z. (2017). Concept drift detection with hierarchical hypothesis testing. Proceedings of the 17th SIAM International Conference on Data Mining, SDM 2017 , 768–776. https://doi.org/10.1137/1.9781611974973.86 Cite Share Download PDF Status: Posted Version 1 posted You are reading this latest preprint version Research Square lets you share your work early, gain feedback from the community, and start making changes to your manuscript prior to peer review in a journal. As a division of Research Square Company, we’re committed to making research communication faster, fairer, and more useful. We do this by developing innovative software and high quality services for the global research community. Our growing team is made up of researchers and industry professionals working together to solve the most critical problems facing scientific publishing. Also discoverable on Platform About Our Team In Review Editorial Policies Advisory Board Help Center Resources Author Services Accessibility API Access RSS feed Manage Cookie Preferences © Research Square 2026 | ISSN 2693-5015 (online) Privacy Policy Terms of Service Do Not Sell My Personal Information {\"props\":{\"pageProps\":{\"initialData\":{\"identity\":\"rs-3244928\",\"acceptedTermsAndConditions\":true,\"allowDirectSubmit\":true,\"archivedVersions\":[],\"articleType\":\"Research Article\",\"associatedPublications\":[],\"authors\":[{\"id\":224877616,\"identity\":\"48e6521f-6e59-4724-afc1-2de272e96c41\",\"order_by\":0,\"name\":\"Usman Ali\",\"email\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAAyAQMAAABI0h/eAAAABlBMVEX///8AAABVwtN+AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAu0lEQVRIiWNgGAWjYFAC5oYDHwwOgFgGQJxAjBbGhoMzSNbCzMNAihaD4wcbD9sU3JFnYG/eJsG4I40ILWcSGw7nGDwzbOA5VibBeCaHCC0HwFoOMzZI5JhJMLZVEKHl/MOGwxYGh+0b5N8Qq+UG0BYGg8OJDRI8IC1EOEzyxsOGgz0Gz5LbeNKKLRLPEOF9vvPJhz/8+HPHtp/98MYbH3ckE9YCB2wgIrGBBB0QwEi6llEwCkbBKBgBAABS0j+n9cWl/gAAAABJRU5ErkJggg==\",\"orcid\":\"\",\"institution\":\"Institute of Business Administration Karachi\",\"correspondingAuthor\":true,\"submittingAuthor\":false,\"prefix\":\"\",\"firstName\":\"Usman\",\"middleName\":\"\",\"lastName\":\"Ali\",\"suffix\":\"\"},{\"id\":224877617,\"identity\":\"04c00eb8-afdb-4430-9125-9a8acecc2756\",\"order_by\":1,\"name\":\"Tariq Mahmood\",\"email\":\"\",\"orcid\":\"\",\"institution\":\"Institute of Business Administration Karachi\",\"correspondingAuthor\":false,\"submittingAuthor\":false,\"prefix\":\"\",\"firstName\":\"Tariq\",\"middleName\":\"\",\"lastName\":\"Mahmood\",\"suffix\":\"\"}],\"badges\":[],\"createdAt\":\"2023-08-08 09:46:55\",\"currentVersionCode\":1,\"declarations\":{\"humanSubjects\":false,\"vertebrateSubjects\":false,\"conflictsOfInterestStatement\":true,\"humanSubjectEthicalGuidelines\":false,\"humanSubjectConsent\":false,\"humanSubjectClinicalTrial\":false,\"humanSubjectCaseReport\":false,\"vertebrateSubjectEthicalGuidelines\":false,\"coiExplicitlySet\":false},\"doi\":\"10.21203/rs.3.rs-3244928/v1\",\"doiUrl\":\"https://doi.org/10.21203/rs.3.rs-3244928/v1\",\"draftVersion\":[],\"editorialEvents\":[],\"editorialNote\":\"\",\"failedWorkflow\":false,\"files\":[{\"id\":41317485,\"identity\":\"31db9c58-9027-4422-b5f9-52c2ccaf9ab1\",\"added_by\":\"auto\",\"created_at\":\"2023-08-09 15:36:27\",\"extension\":\"png\",\"order_by\":1,\"title\":\"Figure 1\",\"display\":\"\",\"copyAsset\":false,\"role\":\"figure\",\"size\":31875,\"visible\":true,\"origin\":\"\",\"legend\":\"\\u003cp\\u003eAutoencoder Architecture\\u003c/p\\u003e\",\"description\":\"\",\"filename\":\"floatimage1.png\",\"url\":\"https://assets-eu.researchsquare.com/files/rs-3244928/v1/4bb7f076c0e7baad8213461f.png\"},{\"id\":41317480,\"identity\":\"29b93f53-80b0-450c-a096-fbc00d8f4a39\",\"added_by\":\"auto\",\"created_at\":\"2023-08-09 15:36:27\",\"extension\":\"png\",\"order_by\":2,\"title\":\"Figure 2\",\"display\":\"\",\"copyAsset\":false,\"role\":\"figure\",\"size\":35217,\"visible\":true,\"origin\":\"\",\"legend\":\"\\u003cp\\u003eA general framework for unsupervised batch-based drift detection\\u003c/p\\u003e\",\"description\":\"\",\"filename\":\"floatimage2.png\",\"url\":\"https://assets-eu.researchsquare.com/files/rs-3244928/v1/b4c6ec8ddb09e3cd9e1feccc.png\"},{\"id\":41318337,\"identity\":\"6e139619-02f3-4118-ae32-05492b114b54\",\"added_by\":\"auto\",\"created_at\":\"2023-08-09 15:44:28\",\"extension\":\"png\",\"order_by\":3,\"title\":\"Figure 3\",\"display\":\"\",\"copyAsset\":false,\"role\":\"figure\",\"size\":19730,\"visible\":true,\"origin\":\"\",\"legend\":\"\\u003cp\\u003eAEDDM Conceptual Framework\\u003c/p\\u003e\",\"description\":\"\",\"filename\":\"floatimage3.png\",\"url\":\"https://assets-eu.researchsquare.com/files/rs-3244928/v1/72e6375f1f36ff95dfeb8c08.png\"},{\"id\":41317482,\"identity\":\"c9f19e4f-8566-4aea-8364-a13a5fa75be6\",\"added_by\":\"auto\",\"created_at\":\"2023-08-09 15:36:27\",\"extension\":\"png\",\"order_by\":4,\"title\":\"Figure 4\",\"display\":\"\",\"copyAsset\":false,\"role\":\"figure\",\"size\":96382,\"visible\":true,\"origin\":\"\",\"legend\":\"\\u003cp\\u003eOffline Training Phase\\u003c/p\\u003e\",\"description\":\"\",\"filename\":\"floatimage4.png\",\"url\":\"https://assets-eu.researchsquare.com/files/rs-3244928/v1/70605ab39fc43d039e94c9b1.png\"},{\"id\":41317477,\"identity\":\"5f7d8e32-44f6-4500-9d70-a469e8528152\",\"added_by\":\"auto\",\"created_at\":\"2023-08-09 15:36:26\",\"extension\":\"png\",\"order_by\":5,\"title\":\"Figure 5\",\"display\":\"\",\"copyAsset\":false,\"role\":\"figure\",\"size\":55981,\"visible\":true,\"origin\":\"\",\"legend\":\"\\u003cp\\u003eOnline Detection Component\\u003c/p\\u003e\",\"description\":\"\",\"filename\":\"floatimage6.png\",\"url\":\"https://assets-eu.researchsquare.com/files/rs-3244928/v1/0e4c71b773bcf79a7bd114c9.png\"},{\"id\":41317488,\"identity\":\"cc117873-6fab-4035-85d3-695af0680ecb\",\"added_by\":\"auto\",\"created_at\":\"2023-08-09 15:36:28\",\"extension\":\"png\",\"order_by\":6,\"title\":\"Figure 6\",\"display\":\"\",\"copyAsset\":false,\"role\":\"figure\",\"size\":338568,\"visible\":true,\"origin\":\"\",\"legend\":\"\\u003cp\\u003eReconstruction Error and Exceed Count Plots\\u003c/p\\u003e\",\"description\":\"\",\"filename\":\"6.png\",\"url\":\"https://assets-eu.researchsquare.com/files/rs-3244928/v1/52a39683379cc6c01720b8ec.png\"},{\"id\":41317478,\"identity\":\"f62ec0bb-1333-4ee6-95ec-0da2907b46a0\",\"added_by\":\"auto\",\"created_at\":\"2023-08-09 15:36:26\",\"extension\":\"png\",\"order_by\":7,\"title\":\"Figure 7\",\"display\":\"\",\"copyAsset\":false,\"role\":\"figure\",\"size\":495809,\"visible\":true,\"origin\":\"\",\"legend\":\"\\u003cp\\u003eEffect of Sudden and Gradual Drift on Classifier's Performance\\u003c/p\\u003e\",\"description\":\"\",\"filename\":\"7.png\",\"url\":\"https://assets-eu.researchsquare.com/files/rs-3244928/v1/aaab970acc6c814c31756b01.png\"},{\"id\":41317486,\"identity\":\"269907c9-e712-4211-aeff-fb18cc85435b\",\"added_by\":\"auto\",\"created_at\":\"2023-08-09 15:36:27\",\"extension\":\"png\",\"order_by\":8,\"title\":\"Figure 8\",\"display\":\"\",\"copyAsset\":false,\"role\":\"figure\",\"size\":255557,\"visible\":true,\"origin\":\"\",\"legend\":\"\\u003cp\\u003eFlowchart 1:AEDDM Ensemble Component\\u003c/p\\u003e\",\"description\":\"\",\"filename\":\"floatimage5.png\",\"url\":\"https://assets-eu.researchsquare.com/files/rs-3244928/v1/56073329ea08de0d09462176.png\"},{\"id\":41318390,\"identity\":\"fb59c3c6-f5e0-4932-b329-85d5808b905f\",\"added_by\":\"auto\",\"created_at\":\"2023-08-09 15:44:36\",\"extension\":\"pdf\",\"order_by\":0,\"title\":\"\",\"display\":\"\",\"copyAsset\":false,\"role\":\"manuscript-pdf\",\"size\":2040669,\"visible\":true,\"origin\":\"\",\"legend\":\"\",\"description\":\"\",\"filename\":\"manuscript.pdf\",\"url\":\"https://assets-eu.researchsquare.com/files/rs-3244928/v1/496e92d7-86d6-4f9c-ac71-5bbc7de9e34f.pdf\"}],\"financialInterests\":\"\",\"formattedTitle\":\"\\u003cp\\u003eA Novel Framework for Concept Drift Detection for Classification Problems in Data Streams\\u003c/p\\u003e\",\"fulltext\":[{\"header\":\"1 Introduction\",\"content\":\"\\u003cp\\u003eDue to current advancement in artificial intelligence, cloud storage and computing, the tendency towards the usage of machine learning applications for monitoring and predicting the real-world has increased. Amongst other complex and specialized machine learning tasks, classification is the most widely used. The performance of a machine learning model, specifically a classifier, heavily depends on its generalization capability and the coherence in statistical properties of training and test data. At the time, these models are built and tested, the training and test data is available in its entirety and produces reasonably good results. However, it has been observed that the predictive performance of machine learning models is often impacted when they are deployed in production (Schelter et al. \\u003cspan citationid=\\\"CR50\\\" class=\\\"CitationRef\\\"\\u003e2018\\u003c/span\\u003e; Oladele \\u003cspan citationid=\\\"CR44\\\" class=\\\"CitationRef\\\"\\u003e2021\\u003c/span\\u003e; Schr\\u0026ouml;der and Schulz \\u003cspan citationid=\\\"CR52\\\" class=\\\"CitationRef\\\"\\u003e2022\\u003c/span\\u003e). Due to this variability in performance, there have been concerns about the wide scale applicability of these machine learning solutions in industry. The reason behind this performance degradation is related to the unique characteristics of the data (Wares et al., \\u003cspan citationid=\\\"CR65\\\" class=\\\"CitationRef\\\"\\u003e2019\\u003c/span\\u003e). Specifically, in real world machine learning scenarios, data characteristics and distribution change over time leading to a \\u003cem\\u003enon-stationary environment\\u003c/em\\u003e which poses challenges for classification models to predict accurately and there is a need to constantly monitor the data stream for detecting such changes and then adapt and retrain the model(Fl\\u0026oacute;rez et al., \\u003cspan citationid=\\\"CR14\\\" class=\\\"CitationRef\\\"\\u003e2023\\u003c/span\\u003e). This phenomenon where the data characteristics and distribution change resulting in a need to update the model is called \\u003cem\\u003econcept drift\\u003c/em\\u003e and the adaption of the model to the new changes is called \\u003cem\\u003econcept drift adaptation\\u003c/em\\u003e (Gama et al. \\u003cspan citationid=\\\"CR16\\\" class=\\\"CitationRef\\\"\\u003e2004\\u003c/span\\u003e; Schr\\u0026ouml;der and Schulz \\u003cspan citationid=\\\"CR52\\\" class=\\\"CitationRef\\\"\\u003e2022\\u003c/span\\u003e). This research domain has been extensively reviewed from different perspectives (Iwashita and Papa \\u003cspan citationid=\\\"CR29\\\" class=\\\"CitationRef\\\"\\u003e2019\\u003c/span\\u003e; Hu, Kantardzic, and Sethi \\u003cspan citationid=\\\"CR26\\\" class=\\\"CitationRef\\\"\\u003e2020\\u003c/span\\u003e; Gemaque et al. \\u003cspan citationid=\\\"CR18\\\" class=\\\"CitationRef\\\"\\u003e2020\\u003c/span\\u003e; Gama et al. \\u003cspan citationid=\\\"CR17\\\" class=\\\"CitationRef\\\"\\u003e2014\\u003c/span\\u003e).\\u003c/p\\u003e \\u003cp\\u003eFrom a probabilistic viewpoint, concept drift can be considered as a change in the joint probability distribution of features \\u0026lsquo;X\\u0026rsquo; and the corresponding labels \\u0026lsquo;Y\\u0026rsquo; with respect to time \\u0026lsquo;t\\u0026rsquo;. Concept drift occurs between time S\\u003csub\\u003et\\u003c/sub\\u003e and S\\u003csub\\u003et+1\\u003c/sub\\u003e if P\\u003csub\\u003et\\u003c/sub\\u003e (X ,Y) \\u003cspan class=\\\"InlineEquation\\\"\\u003e\\u003cspan class=\\\"mathinline\\\"\\u003e\\\\(\\\\ne\\\\)\\u003c/span\\u003e\\u003c/span\\u003e P\\u003csub\\u003et+1\\u003c/sub\\u003e(X ,Y), where P\\u003csub\\u003et\\u003c/sub\\u003e is the joint probability distribution of the feature vector X and the target class label Y at time S\\u003csub\\u003et\\u003c/sub\\u003e ; and \\u003cem\\u003eP\\u003c/em\\u003e\\u003csub\\u003e\\u003cem\\u003et+1\\u003c/em\\u003e\\u003c/sub\\u003e is the joint probability distribution at S\\u003csub\\u003et+1\\u003c/sub\\u003e (Gama et al., \\u003cspan citationid=\\\"CR17\\\" class=\\\"CitationRef\\\"\\u003e2014\\u003c/span\\u003e). Since the joint pdf of X and Y can be written as P (X, Y) = P(Y|X) x P(X), concept drift can occur due to the changes in the data distribution i.e., P(X) alone, or due to the changes in the posterior i.e., P(Y|X) alone or due to change in both. Based on the source of drift and its impact on the joint probability distribution of features and the target, concept drift can be \\u003cem\\u003evirtual\\u003c/em\\u003e or \\u003cem\\u003ereal\\u003c/em\\u003e. If joint probability distribution of features and target concept changes due a change in P(X) (change in the distribution of features) without impacting the decision boundary P (Y /X) then such type of drift is \\u003cem\\u003evirtual drift.\\u003c/em\\u003e If the decision boundary P (Y/X) changes due to a change in P(Y) (Prior probability of the target concept) or P (X/Y) (prior conditional) or due to a change in both, then such a drift is called a \\u003cem\\u003ereal drift\\u003c/em\\u003e (Lu et al., \\u003cspan citationid=\\\"CR38\\\" class=\\\"CitationRef\\\"\\u003e2019\\u003c/span\\u003e).\\u003c/p\\u003e \\u003cp\\u003eChanges in data distribution can occur at different patterns which may or may not affect the decision boundary (real or virtual concept drift) in a supervised learning scenario. In case of real drift, the performance of the classifier will degrade in terms of evaluation metrics and a model update will be required(Lu et al., \\u003cspan citationid=\\\"CR38\\\" class=\\\"CitationRef\\\"\\u003e2019\\u003c/span\\u003e) which can be done periodically in a passive manner to incorporate the new changes or based on an implicit drift detection mechanism. The former \\u003cem\\u003epassive\\u003c/em\\u003e approach to update the model is expensive in terms of computational resources as it results in periodic unnecessary model updates even if there is no drift. The latter \\u003cem\\u003eimplicit\\u003c/em\\u003e drift detection is more practical as it updates the model only if there is sufficient evidence about the occurrence of the drift. Based on the speed of the change, drift can also be categorized as sudden, gradual, incremental and recurring (Gama et al., \\u003cspan citationid=\\\"CR17\\\" class=\\\"CitationRef\\\"\\u003e2014\\u003c/span\\u003e). In this research, we are concerned with implicit drift detection i.e., detecting sudden and gradual changes in data distribution which are likely to impact the decision boundary (real drift).\\u003c/p\\u003e \\u003cp\\u003eRecent approaches to implicit drift detection have some inherent problems. Supervised drift detection methods like DDM (Gama et al., \\u003cspan citationid=\\\"CR16\\\" class=\\\"CitationRef\\\"\\u003e2004\\u003c/span\\u003e), LFR (Heng Wang \\u0026amp; Abraham, \\u003cspan citationid=\\\"CR61\\\" class=\\\"CitationRef\\\"\\u003e2015\\u003c/span\\u003e), RDDM (Barros et al., \\u003cspan citationid=\\\"CR2\\\" class=\\\"CitationRef\\\"\\u003e2017\\u003c/span\\u003e), and others (Yu \\u0026amp; Abraham, \\u003cspan citationid=\\\"CR68\\\" class=\\\"CitationRef\\\"\\u003e2017\\u003c/span\\u003e; Cabral \\u0026amp; Barros, \\u003cspan citationid=\\\"CR5\\\" class=\\\"CitationRef\\\"\\u003e2018\\u003c/span\\u003e; Pesaranghader et al., \\u003cspan citationid=\\\"CR46\\\" class=\\\"CitationRef\\\"\\u003e2018\\u003c/span\\u003e) monitor the model\\u0026rsquo;s performance measures like accuracy, error rate and recall etc. to detect drift. In data streams, these labels are not available immediately after the prediction and it is not possible to detect drift in real time. Semi-supervised methods like OLINDA (Spinosa et al., \\u003cspan citationid=\\\"CR58\\\" class=\\\"CitationRef\\\"\\u003e2007\\u003c/span\\u003e), SAND (Haque, Khan, \\u0026amp; Baron, \\u003cspan citationid=\\\"CR22\\\" class=\\\"CitationRef\\\"\\u003e2016\\u003c/span\\u003e), ECHO (Haque, Khan, Baron, et al., \\u003cspan citationid=\\\"CR23\\\" class=\\\"CitationRef\\\"\\u003e2016\\u003c/span\\u003e) rely on the confidence level of predictions to detect drift. These methods are classifier dependent as different classifiers will have different confidence levels. Unsupervised drift detection techniques like (Qahtan et al., \\u003cspan citationid=\\\"CR48\\\" class=\\\"CitationRef\\\"\\u003e2015\\u003c/span\\u003e; Gu et al., \\u003cspan citationid=\\\"CR21\\\" class=\\\"CitationRef\\\"\\u003e2016\\u003c/span\\u003e; Dos Reis et al., \\u003cspan citationid=\\\"CR12\\\" class=\\\"CitationRef\\\"\\u003e2016\\u003c/span\\u003ez\\u0026uuml;a\\u0026ccedil;ık et al., 2019 and Z. Wang \\u0026amp; Wang, 2020) and others etc detect drift by monitoring the changes in the data distribution. These unsupervised techniques suffer from complexity of density estimation from high dimensional data and high \\u003cem\\u003efalse positive rate\\u003c/em\\u003e (detected drift is virtual not impacting the classifier performance thus causing unnecessary model updates).\\u003c/p\\u003e \\u003cp\\u003eMotived by the recent success of deep learning-based techniques in addressing complex real-life problems and their inherent capability to deal with high dimensional data, we propose a semi-supervised Autoencoder based Drift Detection Method (AEDDM) to detect drift in data streams with a focus to address the problems in current supervised, semi-supervised and unsupervised drift detection techniques. Some recent research papers on drift detection using autoencoders have shown the effectiveness of deep learning technology specifically autoencoders in drift detection domain (Jaworski, Rutkowski, \\u0026amp; Angelov, \\u003cspan citationid=\\\"CR31\\\" class=\\\"CitationRef\\\"\\u003e2020\\u003c/span\\u003e; Yong et al., \\u003cspan citationid=\\\"CR67\\\" class=\\\"CitationRef\\\"\\u003e2020b\\u003c/span\\u003e; Jaworski et al., \\u003cspan citationid=\\\"CR30\\\" class=\\\"CitationRef\\\"\\u003e2018\\u003c/span\\u003e; Menon \\u0026amp; Gressel, \\u003cspan citationid=\\\"CR40\\\" class=\\\"CitationRef\\\"\\u003e2021\\u003c/span\\u003e), but these methods also have some limitations. Former three research papers do not consider the classification scenario and are limited to change detection in the data distribution using reconstruction error and other plots without any explicit mechanism (algorithm) to generate warnings and detect drift. Although ADD (Autoencoder based Drift Detection) proposed by (Menon \\u0026amp; Gressel, \\u003cspan citationid=\\\"CR40\\\" class=\\\"CitationRef\\\"\\u003e2021\\u003c/span\\u003e) uses a thresholding mechanism to detect drift but confirms drift if a single batch exceeds threshold thus not considering the possibility of false alarms. Another limitation of this work is that the same threshold is used for different datasets which we have experimentally observed that each dataset as well as each class data has its own reconstruction loss pattern and threshold. Considering the bottlenecks in current supervised, semi-supervised, unsupervised, and deep learning-based drift detecting techniques, our proposed AEDDM methodology for drift detection has the following potential research contributions:\\u003c/p\\u003e \\u003cp\\u003e \\u003col\\u003e \\u003cspan\\u003e \\u003cli\\u003e \\u003cp\\u003eAn Autoencoder based Drift Detection Method (AEDDM) which uses a thresholding mechanism and a layered architecture to monitor the data distribution of both classes in a binary classification setting. An explicit algorithm which monitors the changes in data distribution based on a thresholding mechanism to generate warnings and then confirm the drift.\\u003c/p\\u003e \\u003c/li\\u003e \\u003c/span\\u003e \\u003cspan\\u003e \\u003cli\\u003e \\u003cp\\u003eUse of two different thresholds namely batch threshold and count threshold, thus incorporating extrinsic as well as intrinsic measures to monitor the changes in the incoming batch stream which makes the drift detector robust to false alarms as well as adaptable.\\u003c/p\\u003e \\u003c/li\\u003e \\u003c/span\\u003e \\u003cspan\\u003e \\u003cli\\u003e \\u003cp\\u003eA drift detector as effective in detecting real drift as supervised drift detection techniques with the added advantage of no need of true class labels.\\u003c/p\\u003e \\u003c/li\\u003e \\u003c/span\\u003e \\u003cspan\\u003e \\u003cli\\u003e \\u003cp\\u003eUnsupervised drift detection yet with a high confidence that the detected drift is real without causing unnecessary model updates and processing overheads.\\u003c/p\\u003e \\u003c/li\\u003e \\u003c/span\\u003e \\u003cspan\\u003e \\u003cli\\u003e \\u003cp\\u003eCreation of new synthetic datasets which can be used by the research community along with a novel mechanism to introduce gradual drift at discrete intervals in real-world datasets.\\u003c/p\\u003e \\u003c/li\\u003e \\u003c/span\\u003e \\u003c/ol\\u003e \\u003c/p\\u003e \\u003cp\\u003eWe are specifically interested in drift detection rather adaptation. After successful drift detection, any standard adaptation strategy can be used to update the model. The rest of the paper is organized as follows: Section \\u003cspan refid=\\\"Sec2\\\" class=\\\"InternalRef\\\"\\u003e2\\u003c/span\\u003e describes the related work in concept drift detection domain; Section \\u003cspan refid=\\\"Sec13\\\" class=\\\"InternalRef\\\"\\u003e3\\u003c/span\\u003e provides the theoretical aspects and Section \\u003cspan refid=\\\"Sec16\\\" class=\\\"InternalRef\\\"\\u003e4\\u003c/span\\u003e covers our proposed methodology. Experimental results are presented in Section \\u003cspan refid=\\\"Sec17\\\" class=\\\"InternalRef\\\"\\u003e5\\u003c/span\\u003e followed by Section \\u003cspan refid=\\\"Sec22\\\" class=\\\"InternalRef\\\"\\u003e6\\u003c/span\\u003e which include conclusion and future research directions.\\u003c/p\\u003e\"},{\"header\":\"2 Related Work\",\"content\":\"\\u003cp\\u003eIn data streams, an active drift detection mechanism is essential in detecting real drifts and then updating the model with an adaptation strategy in a cost-effective manner. Extensive work has been done by the research community in this direction and still the field is emerging with new extensions. Recent Concept drift detection methods can be classified as supervised/explicit, unsupervised/implicit, and semi-supervised based on the drift detection mechanism. Various review papers on concept drift detection techniques classify different methods into different categories like statistical-based, window-based, ensembles etc. among supervised drift detection approaches (Wares et al., \\u003cspan citationid=\\\"CR65\\\" class=\\\"CitationRef\\\"\\u003e2019\\u003c/span\\u003e), unsupervised drift detection methods (Gemaque et al., \\u003cspan citationid=\\\"CR18\\\" class=\\\"CitationRef\\\"\\u003e2020\\u003c/span\\u003e) and active and passive drift detection methos (Ditzler et al., \\u003cspan citationid=\\\"CR11\\\" class=\\\"CitationRef\\\"\\u003e2015\\u003c/span\\u003e). A brief literature review of these methods is provided in this section.\\u003c/p\\u003e \\u003cdiv id=\\\"Sec3\\\" class=\\\"Section2\\\"\\u003e \\u003ch2\\u003e2.1 Supervised / Explicit Drift Detection Methods\\u003c/h2\\u003e \\u003cp\\u003eSupervised drift detection methods monitor the performance measure of a classifier like accuracy, precision, recall, f-measure, or error rate and assume that class labels are available at prediction time. These methods have been categorized as statistical, window-based and ensemble methods.\\u003c/p\\u003e \\u003cdiv id=\\\"Sec4\\\" class=\\\"Section3\\\"\\u003e \\u003ch2\\u003e2.1.1 Statistical Methods\\u003c/h2\\u003e \\u003cp\\u003eStatistical methods of drift detection apply statistical tests to a window of performance scores of the classifier to detect any significant changes in its performance. The Sequential Probability Ratio Test (SPRT) (Wald, \\u003cspan citationid=\\\"CR59\\\" class=\\\"CitationRef\\\"\\u003e1973\\u003c/span\\u003e) is used to test the hypothesis whether the incoming data belongs to a distribution P\\u003csub\\u003e0\\u003c/sub\\u003e or P\\u003csub\\u003e1\\u003c/sub\\u003e or more samples are needed to reach to a conclusion. Cumulative Sum (CUSUM) which is also based on SPRT, uses the residuals as an input to detect the change (Page, \\u003cspan citationid=\\\"CR45\\\" class=\\\"CitationRef\\\"\\u003e1954\\u003c/span\\u003e). A variation of CUSUM is Page- Hinckley (PH) test which is used to detect abrupt changes in the average of a gaussian signal (Page, \\u003cspan citationid=\\\"CR45\\\" class=\\\"CitationRef\\\"\\u003e1954\\u003c/span\\u003e). Although CUSUM and PH are similar algorithms, they are used in different streaming environments. CUSUM is applied on residual from a predictor and is used for anomaly detection whereas PH is better suited to signal processing environments to detect sudden changes. Stagger (Schlimmer \\u0026amp; Granger, \\u003cspan citationid=\\\"CR51\\\" class=\\\"CitationRef\\\"\\u003e1986\\u003c/span\\u003e) employs concept evaluation and then refinement using Boolean characterization and changes the concept definition (characterization) if the existing definition is not able to provide satisfactory results. Stagger was observed to be sensitive to overfitting, taking longer times to adopt to a new concept after being trained for a longer time on an old concept.\\u003c/p\\u003e \\u003cp\\u003eDrift Detection Method (DDM) (Gama et al., \\u003cspan citationid=\\\"CR16\\\" class=\\\"CitationRef\\\"\\u003e2004\\u003c/span\\u003e) models the error-rate of an online classifier with a binomial distribution and generates a warning level and then a drift alarm if the error-rate exceeds predefined thresholds. DDM can detect sudden or abrupt drift but suffers in case the concept is changing gradually which goes un-noticed and no warning is generated. A work like DDM is Early Detection Method ( EDDM) (Baena-Garc\\u0026iacute;a et al., \\u003cspan citationid=\\\"CR1\\\" class=\\\"CitationRef\\\"\\u003e2006\\u003c/span\\u003e) which uses the distance between two classification errors to detect the drift and is able to detect slow gradual changes more effectively as compared to DDM. The EDDM method also defines warning levels and drift levels to detect drift like DDM but requires 30 classification errors to occur before it can detect any drift. In some cases, it may take many examples to conceive 30 classification errors and may cause memory overflow. Both DDM and EDDM are sensitive to class imbalance scenario as the minority class may contribute very little to accuracy, to address this (S. Wang et al., \\u003cspan citationid=\\\"CR62\\\" class=\\\"CitationRef\\\"\\u003e2013\\u003c/span\\u003e) proposed a Drift Detection Method for Online Class Imbalance Learning ( DDM-OCI) which uses the change in recall of the minority class (true positive rate) to detect drift. DDM-OCI assume that the presence of class imbalance is known in advance and was evaluated on binary classification problems. It suffers from false positives as well. Another problem with DDM-OCI is that it is quite possible for a drift to occur without changing the recall of minority class, for example in case of a drift from imbalance class distribution to a balance class distribution.\\u003c/p\\u003e \\u003cp\\u003eStatistical Tests for Equal Proportions ( STEPD) (Nishida \\u0026amp; Yamauchi, \\u003cspan citationid=\\\"CR43\\\" class=\\\"CitationRef\\\"\\u003e2007\\u003c/span\\u003e) uses two additional parameters as significance levels for warning and drift levels based on changes in the accuracy of an old and a recent window with size 30 but with small sample size, used statistical test gets ineffective. Other prominent supervised drift detection methods include HDDM (Hoeffding\\u0026rsquo;s bounds Drift Detection Method(Fr\\u0026iacute;as-Blanco et al., \\u003cspan citationid=\\\"CR15\\\" class=\\\"CitationRef\\\"\\u003e2015\\u003c/span\\u003e), LFR (Linear Four Rates) (Heng Wang \\u0026amp; Abraham, \\u003cspan citationid=\\\"CR61\\\" class=\\\"CitationRef\\\"\\u003e2015\\u003c/span\\u003e), HLFR ( Hierarchical Linear Four Rates(Yu \\u0026amp; Abraham, \\u003cspan citationid=\\\"CR68\\\" class=\\\"CitationRef\\\"\\u003e2017\\u003c/span\\u003e), RDDM (Reactive Drift Detection Method)(Barros et al., \\u003cspan citationid=\\\"CR2\\\" class=\\\"CitationRef\\\"\\u003e2017\\u003c/span\\u003e), variants of Fisher\\u0026rsquo;s Exact test (Cabral \\u0026amp; Barros, \\u003cspan citationid=\\\"CR5\\\" class=\\\"CitationRef\\\"\\u003e2018\\u003c/span\\u003e) and McDiarmid Drift Detection Methods (MDDMs) (Pesaranghader et al., \\u003cspan citationid=\\\"CR46\\\" class=\\\"CitationRef\\\"\\u003e2018\\u003c/span\\u003e). A detailed literature review of all these methods is available in this pre-print.\\u003c/p\\u003e \\u003c/div\\u003e \\u003cdiv id=\\\"Sec5\\\" class=\\\"Section3\\\"\\u003e \\u003ch2\\u003e2.1.2 Window-based Methods\\u003c/h2\\u003e \\u003cp\\u003eWindow-based methods statistically monitor the sliding windows of various sizes instead of monitoring individual instances in a stream. The distribution of a current window is compared with a reference distribution to detect any significant change. (Bifet \\u0026amp; Gavald\\u0026agrave;, \\u003cspan citationid=\\\"CR3\\\" class=\\\"CitationRef\\\"\\u003e2007\\u003c/span\\u003e) proposed an adaptive-window based drift detection method (ADWIN2) as an improvement of their initial work (ADWIN) which uses a variable size window which adjusts its size based on changes in the data distribution. In ADWIN, user needs to specify only the size of one larger window W which is split up into two optimal sub-windows W\\u003csub\\u003ehist\\u003c/sub\\u003e and W\\u003csub\\u003enew\\u003c/sub\\u003e based on the detected significant change in the means of any such two windows. Windows size grows if no change is detected and shrinks when a drift or change is detected. (Hulten et al., \\u003cspan citationid=\\\"CR27\\\" class=\\\"CitationRef\\\"\\u003e2001a\\u003c/span\\u003e) proposed Concept Adapting Very Fast Decision Tree Algorithm (CVFDT) which uses a sliding window to process the data stream and update the tree nodes. If there is a drift, then tree nodes will not pass the Hoeffding\\u0026rsquo;s test in which case a new sub-tree is created with the best new attribute at the root. If the new sub-tree gives better classification performance than the old one, then the old tree is replaced. An improvement to CVFDT was E-CVFDT (G. Liu et al., \\u003cspan citationid=\\\"CR36\\\" class=\\\"CitationRef\\\"\\u003e2013\\u003c/span\\u003e) which gives better performance in gradual drift scenarios.\\u003c/p\\u003e \\u003cp\\u003e \\u003cdiv class=\\\"gridtable\\\"\\u003e\\u003ctable float=\\\"Yes\\\" id=\\\"Tab1\\\" border=\\\"1\\\"\\u003e \\u003ccaption language=\\\"En\\\"\\u003e \\u003cdiv class=\\\"CaptionNumber\\\"\\u003eTable 1\\u003c/div\\u003e \\u003cdiv class=\\\"CaptionContent\\\"\\u003e \\u003cp\\u003eReview of Drift Detection Methods\\u003c/p\\u003e \\u003c/div\\u003e \\u003c/caption\\u003e \\u003ccolgroup cols=\\\"3\\\"\\u003e \\u003cdiv align=\\\"left\\\" class=\\\"colspec\\\" colname=\\\"c1\\\" colnum=\\\"1\\\"\\u003e\\u003c/div\\u003e \\u003cdiv align=\\\"left\\\" class=\\\"colspec\\\" colname=\\\"c2\\\" colnum=\\\"2\\\"\\u003e\\u003c/div\\u003e \\u003cdiv align=\\\"left\\\" class=\\\"colspec\\\" colname=\\\"c3\\\" colnum=\\\"3\\\"\\u003e\\u003c/div\\u003e \\u003cthead\\u003e \\u003ctr\\u003e \\u003cth align=\\\"left\\\" colname=\\\"c1\\\"\\u003e \\u003cp\\u003eSupervised Drift Detection\\u003c/p\\u003e \\u003c/th\\u003e \\u003cth align=\\\"left\\\" colname=\\\"c2\\\"\\u003e\\u0026nbsp;\\u003c/th\\u003e \\u003cth align=\\\"left\\\" colname=\\\"c3\\\"\\u003e\\u0026nbsp;\\u003c/th\\u003e \\u003c/tr\\u003e \\u003c/thead\\u003e \\u003ctbody\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c1\\\" morerows=\\\"21\\\" rowspan=\\\"22\\\"\\u003e\\u0026nbsp;\\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c2\\\" morerows=\\\"11\\\" rowspan=\\\"12\\\"\\u003e \\u003cp\\u003eStatistical\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eSPRT (Wald, \\u003cspan citationid=\\\"CR59\\\" class=\\\"CitationRef\\\"\\u003e1973\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eCUSUM(Page, \\u003cspan citationid=\\\"CR45\\\" class=\\\"CitationRef\\\"\\u003e1954\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003ePH (Page, \\u003cspan citationid=\\\"CR45\\\" class=\\\"CitationRef\\\"\\u003e1954\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eSTAGGER (Schlimmer \\u0026amp; Granger, \\u003cspan citationid=\\\"CR51\\\" class=\\\"CitationRef\\\"\\u003e1986\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eDDM (Gama et al., \\u003cspan citationid=\\\"CR16\\\" class=\\\"CitationRef\\\"\\u003e2004\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eEDDM (Baena-Garc\\u0026iacute;a et al., \\u003cspan citationid=\\\"CR1\\\" class=\\\"CitationRef\\\"\\u003e2006\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eSTEPD (Nishida \\u0026amp; Yamauchi, \\u003cspan citationid=\\\"CR43\\\" class=\\\"CitationRef\\\"\\u003e2007\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eDDM-OCI (S. Wang et al., \\u003cspan citationid=\\\"CR62\\\" class=\\\"CitationRef\\\"\\u003e2013\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eLFR (Heng Wang \\u0026amp; Abraham, \\u003cspan citationid=\\\"CR61\\\" class=\\\"CitationRef\\\"\\u003e2015\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eHLFR (Yu \\u0026amp; Abraham, \\u003cspan citationid=\\\"CR68\\\" class=\\\"CitationRef\\\"\\u003e2017\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eRDDM (Barros et al., \\u003cspan citationid=\\\"CR2\\\" class=\\\"CitationRef\\\"\\u003e2017\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eMDDM (Pesaranghader et al., \\u003cspan citationid=\\\"CR46\\\" class=\\\"CitationRef\\\"\\u003e2018\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c2\\\" morerows=\\\"2\\\" rowspan=\\\"3\\\"\\u003e \\u003cp\\u003eWindow-based\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eCVFDT (Hulten et al., \\u003cspan citationid=\\\"CR27\\\" class=\\\"CitationRef\\\"\\u003e2001a\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eADWIN (Bifet \\u0026amp; Gavald\\u0026agrave;, \\u003cspan citationid=\\\"CR3\\\" class=\\\"CitationRef\\\"\\u003e2007\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eE-CVFDT (G. Liu et al., \\u003cspan citationid=\\\"CR36\\\" class=\\\"CitationRef\\\"\\u003e2013\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c2\\\" morerows=\\\"6\\\" rowspan=\\\"7\\\"\\u003e \\u003cp\\u003eEnsemble-based\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eSEA (Nick Street \\u0026amp; Kim, \\u003cspan citationid=\\\"CR42\\\" class=\\\"CitationRef\\\"\\u003e2001\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eAWE (Haixun Wang et al., \\u003cspan citationid=\\\"CR60\\\" class=\\\"CitationRef\\\"\\u003e2003\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eAUE (Brzeziński \\u0026amp; Stefanowski, \\u003cspan citationid=\\\"CR4\\\" class=\\\"CitationRef\\\"\\u003e2011\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eDWM (Kolter \\u0026amp; Maloof, \\u003cspan citationid=\\\"CR33\\\" class=\\\"CitationRef\\\"\\u003e2007\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eDOED (Sidhu \\u0026amp; Bhatia, \\u003cspan citationid=\\\"CR55\\\" class=\\\"CitationRef\\\"\\u003e2015\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eRDWM (Sidhu \\u0026amp; Bhatia, \\u003cspan citationid=\\\"CR56\\\" class=\\\"CitationRef\\\"\\u003e2019\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eLearn\\u0026thinsp;+\\u0026thinsp;+\\u0026thinsp;Family ((Ditzler \\u0026amp; Polikar, \\u003cspan citationid=\\\"CR8\\\" class=\\\"CitationRef\\\"\\u003e2013a\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c1\\\"\\u003e \\u003cp\\u003eSemi-supervised Drift Detection\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c2\\\"\\u003e\\u0026nbsp;\\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eSAND (Haque, Khan, \\u0026amp; Baron, \\u003cspan citationid=\\\"CR22\\\" class=\\\"CitationRef\\\"\\u003e2016\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c1\\\" morerows=\\\"7\\\" rowspan=\\\"8\\\"\\u003e\\u0026nbsp;\\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c2\\\" morerows=\\\"2\\\" rowspan=\\\"3\\\"\\u003e \\u003cp\\u003eNon-DL Methods\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eECHO (Liao et al., \\u003cspan citationid=\\\"CR34\\\" class=\\\"CitationRef\\\"\\u003e2016\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eOLINDDA (Spinosa et al., \\u003cspan citationid=\\\"CR58\\\" class=\\\"CitationRef\\\"\\u003e2007\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eECSMiner (Masud et al., \\u003cspan citationid=\\\"CR39\\\" class=\\\"CitationRef\\\"\\u003e2011\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c2\\\" morerows=\\\"4\\\" rowspan=\\\"5\\\"\\u003e \\u003cp\\u003eDL Methods\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eBayesian Autoencoders(Yong et al., \\u003cspan citationid=\\\"CR66\\\" class=\\\"CitationRef\\\"\\u003e2020a\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eRBM (Jaworski et al., \\u003cspan citationid=\\\"CR30\\\" class=\\\"CitationRef\\\"\\u003e2018\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eAutoencoders (Jaworski, Rutkowski, Angelov, et al., \\u003cspan citationid=\\\"CR32\\\" class=\\\"CitationRef\\\"\\u003e2020\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eAutoencoders, ADD (Menon \\u0026amp; Gressel, \\u003cspan citationid=\\\"CR40\\\" class=\\\"CitationRef\\\"\\u003e2021\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eAutoencoders (Castellani et al., \\u003cspan citationid=\\\"CR6\\\" class=\\\"CitationRef\\\"\\u003e2021\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c1\\\" morerows=\\\"7\\\" rowspan=\\\"8\\\"\\u003e \\u003cp\\u003eUnsupervised Drift Detection\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c2\\\" morerows=\\\"5\\\" rowspan=\\\"6\\\"\\u003e \\u003cp\\u003eBatch Based\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eMD3 (Sethi \\u0026amp; Kantardzic, \\u003cspan citationid=\\\"CR53\\\" class=\\\"CitationRef\\\"\\u003e2015\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eMD3-RS (Sethi \\u0026amp; Kantardzic, \\u003cspan citationid=\\\"CR54\\\" class=\\\"CitationRef\\\"\\u003e2017\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eNN_DVI (A. Liu et al., \\u003cspan citationid=\\\"CR35\\\" class=\\\"CitationRef\\\"\\u003e2018\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eA PCA based Change detection (Qahtan et al., \\u003cspan citationid=\\\"CR48\\\" class=\\\"CitationRef\\\"\\u003e2015\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eHDDDM (Ditzler \\u0026amp; Polikar, \\u003cspan citationid=\\\"CR9\\\" class=\\\"CitationRef\\\"\\u003e2011\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eKS-test (Z. Wang \\u0026amp; Wang, \\u003cspan citationid=\\\"CR64\\\" class=\\\"CitationRef\\\"\\u003e2020b\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c2\\\" morerows=\\\"1\\\" rowspan=\\\"2\\\"\\u003e \\u003cp\\u003eOnline\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eIncremental KS Test (Dos Reis et al., \\u003cspan citationid=\\\"CR12\\\" class=\\\"CitationRef\\\"\\u003e2016\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eKSWIN (Raab et al., \\u003cspan citationid=\\\"CR49\\\" class=\\\"CitationRef\\\"\\u003e2020\\u003c/span\\u003e)\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003c/tbody\\u003e \\u003c/colgroup\\u003e \\u003c/table\\u003e\\u003c/div\\u003e \\u003c/p\\u003e \\u003c/div\\u003e \\u003cdiv id=\\\"Sec6\\\" class=\\\"Section3\\\"\\u003e \\u003ch2\\u003e2.1.3 Ensemble Methods\\u003c/h2\\u003e \\u003cp\\u003eInstead of using a single classifier\\u0026rsquo;s error rate, ensemble methods use a group of classifiers and their average error rate to detect such changes in underlying concepts. (Nick Street \\u0026amp; Kim, \\u003cspan citationid=\\\"CR42\\\" class=\\\"CitationRef\\\"\\u003e2001\\u003c/span\\u003e) proposed SEA (Streaming Ensemble Algorithm) which builds K C4.5 classifiers sequentially on a fixed chunk size to build an ensemble C. When the ensemble is full, it is used for prediction for the incoming data chunk. It also builds a single C4.5 classifier and compares the performance of the ensemble and the single classifier. If the performance of the single classifier is better than the ensemble, then the worst performing classifier is removed, and the new classifier is added to the ensemble. One drawback of SEA lies in its mechanism to remove the worst performing classifier from the ensemble without considering the recency of the data it was trained on. An ensemble with pre-determined size can still have many poor performing classifiers trained on quite older concepts. This problem was addresses by (Haixun Wang et al., \\u003cspan citationid=\\\"CR60\\\" class=\\\"CitationRef\\\"\\u003e2003\\u003c/span\\u003e) \\u0026lsquo;s Accuracy Weighted Ensemble ( AWE) which builds a new classifier on each arriving chunk like SEA, but instead of removing the worst performing classifier from the ensemble, it entirely builds a newly ensemble including only those classifiers with MSE less than a pre-defined threshold thus resulting in a variable size ensemble.\\u003c/p\\u003e \\u003cp\\u003eAn obvious drawback in AWE was the silencing effect resulting in no class prediction if none of the classifiers meet the MSE threshold in case of a sudden drift. An improvement to AWE was made by (Brzeziński \\u0026amp; Stefanowski, \\u003cspan citationid=\\\"CR4\\\" class=\\\"CitationRef\\\"\\u003e2011\\u003c/span\\u003e)\\u0026lsquo;s Accuracy Updated Ensemble (AUE) algorithm enabling individual classifiers to be updated directly instead of just weights updating. An incremental ensemble method based on Dynamically Weighted Majority ( DWM) was proposed by (Kolter \\u0026amp; Maloof, \\u003cspan citationid=\\\"CR33\\\" class=\\\"CitationRef\\\"\\u003e2007\\u003c/span\\u003e) which maintained a weighted pool of experts as base learners. If the ensemble made a mistake, a new expert was added to the pool, and if an expert or base learner made a mistake, its weight was decreased. If an expert continuously made mistakes, it was removed from the ensemble based on a set threshold. DWM uses the prediction from each base learner and its weight to compute the ensemble prediction. Recurring Dynamic Weighted Majority (RDWM) (Sidhu \\u0026amp; Bhatia, \\u003cspan citationid=\\\"CR56\\\" class=\\\"CitationRef\\\"\\u003e2019\\u003c/span\\u003e) is another ensemble method which employs two ensembles to detect recurrent drift. There are other ensemble methods from Learn\\u0026thinsp;+\\u0026thinsp;+\\u0026thinsp;family ((Polikar et al., 2001; M. Muhlbaier et al., 2004, M. D. Muhlbaier \\u0026amp; Polikar, 2007, M. D. Muhlbaier et al., 2009, Ditzler \\u0026amp; Polikar, 2010b, Ditzler \\u0026amp; Polikar, \\u003cspan citationid=\\\"CR8\\\" class=\\\"CitationRef\\\"\\u003e2013a\\u003c/span\\u003e) which use ensembles of Neural Netwrok based weak learners with varying weighting and voting mechanisms.\\u003c/p\\u003e \\u003c/div\\u003e \\u003c/div\\u003e \\u003cdiv id=\\\"Sec7\\\" class=\\\"Section2\\\"\\u003e \\u003ch2\\u003e2.2 Semi-supervised Drift Detection Methods\\u003c/h2\\u003e \\u003cp\\u003eThe dependence of drift detectors on the availability of class labels in supervised drift detection techniques and the associated cost and delays in the availability of the true labels in real world applications drew the attention of the research community towards framing techniques which either do not rely on class labels or have limited reliance. Some of these works require labeled data for initial training and initialization of drift detectors (Castellani et al., \\u003cspan citationid=\\\"CR6\\\" class=\\\"CitationRef\\\"\\u003e2021\\u003c/span\\u003e) and drift detection is done in completely unsupervised way; while other methods use available labelled data for training of classifiers and initialization for drift detectors and classifier\\u0026rsquo;s confidence levels are needed for drift detection (Haque, Khan, \\u0026amp; Baron, \\u003cspan citationid=\\\"CR22\\\" class=\\\"CitationRef\\\"\\u003e2016\\u003c/span\\u003e). The formers methods are mainly deep learning methods which use autoencoders for drift detection while the later methods use classifiers like SVM, KNN, ensembles or clustering.\\u003c/p\\u003e \\u003cp\\u003eA semi-supervised drift detection method SAND (Semi-Supervised Adaptive Novel Class Detection) (Haque, Khan, \\u0026amp; Baron, \\u003cspan citationid=\\\"CR22\\\" class=\\\"CitationRef\\\"\\u003e2016\\u003c/span\\u003e) uses classifier\\u0026rsquo;s confidence to detect concept drift. It uses a K-NN based ensemble and needs only limited data for model updating where the confidence level is low. SAND is also able to detect outliers. However, due to change detection after calculating each confidence, SAND becomes inefficient in terms of execution time. To overcome this, (Haque, Khan, Baron, et al., \\u003cspan citationid=\\\"CR23\\\" class=\\\"CitationRef\\\"\\u003e2016\\u003c/span\\u003e), proposed ECHO (Efficient Handling of Concept Drift Evolution over Stream Data ) which uses dynamic programming and performs change detection selectively. (Pinag\\u0026eacute; et al., \\u003cspan citationid=\\\"CR47\\\" class=\\\"CitationRef\\\"\\u003e2020\\u003c/span\\u003e) proposed a semi-supervised drift detection method which uses self-annotation and ensemble learners like SAND and uses dynamic classifier selection in an online setting. Other well-known semi-supervised drift detection methods include OLINDDA (Online Novelty and Drift Detection Algorithm) (Spinosa et al., \\u003cspan citationid=\\\"CR58\\\" class=\\\"CitationRef\\\"\\u003e2007\\u003c/span\\u003e) which uses k-mean clustering ; ECSMiner (Enhanced Classifier for data Streams with novel class Miner) (Masud et al., \\u003cspan citationid=\\\"CR39\\\" class=\\\"CitationRef\\\"\\u003e2011\\u003c/span\\u003e) which are more focused on novel class detection .\\u003c/p\\u003e \\u003cdiv id=\\\"Sec8\\\" class=\\\"Section3\\\"\\u003e \\u003ch2\\u003e2.2.1 Deep Learning based Drift Detection Methods\\u003c/h2\\u003e \\u003cp\\u003eSome recent works on drift detection are based on deep learning methods including autoencoders and Restricted Boltzmann Machine (RBM). (Yong et al., \\u003cspan citationid=\\\"CR66\\\" class=\\\"CitationRef\\\"\\u003e2020a\\u003c/span\\u003e) used Bayesian autoencoders to detect drift in sensors data of an industrial environment. Three different measures including reconstruction loss, aleatoric and epistemic uncertainties have been used to detect drift. In case of a real drift (drift already present in data due to sensors degrading conditions) all three measures show a considerable deviation. (Jaworski et al., \\u003cspan citationid=\\\"CR30\\\" class=\\\"CitationRef\\\"\\u003e2018\\u003c/span\\u003e) applied RBM on a synthetic binary dataset generated with the help of RBM to detect sudden and gradual drift. Two indicators, reconstruction loss and free energy have been used to detect drift in the data. In case of drift, both measure indicate a considerable difference from the normal data. (Jaworski, Rutkowski, Angelov, et al., \\u003cspan citationid=\\\"CR32\\\" class=\\\"CitationRef\\\"\\u003e2020\\u003c/span\\u003e) applied autoencoders to the same dataset and used reconstruction error and cross-entropy using autoencoders and proved that sudden and gradual drift can be detected with autoencoders. All these methods are limited to change detection in data distribution and do not consider the classification scenario without considering the impact of changes in data distribution on the classifier\\u0026rsquo;s decision boundary. Autoencoder based Drift Detection (ADD) (Menon \\u0026amp; Gressel, \\u003cspan citationid=\\\"CR40\\\" class=\\\"CitationRef\\\"\\u003e2021\\u003c/span\\u003e) is another recent work which uses autoencoders to detect drift in phishing data. To detect drift, reconstruction loss is compared with user defined thresholds and Hoeffding\\u0026rsquo;s tree is used as a classifier. The author has showed significant improvement in accuracy after drift detection and adaptation. However, this work too has some limitations like using a single autoencoder to model the distribution of all the classes in a classification dataset, use of the same thresholds for all the datasets and not considering the possibility of false positives. Another autoencoder based drift detection method which considers a classification scenario is proposed by (Castellani et al., \\u003cspan citationid=\\\"CR6\\\" class=\\\"CitationRef\\\"\\u003e2021\\u003c/span\\u003e) and uses a constrained low-dimensional embedding of the input data. The proposed method shows the effectiveness of autoencoders in learning the distribution of data and detecting real drifts while ignoring the virtual drifts.\\u003c/p\\u003e \\u003c/div\\u003e \\u003c/div\\u003e \\u003cdiv id=\\\"Sec9\\\" class=\\\"Section2\\\"\\u003e \\u003ch2\\u003e2.3 Unsupervised Drift Detection Methods\\u003c/h2\\u003e \\u003cp\\u003eAlgorithms in unsupervised drift detection methods usually maintain two windows namely reference(historical) window and detection window (new data) and use a distance measure to quantify the difference between the distribution of historical data and new data. Historical window is keep fixed while detection window is a sliding. If the difference in data distributions of two windows is significant, then a drift is detected with an indication of drift points (Lu et al., \\u003cspan citationid=\\\"CR38\\\" class=\\\"CitationRef\\\"\\u003e2019\\u003c/span\\u003e). Unsupervised drift detection is also known as \\u0026ldquo;data distribution-based drift detection\\u0026rdquo; or \\u0026ldquo;implicit drift detection\\u0026rdquo;. Unsupervised drift detection methods have been broadly classified into batch-based and online-based methods (Gemaque et al., \\u003cspan citationid=\\\"CR18\\\" class=\\\"CitationRef\\\"\\u003e2020\\u003c/span\\u003e). If drift is detected based on a batch of data elements as a detection window, then these methods are called batch-based drift detection methods and if drift is detected based on each individual instance in the detection window, then it is called as online drift detection.\\u003c/p\\u003e \\u003cdiv id=\\\"Sec10\\\" class=\\\"Section3\\\"\\u003e \\u003ch2\\u003e2.3.1 Batch-Based Unsupervised Drift Detection Methods\\u003c/h2\\u003e \\u003cp\\u003eMargin Density Drift Detection (MD3) (Sethi \\u0026amp; Kantardzic, \\u003cspan citationid=\\\"CR53\\\" class=\\\"CitationRef\\\"\\u003e2015\\u003c/span\\u003e) uses a trained SVM classifier with a known set of minimum and maximum density values [\\u0026#120588;\\u003csub\\u003emin\\u003c/sub\\u003e, \\u0026#120588;\\u003csub\\u003emax\\u003c/sub\\u003e] along with a threshold θ\\u0026#120588;. For an incoming batch of data, MD3 checks every instance whether it lies in margins or not and counts number of instances lying in the margin. It compares this count with previous \\u0026#120588;\\u003csub\\u003emin\\u003c/sub\\u003e, \\u0026#120588; \\u003csub\\u003emax\\u003c/sub\\u003e values and updates \\u0026#120588;\\u003csub\\u003emin\\u003c/sub\\u003e, \\u0026#120588; \\u003csub\\u003emax\\u003c/sub\\u003e for the current batch. If \\u0026#120588;\\u003csub\\u003emax -\\u003c/sub\\u003e \\u0026#120588; \\u003csub\\u003emin\\u003c/sub\\u003e \\u0026gt; θ\\u0026#120588; then a drift is detected. One major problem with MD3 is that it is classifier dependent and works only with SVM. (Sethi \\u0026amp; Kantardzic, \\u003cspan citationid=\\\"CR54\\\" class=\\\"CitationRef\\\"\\u003e2017\\u003c/span\\u003e) proposed a classifier-independent version of MD3 which monitors blind spots densities of multiple classifiers and if there is a considerable disagreement between individual classifiers then it is an indication of a high uncertainty. It uses margin density in the case of linear SVM and blind-spot density in case of other classifiers like decision trees and nearest neighbors as base learners in an ensemble. A significant difference between margin or blind-spot densities of two data windows (reference and detection window) indicates a drift in the dataset. This modified MD3 technique is referred to as MD3-RS (Random Subspace). A drift detection method based on dissimilarity in regional densities NNDVI ( Nearest Neighbour based Density Variation Identification) was proposed by (A. Liu et al., \\u003cspan citationid=\\\"CR35\\\" class=\\\"CitationRef\\\"\\u003e2018\\u003c/span\\u003e) which uses K-Nearest Neighbour ( KNN) to identify the variation in regional densities and to detect drift. (Qahtan et al., \\u003cspan citationid=\\\"CR48\\\" class=\\\"CitationRef\\\"\\u003e2015\\u003c/span\\u003e) proposed a PCA based drift detection method for multidimensional data streams which uses principal component analysis to project the high dimensional data into a lower dimensional space and then uses density estimation to compare two windows for drift detection. HDDDM (Hellinger Distance based Drift Detection Method)(Ditzler \\u0026amp; Polikar, \\u003cspan citationid=\\\"CR9\\\" class=\\\"CitationRef\\\"\\u003e2011\\u003c/span\\u003e) is another batch based drift detection method which uses Hellinger distance between a reference and a detection window to detect drift. A KS (Kolmogorov Smirnov ) test based drift detection (Z. Wang \\u0026amp; Wang, \\u003cspan citationid=\\\"CR64\\\" class=\\\"CitationRef\\\"\\u003e2020b\\u003c/span\\u003e) another batch based method which uses KS test to compare the distributions of two batches and signals drift if the difference is significant based on the computed p-value and chosen significance level.\\u003c/p\\u003e \\u003c/div\\u003e \\u003cdiv id=\\\"Sec11\\\" class=\\\"Section3\\\"\\u003e \\u003ch2\\u003e2.3.2 Online-based Unsupervised Drift Detection Methods\\u003c/h2\\u003e \\u003cp\\u003eAn online drift detection method based on an incremental KS-test (Dos Reis et al., \\u003cspan citationid=\\\"CR12\\\" class=\\\"CitationRef\\\"\\u003e2016\\u003c/span\\u003e) tests whether two samples belong to the same data distribution or not .The hypothesis test is applied with the addition of each new sample in the detection window. KSWIN (Kolmogorov- Smirnov Windowing) (Raab et al., \\u003cspan citationid=\\\"CR49\\\" class=\\\"CitationRef\\\"\\u003e2020\\u003c/span\\u003e) is another online version of KS based drift detection which uses a fixed-size sliding window ψ divided into two sub windows R (recent concept) and W (last concept) of the same size \\u003cb\\u003er\\u003c/b\\u003e \\u003cem\\u003e.\\u003c/em\\u003e The elements of W are sampled uniformly from \\u003cb\\u003en-r\\u003c/b\\u003e part of the ψ (where n is the size of ψ) and last \\u003cb\\u003er\\u003c/b\\u003e represent the recent concept R. If two windows R and W differ significantly then a drift is detected.\\u003c/p\\u003e \\u003c/div\\u003e \\u003c/div\\u003e \\u003cdiv id=\\\"Sec12\\\" class=\\\"Section2\\\"\\u003e \\u003ch2\\u003e2.4 Summary of Literature Review\\u003c/h2\\u003e \\u003cp\\u003eThe above literature review has been provided on the most common and popular drift detection methods and summarized in Table\\u0026nbsp;\\u003cspan refid=\\\"Tab1\\\" class=\\\"InternalRef\\\"\\u003e1\\u003c/span\\u003e. The characteristics of drift detection techniques are summarized in Table\\u0026nbsp;\\u003cspan refid=\\\"Tab2\\\" class=\\\"InternalRef\\\"\\u003e2\\u003c/span\\u003e.\\u003c/p\\u003e \\u003cp\\u003e \\u003cdiv class=\\\"gridtable\\\"\\u003e\\u003ctable float=\\\"Yes\\\" id=\\\"Tab2\\\" border=\\\"1\\\"\\u003e \\u003ccaption language=\\\"En\\\"\\u003e \\u003cdiv class=\\\"CaptionNumber\\\"\\u003eTable 2\\u003c/div\\u003e \\u003cdiv class=\\\"CaptionContent\\\"\\u003e \\u003cp\\u003eSummary of Drift Detection Techniques\\u003c/p\\u003e \\u003c/div\\u003e \\u003c/caption\\u003e \\u003ccolgroup cols=\\\"5\\\"\\u003e \\u003cdiv align=\\\"left\\\" class=\\\"colspec\\\" colname=\\\"c1\\\" colnum=\\\"1\\\"\\u003e\\u003c/div\\u003e \\u003cdiv align=\\\"left\\\" class=\\\"colspec\\\" colname=\\\"c2\\\" colnum=\\\"2\\\"\\u003e\\u003c/div\\u003e \\u003cdiv align=\\\"left\\\" class=\\\"colspec\\\" colname=\\\"c3\\\" colnum=\\\"3\\\"\\u003e\\u003c/div\\u003e \\u003cdiv align=\\\"left\\\" class=\\\"colspec\\\" colname=\\\"c4\\\" colnum=\\\"4\\\"\\u003e\\u003c/div\\u003e \\u003cdiv align=\\\"left\\\" class=\\\"colspec\\\" colname=\\\"c5\\\" colnum=\\\"5\\\"\\u003e\\u003c/div\\u003e \\u003cthead\\u003e \\u003ctr\\u003e \\u003cth align=\\\"left\\\" colname=\\\"c1\\\" morerows=\\\"1\\\" rowspan=\\\"2\\\"\\u003e \\u003cp\\u003eComparison Criteria\\u003c/p\\u003e \\u003c/th\\u003e \\u003cth align=\\\"left\\\" colspan=\\\"4\\\" nameend=\\\"c5\\\" namest=\\\"c2\\\"\\u003e \\u003cp\\u003eDetection Approach\\u003c/p\\u003e \\u003c/th\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003cth align=\\\"left\\\" colname=\\\"c2\\\"\\u003e \\u003cp\\u003eSupervised\\u003c/p\\u003e \\u003c/th\\u003e \\u003cth align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eSemi-Supervised\\u003c/p\\u003e \\u003c/th\\u003e \\u003cth align=\\\"left\\\" colname=\\\"c4\\\"\\u003e \\u003cp\\u003eUnsupervised\\u003c/p\\u003e \\u003c/th\\u003e \\u003cth align=\\\"left\\\" colname=\\\"c5\\\"\\u003e \\u003cp\\u003eDeep Learning Based\\u003c/p\\u003e \\u003c/th\\u003e \\u003c/tr\\u003e \\u003c/thead\\u003e \\u003ctbody\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c1\\\"\\u003e \\u003cp\\u003eDependency on true labels in detection\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c2\\\"\\u003e \\u003cp\\u003e⎫\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003e\\u0026times;\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c4\\\"\\u003e \\u003cp\\u003e\\u0026times;\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c5\\\"\\u003e \\u003cp\\u003e\\u0026times;\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c1\\\"\\u003e \\u003cp\\u003eDependency on true labels in adaptation\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c2\\\"\\u003e \\u003cp\\u003e⎫\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eLimited\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c4\\\"\\u003e \\u003cp\\u003e⎫\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c5\\\"\\u003e \\u003cp\\u003e⎫\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c1\\\"\\u003e \\u003cp\\u003eClassifier dependency\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c2\\\"\\u003e \\u003cp\\u003e⎫\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003e⎫\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c4\\\"\\u003e \\u003cp\\u003e\\u0026times;\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c5\\\"\\u003e \\u003cp\\u003e\\u0026times;\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c1\\\"\\u003e \\u003cp\\u003eFalse alarms\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c2\\\"\\u003e \\u003cp\\u003e\\u0026times;\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003e⎫\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c4\\\"\\u003e \\u003cp\\u003e⎫\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c5\\\"\\u003e \\u003cp\\u003eunder research\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c1\\\"\\u003e \\u003cp\\u003eTypes of drift detected\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c2\\\"\\u003e \\u003cp\\u003eSurely Real\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eProbably Real\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c4\\\"\\u003e \\u003cp\\u003eProbably virtual\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c5\\\"\\u003e \\u003cp\\u003eUnder research\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c1\\\"\\u003e \\u003cp\\u003eSignal Analyzed\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c2\\\"\\u003e \\u003cp\\u003eUnivariate\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003eUnivariate\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c4\\\"\\u003e \\u003cp\\u003eMultivariate\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c5\\\"\\u003e \\u003cp\\u003eUnivariate\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003ctr\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c1\\\"\\u003e \\u003cp\\u003eAbility to summarize high dimensional data\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c2\\\"\\u003e \\u003cp\\u003e\\u0026times;\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c3\\\"\\u003e \\u003cp\\u003e\\u0026times;\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c4\\\"\\u003e \\u003cp\\u003eLimited\\u003c/p\\u003e \\u003c/td\\u003e \\u003ctd align=\\\"left\\\" colname=\\\"c5\\\"\\u003e \\u003cp\\u003eInherent\\u003c/p\\u003e \\u003c/td\\u003e \\u003c/tr\\u003e \\u003c/tbody\\u003e \\u003c/colgroup\\u003e \\u003c/table\\u003e\\u003c/div\\u003e \\u003c/p\\u003e \\u003cp\\u003eThe properties of an ideal drift detector can be summarized as follows:\\u003c/p\\u003e \\u003cp\\u003e \\u003col\\u003e \\u003cspan\\u003e \\u003cli\\u003e \\u003cp\\u003eAn ideal drift detector should be as reliable as is the drift detection based on supervised drift detection techniques.\\u003c/p\\u003e \\u003c/li\\u003e \\u003c/span\\u003e \\u003cspan\\u003e \\u003cli\\u003e \\u003cp\\u003eDrift detection process should not be dependent on class labels as in case of unsupervised drift detection techniques.\\u003c/p\\u003e \\u003c/li\\u003e \\u003c/span\\u003e \\u003cspan\\u003e \\u003cli\\u003e \\u003cp\\u003eAny available labelled should be leveraged in training a drift detector like in semi-supervised drift detection techniques.\\u003c/p\\u003e \\u003c/li\\u003e \\u003c/span\\u003e \\u003cspan\\u003e \\u003cli\\u003e \\u003cp\\u003eThe power of deep learning should be used to summarize high dimensional data.\\u003c/p\\u003e \\u003c/li\\u003e \\u003c/span\\u003e \\u003c/ol\\u003e \\u003c/p\\u003e \\u003cp\\u003eKeeping in view the derived properties of an ideal drift detector, we propose an Autoencoder based Drift Detection Method (AEDDM) which works in batches and the drift detection is done in completely unsupervised way with a high confidence that the detected drift is real. In the next section, we provide theoretical aspects of AEDDM including a autoencoders and batch based drift detection.\\u003c/p\\u003e \\u003c/div\\u003e\"},{\"header\":\"3 Theoretical Aspects\",\"content\":\"\\u003cp\\u003eThe proposed AEDDM approach for drift detection is an \\u003cem\\u003eautoencoder\\u003c/em\\u003e based approach where drift detection is done in a \\u003cem\\u003ebatch\\u003c/em\\u003e manner. Both concepts are briefly described in this section.\\u003c/p\\u003e \\u003cdiv id=\\\"Sec14\\\" class=\\\"Section2\\\"\\u003e \\u003ch2\\u003e3.1 Autoencoder\\u003c/h2\\u003e \\u003cp\\u003eAn autoencoder is an artificial neural network that learns efficient data encodings for the input data by ignoring the noise to re-generate the input at the output layer (Goodfellow \\u003cspan citationid=\\\"CR19\\\" class=\\\"CitationRef\\\"\\u003e2016\\u003c/span\\u003e; Soppin, Ramachandra, and Chandrashekar \\u003cspan citationid=\\\"CR57\\\" class=\\\"CitationRef\\\"\\u003e2021\\u003c/span\\u003e). It uses a set of recognition weights to map the input into a code vector at the hidden layer and then uses a set of generative weights to reconstruct the coded vector into original input at the output layer (Hinton \\u0026amp; Zemel, \\u003cspan citationid=\\\"CR25\\\" class=\\\"CitationRef\\\"\\u003e1994\\u003c/span\\u003e). A simple autoencoder consists of an input layer, one or more hidden layers and an output layer of the same size as of input layer.\\u003c/p\\u003e \\u003cp\\u003e \\u003c/p\\u003e \\u003cp\\u003eIt has an encoder part which consists of an input layer and one or more hidden layers. In the case of more than one hidden layer, the later hidden layers are smaller in size so that the network can encode the original input onto a smaller space. The last hidden layer in the encoder part is called the bottleneck. The decoder part is the exact replica of the encoder part. The encoder layer uses a non-linear function \\u003cem\\u003ef\\u003c/em\\u003e to encode the input layer values to a latent and compressed representation as given by the equation h\\u0026thinsp;=\\u0026thinsp;f(x) while decoding the latent represention, the decoder uses another function \\u003cem\\u003eg\\u003c/em\\u003e to reconstruct the origional input as given by the equation g(h)\\u0026thinsp;=\\u0026thinsp;x\\u003cspan class=\\\"InlineEquation\\\"\\u003e\\u003cspan class=\\\"mathinline\\\"\\u003e\\\\({\\\\prime }\\\\)\\u003c/span\\u003e\\u003c/span\\u003e The reconstruction loss is defined as the mean squarred difference between the original input and the reconstructed input over all training instances and can be represented by Eq.\\u0026nbsp;1. Minimizing the reconstruction loss acts as the objective function in training an autoencoder.\\u003c/p\\u003e \\u003cp\\u003e \\u003cem\\u003eL ( x,x\\u003c/em\\u003e \\u003cspan class=\\\"InlineEquation\\\"\\u003e \\u003cspan class=\\\"mathinline\\\"\\u003e\\\\({\\\\prime }\\\\)\\u003c/span\\u003e \\u003c/span\\u003e \\u003cem\\u003e)=\\u003c/em\\u003e \\u003cspan class=\\\"InlineEquation\\\"\\u003e\\u003cspan class=\\\"mathinline\\\"\\u003e\\\\(\\\\frac{1}{n}\\\\sum _{i=1}^{n}{\\\\left({x}_{i}-{x}_{i}^{{\\\\prime }}\\\\right)}^{2}\\\\)\\u003c/span\\u003e\\u003c/span\\u003e \\u003cem\\u003eEq.\\u0026nbsp;1\\u003c/em\\u003e\\u003c/p\\u003e \\u003cp\\u003eConsider an autoencoder with only one hidden layer. Inputs are encoded to a latent representation at the hidden layer by using a nonlinear activation function as given by the equation h\\u0026thinsp;=\\u0026thinsp;σ (Wx\\u0026thinsp;+\\u0026thinsp;b) where σ is an element-wise sigmoid or Rectified Linear Unit (ReLU) activation function, W and b are weight and bias vectors respectively, which are initialized randomly during the training phase. Decoding takes place through decoder by using the encoded representation at the bottleneck and is given by the equation \\u003cspan class=\\\"InlineEquation\\\"\\u003e\\u003cspan class=\\\"mathinline\\\"\\u003e\\\\({X}^{{\\\\prime }}\\\\)\\u003c/span\\u003e\\u003c/span\\u003e= \\u003cspan class=\\\"InlineEquation\\\"\\u003e\\u003cspan class=\\\"mathinline\\\"\\u003e\\\\({\\\\sigma }^{{\\\\prime }}\\\\left({W}_{h}^{{\\\\prime }}+b\\\\right)\\\\)\\u003c/span\\u003e\\u003c/span\\u003e. During the forward pass in training through backpropagation, difference is calculated between the original input X and reconstructed input X\\u003cspan class=\\\"InlineEquation\\\"\\u003e\\u003cspan class=\\\"mathinline\\\"\\u003e\\\\({\\\\prime }\\\\)\\u003c/span\\u003e\\u003c/span\\u003e and weights and biases are updated in the backward pass based on the computed error. The training continues till the number of epochs elapses and objective function is minimized.\\u003c/p\\u003e \\u003c/div\\u003e \\u003cdiv id=\\\"Sec15\\\" class=\\\"Section2\\\"\\u003e \\u003ch2\\u003e3.2 Batch-based Drift Detection\\u003c/h2\\u003e \\u003cp\\u003eIn batch-based drift detection, the streaming data is accumulated in small batches of fixed size and drift detection is done in a batch manner. A general framework for unsupervised batch-based drift detection adapted from (Gemaque et al., \\u003cspan citationid=\\\"CR18\\\" class=\\\"CitationRef\\\"\\u003e2020\\u003c/span\\u003e) and (A. Liu et al., \\u003cspan citationid=\\\"CR35\\\" class=\\\"CitationRef\\\"\\u003e2018\\u003c/span\\u003e) with slight modifications is shown in Fig.\\u0026nbsp;\\u003cspan refid=\\\"Fig2\\\" class=\\\"InternalRef\\\"\\u003e2\\u003c/span\\u003e. It consists of four modules namely offline training phase, online data accumulation phase, distribution comparison phase and a significance test phase.\\u003c/p\\u003e \\u003cp\\u003e \\u003c/p\\u003e \\u003cp\\u003eIn offline training phase, distribution parameters are computed from the available data ( reference window) like computation of margin densities (Sethi \\u0026amp; Kantardzic, \\u003cspan citationid=\\\"CR54\\\" class=\\\"CitationRef\\\"\\u003e2017\\u003c/span\\u003e) and reconstruction error (Castellani et al. \\u003cspan citationid=\\\"CR6\\\" class=\\\"CitationRef\\\"\\u003e2021\\u003c/span\\u003e;Jaworski, Rutkowski, Angelov, et al. \\u003cspan citationid=\\\"CR32\\\" class=\\\"CitationRef\\\"\\u003e2020\\u003c/span\\u003e) which are used to define different thresholds. In module 2, incoming data stream is divided into batches of fixed size and a distribution comparison is made for each batch with respect to the reference window in module 3, while the significance of the difference is tested in module 4 with the help of a statistical test to decide whether the incoming batch has a different distribution as compared to the reference window. The proposed AEDDM method follows a similar framework which is described in the next section.\\u003c/p\\u003e \\u003c/div\\u003e\"},{\"header\":\"4 The Proposed Approach: Autoencoder based Drift Detection Method (AEDDM)\",\"content\":\"\\u003cp\\u003eThe proposed AEDDM framework follows a batch-based semi-supervised drift detection mechanism. At the architectural level, it has three components; an offline component where two autoencoders are trained on labelled data for each binary class problem and thresholds are computed; an ensemble component which defines the sequential order of the autoencoders; and an online component where data arrives in batches and drift detection is performed for the whole batch data stream.\\u003c/p\\u003e\\n\\u003cp\\u003eDuring the offline training phase (see Fig. \\u003cspan class=\\\"InternalRef\\\"\\u003e4\\u003c/span\\u003e), the available labeled dataset is divided into positive and negative class data based on labels in the dataset. Both positive and negative class data are split up into training (training \\u0026amp; validation) and validation sets. Two autoencoders are trained, one for each class. In case autoencoder is to be used as a classifier, one autoencoder can be used but to learn the data distribution of each class perfectly, we need two autoencoders each trained on individual class data. An autoencoder architecture with five layers (Input, H1, Bottleneck, H1, Output) is used to train the autoencoders.\\u003c/p\\u003e\\n\\u003cp\\u003eFor threshold computation, the validation data of each class is divided into batches of size 32 and passed to the respective autoencoder. Reconstruction loss for each instance in a batch and average reconstruction loss for the whole batch are computed. Using these reconstruction loss values, three different thresholds namely \\u003cem\\u003einstance threshold\\u003c/em\\u003e, \\u003cem\\u003ebatch threshold\\u003c/em\\u003e, and \\u003cem\\u003ecount threshold\\u003c/em\\u003e are computed for both positive class and negative class data. \\u003cem\\u003eInstance threshold\\u003c/em\\u003e is computed as \\u003cspan class=\\\"InlineEquation\\\"\\u003e\\u003cspan class=\\\"mathinline\\\"\\u003e\\\\(u+3\\\\sigma\\\\)\\u003c/span\\u003e\\u003c/span\\u003e of reconstruction error values. It is assumed that any data point with reconstruction error values greater than the instance threshold will be a drifted data point. Although reconstruction error values are assumed to follow a normal distribution, it is observed that with small batch size, this assumption may not hold for all the batches depending on the distribution of the data in a batch. To combat this, a configurable parameter \\u003cem\\u003eN\\u003c/em\\u003e is used, which is the number of batches to be considered for instance threshold computation. For N batches, instance threshold is computed as average over N.\\u003c/p\\u003e\\n\\u003cp\\u003eFor each batch in validation data, AEDDM compares the reconstruction loss value for each instance with the instance threshold. The number of instances in a batch exceeding the instance threshold is counted for all the batches. \\u003cem\\u003eCount Threshold\\u003c/em\\u003e is taken as the maximum or median value (\\u003cem\\u003ealpha parameter\\u003c/em\\u003e) It is assumed that in the case of non-drifted data, the number of instances exceeding the instance threshold in a batch will be less than the count threshold. Any batch where count threshold exceeds is assumed to be a drifted batch. The \\u003cem\\u003eBatch Threshold\\u003c/em\\u003e is computed using batch average reconstruction loss values. It is taken as \\u003cspan class=\\\"InlineEquation\\\"\\u003e\\u003cspan class=\\\"mathinline\\\"\\u003e\\\\(u+k\\\\sigma\\\\)\\u003c/span\\u003e\\u003c/span\\u003e (based on experimentation default value of k=3 is chosen) over batch average reconstruction error values. It is observed that for large validation data, batch average reconstruction error values follow a normal distribution with some degree of skewness.\\u003c/p\\u003e\\n\\u003cp\\u003eThe ensemble component decides which autoencoder to place at layer 1 and which one at layer 2 in sequential order. Autoencoder with a lower batch threshold is placed at layer 1, while an autoencoder with a higher batch threshold is placed at layer 2, and corresponding thresholds (batch, instance, and count) are used at respective layers, as shown in Flowchart 1. This assembling of autoencoders is carried out initially when autoencoders are trained, and thresholds are computed from validation data. Every time drift is detected, autoencoders will be re-trained on the most recent data, thresholds will be recomputed, and reassembling of the autoencoders will take place.\\u003c/p\\u003e\\n\\u003cp\\u003eThe detection component in AEDDM works in batch mode. It receives data in batches, processes each batch, and keeps a record of each batch. The available data stream is divided into batches of size 32 and passed to AEDDM Algorithm (see Algorithm 1) along with layer 1 and layer 2 trained autoencoders with corresponding batch thresholds, count thresholds, and instance thresholds (already computed in offline component). Circles in Fig. \\u003cspan class=\\\"InternalRef\\\"\\u003e5\\u003c/span\\u003e indicate the order of execution of different modules in Algorithm 1.\\u003c/p\\u003e\\n\\u003cp\\u003eModule 1 or controller executes first and passes each batch to Module 2 (predict_for_each_batch), which computes reconstruction loss for each instance in the batch. Each reconstruction error value is compared with the instance threshold, and the number of instances exceeding the layer 1 instance threshold (exceed_count_layer1) is counted. The average batch reconstruction error (avg_error_layer1) for each batch is also computed. If the avg_error of a batch exceed\\u003cem\\u003es layer_one_batch_thres and exceed_count_layer1\\u003c/em\\u003e exceeds \\u003cem\\u003elayer_one_count_threshold\\u003c/em\\u003e, then that batch is passed to \\u003cem\\u003elayer_two_encoder\\u003c/em\\u003e. For each instance, reconstruction error is computed from layer_two_encoder prediction, and this error is compared with layer2_ins_thresh to compute exceed_count_layer2. Average batch reconstruction error \\u003cem\\u003eavg_error_layer2\\u003c/em\\u003e is also computed for this batch, and if this \\u003cem\\u003eavg_error_layer2\\u003c/em\\u003e and \\u003cem\\u003eexceed_count_layer2\\u003c/em\\u003e both exceed their respective thresholds (\\u003cem\\u003elayer_two_batch_thres\\u003c/em\\u003e and \\u003cem\\u003elayer_two_count_threshold\\u003c/em\\u003e), then this batch is assumed to be a drifted batch, and its index is appended to \\u003cem\\u003eall_excede_list\\u003c/em\\u003e. Module 2 returns the outputs (see step 2.1.6 in Algorithm1) for each batch back to Controller, where it is stored in batch history. After all available batches have been processed, AE-DDM calls the Drift Detector (Module 3) to detect drift. The Drift Detector module takes batch average reconstruction error, exceed count, batch threshold and count threshold of layer 2 autoencoder. It compares batch average reconstruction error and exceeds count for each batch from batch history with batch threshold and count threshold. If three consecutive batches exceed both thresholds, then drift is confirmed, and if a single batch exceeds these thresholds, a warning is generated. Step 3(a) can be used in \\u003cem\\u003eAND\\u003c/em\\u003e or \\u003cem\\u003eOR\\u003c/em\\u003e settings and it is named as the \\u003cem\\u003eBeta Parameter\\u003c/em\\u003e of AEDDM. Based on experimentation the default value of beta is taken as \\u0026ldquo;AND\\u0026rdquo;. The next section describes the experiments in detail.\\u003c/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"data:image/png;base64,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3//+dxp11FHTH//4xzTEEEO0Eh7RlkAgEAgEAoFAIBAIBNpEoMeJ05tvvpmmmWaatO+++6Y99tgjDTPMMN06PN9++2268847cyDOGWaYIQ055JDdWn9XK/vqq6/SG2+8kTEYbrjhulpdevLJJ9Mkk0ySRh999C7X1Vsq+OyzzxI5m2222TrVJZPiu+++S1NOOWWn7u+tN/3nP/9Jjz32WFpooYU61cV33303ff7552n66afv1P0D6yayQKcsu+yyXWrC999/n1577bU0wQQTpFFGGaXhur744os8zxdZZJGG72n0wv79+yf1k/VW05Ud9eGdd95JX375ZZpuuuk6urTd79966630zTffNC2X9LiF/6STTtql58fNgx4CPU6cXn/99TTFFFPkqJt77713GnbYYbsVNZOJgltttdXSnnvu2W3EjMI7+uijE+WnbL/99mnWWWf9Xdt51G6//fY00UQTpWmnnfZ33+v/BRdckHbYYYduITvI5zrrrJNmmmmmbsVxUK7s2WefTRdddFE67LDDOtWNa665Jn300Udp880379T9jd708MMPZ4K28MILN3rLQL3u/fffTzvvvHO6+OKLO9WOm266KT3//PNp991379T9A+umDz/8MC2//PLp0Ucf7bAJd999d/rDH/6Q5pprrt9d+8knn6QzzzwzrbDCCmnqqaduty5G+YEHHkgyMrz00ktpr732SldffXWHz2/2AoTw5ZdfTltssUW36cp6bXj88cfTxx9/nJZeeulmm9jm9dddd11ehJLJjsomm2ySzjrrrLqXkWd2oyO5LIvyWWaZJY0//vjpwgsvzGST/o0yeCEw0InTeuutlxXNSCONlG655Za8mj344IOT1S3yQ+ApkOeeey6ttdZa2VP14osvpt122y2ttNJKecJffvnlmYSde+656Ygjjkg33nhjGnHEEfOq7pVXXkknnHBCuuGGG5KJ1sxKryoK2nDggQem0047LTF4Viny89V6jRCrE088Mc0888xpscUWC+I0EObToEKcEOivv/46bbXVVgMBpeYfGcSpY+J06qmn5mMIdFVtaYY4IWlnn312Ul9vIE50dL9+/dJf/vKX5gWvjTuaIU5DDTVU+vnnn7tEnHjmTjrppEx8eU2DOHXbUA5yFQ104oRcPPLII2mMMcZIv/76azYkPAWLL754mm+++bILdayxxsq/bcGYgJNNNlnaaKONsgAjM6ecckraZptt0rXXXpuVzYAmTrfddltuJ6+T1Y7n8RwgaKONNlpaY401sifNalG7ECyudi56q55DDz008TwhXzxGroEBkogwUrr65brzzjsve66OPfbYultHxeN0xx13pH/84x/pxx9/zKtjdSGhn376aXYnI5nHH398fu6WW26ZV0p///vfM7mjnC+77LJkG1Gbagvs9dVqGvH861//mkktF/mSSy6ZV8JWXcbNyg25ve+++/KY3nXXXfksW706eQSvv/767IHkzVOfLQMrOkT1jDPOyPUjxMccc0zGZp999kmzzz572m677fKzJp544qzMuMu33nrrdO+99+a/1alf999/f15JMvqbbbZZvu/www9PTz31VF6tItS1W3LF42T8JHLkJTHexl2/jDUDwBBusMEGmUzDG7a2YI877rhsJOQx0g/eVc+uFvWom8yrw6rfWBprWFsYzDjjjLkPlLT2WxzwaK677roZY4uDalGXNvBOPPHEExkHfTn//POTiX7ppZem8cYbL2MNQ7/Vr+gbw6JNVtZzzjlnxt/W2i677JJ4DMgKWVCfhN7aa+FgTNZee+08HxkoC6GTTz45j3+1FI8Tb4x5QzanmmqqLJdrrrlmvmfeeefN42OuLLjggmnHHXdMTz/9dPrzn/+cvzf/Ec733nsvz7dFF130f54BH20zf8izNlvImEcvvPBCHu8+ffqkK6+8Mo0zzjh57DzPfDB/6nlEeJx8butXH4yXMSWTp59+ep5zO+20U1p55ZWzp0ld2qV9ZJxXRzEmnsEjTXZ5Gj1/6KGH/p8+kMtlllkm2UajBzfddNPcB8cajANdAC+5Qcm7ft56663ZE3jkkUfm9pirFqPbbrttlnU6ST9rS9XjRO/07ds3j785bbvbveok88YAbmQfsTNG5h4ZodfMdbqMfqgW166yyip5/pIv1+vTPPPMk2WI3OgvbHhyfvnll/yMH374IX9OT9GrtYW+dw+7YL5pmzlBXt9+++009thjZ9zgBRteefOGPqSTFfLlOoutSy65JD/HmJgftUUfzcsRRhghj//www+f5dHcMp62ouFHPs0n8kAv2F2gVy2mfUcWLfDHHXfc3LfObn0PcmyjFzW4JYiTCYL8IBuMBC8S4UecKFLMniAiS35MuraIE+Gk5CiW7tyqYwA3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EyfeJSlz4COJcyFO0047bR4LOMIL3p71/vvv5+e5HnaK/gmsuvrqq+dUPRdddFEi9IKoqjtKIBAIBAKBQCDQDAI9TpxK49Zbb7207bbbDjDitOaaa+Yo4LZoGG1eJt6jZ555Jue522uvvXIePGlbbMdNM800afLJJ08HH3xwbiJjblvHb8TJ9XLe2bY7++yzE+N+9dVX54jmjLO/kQXEiacEIVMQMR4P5AJZ8Pc111yTo5b7X9l///3zc7V5scUWS2eccUY2/GuttVaacMIJ0zrrrJPbjjggmtLKjDXWWPl6uftOO+203E7baCKpI4varN/6qA22vrRN20u55ZZb0qWXXprbrT7eGHkCtQ8Z0dcbb7wxDTfccEmKHERK3XAS9R1pRGCOPfbYvJU5wwwz5OummGKKjDsii+gtssgiOeK7/u600075fkTM+Eilc9JJJ+W28+Ydf/zx6Zdffsnt9BtuSKL7Vltttexx0oaLL744txv52mqrrfI43HXXXTkpNNmaa665cjd5GC+//PK02WabZeJp3Hgkd9lll0z2ogQCgUAgEAgEAs0g0KuJE2KGOJx44onZ+PKYMM5y3fnhRUJQeCQQJ8TokEMOSbaj7r777nTVVVdlY18lTk8//XTG95///GcmBrvttlv2XvCkIRtIGMNty1C59dZbk61JaWDU9eqrr+bEwv5HPA4//PBs7O+///66xGnGGWfMhp4nZ/31189kBlGxTWe76ZRTTsntQ1qQD94dJMZz1Y2g2JZEuHzO+1QtPEcIyMsvv5z69u2bLrzwwky0EAvt1GYE47333sttfuyxxzIRKcSJp8hW52STTZa9Ossuu2wmX9os7Q0vEE8PLyPiJuXOJJNMkvug3yussEImQbxYxgZ28hMiTvrFS4XQIUfG7IADDkjnnHNO/hzexsAz9fOtt97K4zLqqKP+1kV9srWoP7B58skn87j6X9qeKIFAIBAIBAKBQDMI9GrihDAxoogR7wbvR3vECWFAYPbdd9/8gxTZzqklTrbvGO+999472apyVmvhhRfO5AsxseVla0lhtHmkJBpWbCPKncczg0ggITwoCEk9jxPPie8QkEUXXTSTmypx4qGxZWVbS0EEJTTm8fFM7bcNiBDBwxZYOZu06aabZsLFI6S/V155ZW6P+hA/3ihbc7bDECj1qbf2jNM999yTSRLvF48e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BIF5RCDEaR5nNWMKAkEgCASBIBAEZoJAiNNMYE2jQSAIBIEgEASCwDwiEOI0j7OaMQWBOUDg7W9/+2iXXXYZ3e52t2uj+fWvf91OndE82nLLLUfvfve7R5ttttmG3+dgyBlCEAgCawCBEKc1MEnpYhCAgOPxjr/7o73Xve7Vaqt17fe//30TSvzsZz/bir1e//rXvxpwit3SI6IHRK26a4jJs5/97FamZN999x099KEPXVHglVEhH/D0pz+99UPfqXxT1r72ta89uu997zs66qijWvFeRCoWBIJAEFgOBEKclgPlPCMITAEBqtXKelCbpldEzbpbWoMQpJIdSodQxKaE3bXf/va3o9e97nWjt771re39gw8++Crv3/Oe9xwdcsgho7322qsVrlUCZCWtT5z+53/+Z6QMCt0k0aijjz56dP7557cCv7EgEASCwHIhEOK0XEjnOUFgSgggEPvvv38TYuzXTqOSTUyREGOfOF188cXtHmRLYdluROnzn/98K4T7rne9q/VSBGeLLbaYSo/VeiMsqQAtAUfikWeeeWaruUYA8oILLmhlS9SFE1FTauTmN795q7/WjziJkh166KGtJltFoNRx23777afS1zQSBIJAENgYAiFOG0Mo7weBVYbARz7ykVactkhOt3vjiNNPfvKT0ZFHHjl6xjOe0aJSfeJEmVoEx34iKtuiWhS3N9WkFx/3uMeNfvrTn47uf//7t/IoO+20U1PaFvmijG2v0llnnTV673vf20qXPP/5zx/d6la3Gt35znceJE5SdZdccknrH7XtpOk2dZZyfxAIAotBIMRpMWjl2iCwwgiI3igloqhsFYidhDgpGnvEEUe0Irhf/OIXWypO5Mfma4Y4SX+dfPLJo6997Wujxz/+8aNzzz13k0ertIi04p/+6Z+OpALZDjvs0Gq0IUD6gsgZ04c+9KF2zZvf/OZGmob2OIk4hTht8rSkgSAQBDYBgRCnTQAvtwaB5UTgF7/4RUuvvfCFL2y11pwo69u4iJON3yJJ7BWveMVo2223HT3mMY8ZXec612mvieAoPCttppabdJ96b5tq//u//9tI2BVXXNGiSmXPe97z2ib1LnFScHefffbZsD/L5u+hVF2I06bOSu4PAkFgUxAIcdoU9HJvEFhGBI4//vhGesqkwBzNf9/73tdOw4nYSMeV2Sv0ne98Z4S8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EFhbBIo4rS2+lXshUAgUAoVAIVAIbCIEijhtos6sphQChUAhUAgUAoXA2iJQxGlt8d1yuX/uc58bvvvd7w5/+qd/uuHb/olPfGL46U9/Ouy1117r0pb//u//Hk4++eThzne+8/Dbv/3bM9fhDW94w/D+979/eNSjHjXstttuM7+3nAfV8fjjjx8++clPDk9/+tOHa17zmsvJpr3zxS9+cTjnnHOGO93pTsvOY/zid77zneFjH/tYk8fLXOYyq5bvZsno61//+vDlL395uMMd7jBc4hKXWFGznvOc5wzPeMYzVpSHl4855pjhLne5y3DlK195xXmtJIP//d//Hd71rncNN7rRjYaddtpppqzOP//84dhjjx0e85jHzPR8PbQxESjiNAf99h//8R/NyH3mM58Zdt111+GUU065WK2+8IUvDE94whOGr33ta8Pee+89vPKVr5y51t/85jfbIP785z8//MVf/MXwyEc+cnjjG984/M7v/E4zUL/2a782c16THmQ4/+7v/m641a1uNdz0pjcd3vGOdwzf+MY3hsc+9rEryrd/+Yc//OHwl3/5l8OrXvWqVctzloxOOOGE4fvf/37DbKXpb/7mb4b/+q//Gp72tKctmNVnP/vZwc/973//4YILLhj+6q/+anjSk540XPWqV52pCt/+9rcbTvr2Bje4wXDpS196pveW+9BXv/rV4c1vfvNw17vedbje9a43/MZv/MbMWf3P//zPcNJJJw3XuMY1hlvf+tbDu9/97uFf//Vfm5yuVvq3f/u34fWvf/3w6Ec/ejjqqKMakfyzP/uzX8l+3333HV760pc2nB/3uMc1sopMrGbac889B6T293//91cz2zZRuf3tbz+8733vWzLZ+PSnPz188IMfbG3+9V//9QXrdeKJJzYCf8c73nHic7e85S0bgZ6UkKFzzz13JmL1oAc9aHjqU586nH322YPJizFwqUtdalUxm5YZXWO80bE/+9nPhiOOOGLYZ599hpvf/OYzlW+M//mf//nw93//9zM9Xw9tTASKOM1Bv733ve9tCu/GN75xIxwU7L3vfe+Lasag/N7v/V6b+dzvfvcbnvKUpww3vOENZ6r5cccd1ww2Y/TgBz94+Nu//dvhyCOPHC5/+csPd7vb3Vq+P/jBDwYKQ1IPCvR73/teM9y//OUvh9/93d9tz/zkJz8ZLnnJ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\\\" width=\\\"590\\\" height=\\\"712\\\"\\u003e\\u003cbr\\u003e\\u003c/p\\u003e\"},{\"header\":\"5 Experimental Results and Evaluation\",\"content\":\"\\u003cp\\u003eThis section provides the experimental evaluation of the proposed AEDDM method for drift detection. The AEDDM approach has been tested on three sets of experiments from three different perspectives. Firstly, evaluating the proposed approach for sudden and gradual drift detection on synthetic datasets; Secondly, testing it on drift-induced real-world datasets from real and virtual (as well as from sudden and gradual) drift point of view and thirdly comparing the proposed approach with other similar state-of-the-art in an online classification scenario using Hoeffding Tree classifier. The experimental evaluation is aimed at empirically showing that the proposed method can detect sudden and gradual drifts, the detected drift is real thus minimizing the false alarms. Section \\u003cspan class=\\\"InternalRef\\\"\\u003e5.1\\u003c/span\\u003e describes the datasets used in this research along with other experimental settings, sections \\u003cspan class=\\\"InternalRef\\\"\\u003e5.2\\u003c/span\\u003e show experiments on synthetic datasets, Section \\u003cspan class=\\\"InternalRef\\\"\\u003e5.3\\u003c/span\\u003e details the experiments on real world drift induced datasets while Section 5.4 compares the classification performance of AEDDM using Hoeffding tree classifier in an online setting.\\u003c/p\\u003e\\n\\u003cdiv id=\\\"Sec18\\\" class=\\\"Section2\\\"\\u003e\\n \\u003ch2\\u003e5.1 Datasets and Experimental Settings\\u003c/h2\\u003e\\n \\u003cp\\u003eThe proposed approach is evaluated on four synthetic datasets including Rotating Hyperplane (Haixun Wang et al., \\u003cspan class=\\\"CitationRef\\\"\\u003e2003\\u003c/span\\u003e,Fan, \\u003cspan class=\\\"CitationRef\\\"\\u003e2004\\u003c/span\\u003e), Moving RBF (Losing et al., \\u003cspan class=\\\"CitationRef\\\"\\u003e2017\\u003c/span\\u003e,Menon \\u0026amp; Gressel, \\u003cspan class=\\\"CitationRef\\\"\\u003e2021\\u003c/span\\u003e), GAUSSIAN and Varying Distributions (VD) and four real -world datasets including NOAA, Covertype, KDDCUP99 and ELEC2. These datasets have been briefly described below: -\\u003c/p\\u003e\\n \\u003cp\\u003e\\u003cstrong\\u003eRotating Hyperplane\\u003c/strong\\u003e\\u003c/p\\u003e\\n \\u003cp\\u003eA hyperplane with d dimensions is represented by the equation \\u003csub\\u003ei\\u003c/sub\\u003e x\\u003csub\\u003ei\\u003c/sub\\u003e =w\\u003csub\\u003e0\\u003c/sub\\u003e, If w\\u003csub\\u003ei\\u003c/sub\\u003e x\\u003csub\\u003ei\\u003c/sub\\u003e\\u0026thinsp;\\u0026gt;\\u0026thinsp;=\\u0026thinsp;w\\u003csub\\u003e0\\u003c/sub\\u003e then instances are labeled as positive otherwise negative. (Hulten et al., \\u003cspan class=\\\"CitationRef\\\"\\u003e2001a\\u003c/span\\u003e). A change in classification boundary is introduced by changing the weights of the features gradually. We have used scikit multiflow to generate hyperplane dataset with 10 features. The hyperplane dataset contains slow gradual drift in five features with 60% change magnitude.\\u003c/p\\u003e\\n \\u003cp\\u003e\\u003cstrong\\u003eMoving RBF Dataset\\u003c/strong\\u003e\\u003c/p\\u003e\\n \\u003cp\\u003eThis dataset is also generated using scikit multiflow and consists of gaussian distributions which move with constant speed. Moving RBF datasets involves gradual drift. Concept drift can be introduced by changing the position or number of centroids. The generated dataset has 2 classes, 30 attributes and 50 centroids. The drifted data is generated using scikit multiflow random RBF drift generator with a change speed of 0.6.\\u003c/p\\u003e\\n \\u003cp\\u003e\\u003cstrong\\u003eGaussian Dataset\\u003c/strong\\u003e\\u003c/p\\u003e\\n \\u003cp\\u003e\\u003cem\\u003eA\\u003c/em\\u003e synthetic dataset with 20 features is drawn from a standard normal distribution based on a specified range of mean and standard deviation. For each feature in negative samples, the mean range is (0.1,0.6) and the standard deviation range is (0.05,0.45) with 30,000 samples. For positive samples, the mean range is (2,7) and standard deviation range is (1.5, 2.5) with 30,000 samples. In drifted data, the mean range for positive class is changed to (4,9) with standard deviation range in the range (1.5,3) while for negative class data the mean range is changed to (0.3,0.9) and standard deviation ranges in the range (0.1,0.5)\\u003c/p\\u003e\\n \\u003cp\\u003e\\u003cstrong\\u003eVarying Distributions (VD) Dataset\\u003c/strong\\u003e\\u003c/p\\u003e\\n \\u003cp\\u003eIn this dataset, class 1 instances are sampled from a binomial distribution (n\\u0026thinsp;=\\u0026thinsp;10, p\\u0026thinsp;=\\u0026thinsp;.05) while class 0 instances are sampled from a logistic distribution (loc\\u0026thinsp;=\\u0026thinsp;0.38). VD dataset consists of 19200 data points, five features and balanced class distribution. The drifted data contains 30 batches, where initial 20 batches contain non-drifted data. In the last 10 batches, the distribution of both class data is changed in such a way that in batch number 31 and 32 data distribution of both classes changes in one column; in batch 33 and 34 the data distribution changes in two columns, in batch 35 and 36 in three columns and so on.\\u003c/p\\u003e\\n \\u003cp\\u003e\\u003cstrong\\u003eNOAA Weather Dataset: NOAA dataset\\u003c/strong\\u003e (Ditzler \\u0026amp; Polikar, \\u003cspan class=\\\"CitationRef\\\"\\u003e2013b\\u003c/span\\u003e) contains weather measurements in eight dimensions and contains daily records covering 50 years. There are 18,159 records in this dataset and the task is to predict whether it will rain or not. The class distribution is 12,461 records for no rain and 5,698 for rain. Eight attributes are temperature, dew point, sea level pressure, visibility, average wind speed, maximum sustained wind speed, minimum temperature, and maximum temperature. The data has been made available by the National Oceanic and Atmospheric Administration (NOAA) which is referred to as the NOAA dataset.\\u003c/p\\u003e\\n \\u003cp\\u003e\\u003cstrong\\u003eCovertype\\u003c/strong\\u003e\\u003c/p\\u003e\\n \\u003cp\\u003eForest Covertype (Cabral \\u0026amp; Barros, \\u003cspan class=\\\"CitationRef\\\"\\u003e2018\\u003c/span\\u003e; Fr\\u0026iacute;as-Blanco et al., \\u003cspan class=\\\"CitationRef\\\"\\u003e2015\\u003c/span\\u003e) dataset divides the forest land based on physical attributes like elevation, soli type, wilderness area, slope etc. of a 30m X 30m region into 7 different classes. The dataset has been made public by the US Forest Service. It contains 581012 records and 54 attributes both numerical and categorical. This dataset has been converted into a binary classification dataset.\\u003c/p\\u003e\\n \\u003cp\\u003e\\u003cstrong\\u003eKDDCUP99\\u003c/strong\\u003e\\u003c/p\\u003e\\n \\u003cp\\u003eKDDCUP99 is a network intrusion detection dataset which was used in KDDCUP 1999 competition. It is a multiclassification dataset where instances are labeled as normal or some known attack type (Pinag\\u0026eacute; et al., \\u003cspan class=\\\"CitationRef\\\"\\u003e2020\\u003c/span\\u003e).\\u003c/p\\u003e\\n \\u003cp\\u003eThe original dataset contains more than 4M records. We have used one of its subsets which contains 494021 records and 41 dimensions by converting it to a binary classification dataset with class values as normal and attack.\\u003c/p\\u003e\\n \\u003cp\\u003e\\u003cstrong\\u003eELEC2\\u003c/strong\\u003e\\u003c/p\\u003e\\n \\u003cp\\u003eElectricity dataset commonly known as ELEC2 (Harries \\u0026amp; Wales, \\u003cspan class=\\\"CitationRef\\\"\\u003e1999\\u003c/span\\u003e) shows daily supply, demand and scheduled electricity transfer between states New South Wales and Victoria. It contains 45,312 instances with 8 features. The class label shows whether the price was up or down on a day in New South Wales relative to a moving average of the last 24 hours. This dataset have been used in various research paper related to drift detection (Pinag\\u0026eacute; et al., \\u003cspan class=\\\"CitationRef\\\"\\u003e2020\\u003c/span\\u003e; Gama et al., \\u003cspan class=\\\"CitationRef\\\"\\u003e2004\\u003c/span\\u003e; Costa et al., \\u003cspan class=\\\"CitationRef\\\"\\u003e2018\\u003c/span\\u003e; A. Liu et al., \\u003cspan class=\\\"CitationRef\\\"\\u003e2018\\u003c/span\\u003e).\\u003c/p\\u003e\\n \\u003cp\\u003eThe summary of the datasets used in this research is shown in Table \\u003cspan class=\\\"InternalRef\\\"\\u003e3\\u003c/span\\u003e. In the case of real-world datasets, it is usually not known whether the drift is present or not, and if it is present, the location of the drift is not known. For experimental evaluation, we explicitly introduced drift in these datasets which will be explained in section \\u003cspan class=\\\"InternalRef\\\"\\u003e5.3\\u003c/span\\u003e. All the datasets used and generated in this research work are available at \\u003cspan class=\\\"ExternalRef\\\"\\u003e\\u003cspan class=\\\"RefSource\\\"\\u003ehttps://github.com/Usman07442/ConceptDrift_IJMLC\\u003c/span\\u003e\\u003c/span\\u003e.\\u0026nbsp;\\u003c/p\\u003e\\u0026nbsp;\\u003ctable id=\\\"Tab3\\\" border=\\\"1\\\"\\u003e\\n \\u003ccaption language=\\\"En\\\"\\u003e\\n \\u003cdiv class=\\\"CaptionNumber\\\"\\u003eTable 3\\u003c/div\\u003e\\n \\u003cdiv class=\\\"CaptionContent\\\"\\u003e\\n \\u003cp\\u003eSummary of Datasets\\u003c/p\\u003e\\n \\u003c/div\\u003e\\n \\u003c/caption\\u003e\\n \\u003cthead\\u003e\\n \\u003ctr\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eDataset\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eInstances\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e# of Features\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eType\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eDrift Type / Drift Induced\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eSize of Drifted Data\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003c/tr\\u003e\\n \\u003c/thead\\u003e\\n \\u003ctbody\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eGaussian\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e60,000\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e20\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eSynthetic\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eSudden\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e6000\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eVD\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e19,200\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e5\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eSynthetic\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eGradual\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e960\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eHyperplane\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e40,000\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e10\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eSynthetic\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eGradual\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e2,560\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eMoving RBF\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e40,000\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e30\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eSynthetic\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eGradual\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e2,560\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eNOAA\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e18,159\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e8\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eReal\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eSudden, Gradual\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e1816\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eCovertype\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e581,012\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e54\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eReal\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eSudden, Gradual\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e58,102\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eKDD99\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e494,021\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e41\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eReal\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eSudden, Gradual\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e49,403\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eELEC2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e45,312\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e8\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eReal\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eSudden, Gradual\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e4,531\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003c/tbody\\u003e\\n \\u003c/table\\u003e\\n \\u003cp\\u003e\\u003cbr\\u003e\\u003c/p\\u003e\\n \\u003cp\\u003e\\u003cstrong\\u003eExperimental Settings\\u003c/strong\\u003e\\u003c/p\\u003e\\n \\u003cp\\u003eIn offline training phase, the available dataset is divided into three distinct subsets. Initial 70% data is used for training (and validation) of autoencoders, next 20% data is used for threshold computation and the last 10% data is used for testing the autoencoder on normal non-drifted data stream. The simplest deep autoencoder architecture with one hidden layer in an undercomplete setting is used in all the experiments which allows to compress the input onto a lower dimension at the bottleneck. The size of the hidden layer (number of neurons) is kept approximately one-third of the input and the size of the bottleneck is taken as approximately one-third of the size of the previous hidden layer in the encoder part while decoder part is an exact replica of the encoder part. Since we have real valued data at the input layer, mean squared error (mse) is used as the loss function with Adam optimizer. ReLU activation function is used at all the layers except the output layer where sigmoid is used. For threshold computation, results have been averaged over 10 runs to avoid any experimental bias. To test AEDDM effectiveness in drift detection, drift is introduced in the stream (last 10% of the dataset) which starts at batch 20 (21st batch). The initial 20 batches contain normal (non-drifted) data. For all the datasets batch size of 32 is used for autoencoders training as well as for windowing purposes. The reference window (the training data with computed threshold) is fixed while the detection window moves in batches. The next section describes the experiments on synthetic datasets.\\u003c/p\\u003e\\n\\u003c/div\\u003e\\n\\u003cdiv id=\\\"Sec19\\\" class=\\\"Section2\\\"\\u003e\\n \\u003ch2\\u003e5.2 Experiments on Synthetic Datasets\\u003c/h2\\u003e\\n \\u003cp\\u003eTo show the effectiveness of AEDDM in detecting sudden and gradual drifts which are the most common scenarios, four synthetic datasets including Gaussian, VD dataset, Hyperplane and Moving RBF have been used. The former two datasets are newly designed datasets in this research work while the latter two datasets have been used in various research papers in drift detection domain. The focus of this set of experiments is to determine the best set of parameters for AEDDM framework which can be used to effectively detect drift with minimum delay and least false positives. These parameters include:\\u003c/p\\u003e\\n \\u003cp\\u003e\\u003cstrong\\u003ek parameter\\u003c/strong\\u003e:\\u003c/p\\u003e\\n \\u003cp\\u003ek parameter is basically the sensitivity parameter which defines the spread of the data that will be considered as non-drifted. This sensitivity parameter is used in threshold computation and can be determined empirically by applying AEDDM framework on normal non-drifted data as well as on drifted data. We have evaluated the values of k\\u0026thinsp;=\\u0026thinsp;1,2,3 to determine the best value of k which can be used in \\u003cspan class=\\\"InlineEquation\\\"\\u003e\\u003cspan class=\\\"mathinline\\\"\\u003e\\\\(u+k\\\\sigma\\\\)\\u003c/span\\u003e\\u003c/span\\u003e for threshold computation (see Table \\u003cspan class=\\\"InternalRef\\\"\\u003e4\\u003c/span\\u003e \\u0026amp;5)\\u003c/p\\u003e\\n \\u003cp\\u003e\\u003cstrong\\u003eAlpha Parameter\\u003c/strong\\u003e\\u003c/p\\u003e\\n \\u003cp\\u003eTo signal a batch as drifted or normal, AEDDM uses batch threshold as well as count threshold. The average reconstruction error of a batch from the respective AE is compared with batch threshold while the exceed count (explained in Section \\u003cspan class=\\\"InternalRef\\\"\\u003e4\\u003c/span\\u003e) of a batch is compared with count threshold. Average reconstruction error hides the internal details of reconstruction error of individual instances in a batch while count threshold encounters this by providing the count of instances which exceed instance threshold (explained in Section \\u003cspan class=\\\"InternalRef\\\"\\u003e4\\u003c/span\\u003e). This count threshold can be computed as a median of batch wise exceed counts in normal data or as a maximum value. Median would make the count threshold more sensitive resulting in more false positives while maximum would make it less sensitive to noise and false positives. The best fit can be determined empirically for a chosen dataset. We name this the \\u003cem\\u003eAlpha Parameter\\u003c/em\\u003e with two possible values as median or maximum.\\u003c/p\\u003e\\n \\u003cp\\u003e\\u003cstrong\\u003eThe logical parameter or \\u0026ldquo;Beta Parameter\\u0026rdquo;\\u003c/strong\\u003e\\u003c/p\\u003e\\n \\u003cp\\u003eAnother parameter of AEDDM framework is the logical parameter (see Algorithm 1: Step 3a) which determines whether both thresholds will be used in conjunction or disjunction. It can be empirically established whether to use batch threshold and count threshold in AND setting or in OR setting to signal a batch as normal or drifted. Using AND is expected to be more robust to noise and false alarms but may cause delays in drift detection in some cases. The best fit values of the above three parameters for a dataset can be determined empirically. We name this the \\u003cem\\u003eBeta Parameter\\u003c/em\\u003e with two possible values as \\u0026ldquo;AND\\u0026rdquo; or \\u0026ldquo;OR.\\u003c/p\\u003e\\n \\u003cp\\u003eTable 4 summarizes the results for all the selected values of the AEDDM parameters on non-drifted data while Table 5 shows the results on drifted data for four synthetic datasets. In the case of non-drifted data, warnings and false positives are reported over the entire test batch stream while in case of drifted data both warnings and false positives are only counted till the detection point. In all datasets, drift starts from batch 20. The best set of parameters can be determined from both the performance on the non-drifted data as well as the drifted data. In the case of non-drifted data, the best set of parameters is expected to generate a minimum number of warnings and false positives. In the case of Gaussian and VD datasets, there is no clear distinction in performance across different values of k since both classes are more apart from each other from data distribution point of view (See Table 4). \\u0026nbsp;But this distinction is much clearer in the case of Hyperplane and moving RBF dataset for k=3 and there are comparatively less warnings and false positives in non-drifted data. Based on this, we have limited our search of best parameters within k=3 across all four datasets. \\u0026nbsp;In case of drifted data, the best set of parameters would be where AEDDM can detect drift with minimum delay, warnings, and false positives; delay being the most important. Considering performance on both drifted and non-drifted data, Table 6 summarizes the best set of parameters across all four datasets. \\u0026nbsp;\\u003c/p\\u003e\\n \\u003ctable id=\\\"Tab5\\\" border=\\\"1\\\"\\u003e\\n \\u003ccaption language=\\\"En\\\"\\u003e\\n \\u003cdiv class=\\\"CaptionNumber\\\"\\u003eTable 4\\u003c/div\\u003e\\n \\u003cdiv class=\\\"CaptionContent\\\"\\u003e\\n \\u003cp\\u003eAEDDM Parameters Calibration on Non-Drifted Data\\u003c/p\\u003e\\n \\u003c/div\\u003e\\n \\u003c/caption\\u003e\\n \\u003cthead\\u003e\\n \\u003ctr\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eDataset\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eK\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eCount Threshold Measure:\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eLogical Parameter:\\u003c/p\\u003e\\n \\u003cp\\u003eAND OR\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eWarnings\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eFalse Positives\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003c/tr\\u003e\\n \\u003c/thead\\u003e\\n \\u003ctbody\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"12\\\"\\u003e\\n \\u003cp\\u003eGaussian (187 batches)\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\" rowspan=\\\"4\\\"\\u003e\\n \\u003cp\\u003e1\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMedian\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"char\\\" rowspan=\\\"4\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMedian\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e27\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"char\\\" rowspan=\\\"4\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e3\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003eMedian\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003eAND\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e0\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e0\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e16\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"12\\\"\\u003e\\n \\u003cp\\u003eVD\\u003c/p\\u003e\\n \\u003cp\\u003e60 Batches\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\" rowspan=\\\"4\\\"\\u003e\\n \\u003cp\\u003e1\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMedian\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"char\\\" rowspan=\\\"4\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMedian\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e5\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"char\\\" rowspan=\\\"4\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e3\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003eMedian\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003eAND\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e0\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e0\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e4\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"12\\\"\\u003e\\n \\u003cp\\u003eHyperplane\\u003c/p\\u003e\\n \\u003cp\\u003e124 Batches\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\" rowspan=\\\"4\\\"\\u003e\\n \\u003cp\\u003e1\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMedian\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e30\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e77\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e27\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e83\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e25\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e46\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e44\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"char\\\" rowspan=\\\"4\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMedian\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e46\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e13\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e46\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e40\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e7\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e16\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"char\\\" rowspan=\\\"4\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e3\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003eMedian\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003eAND\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e49\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e7\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e55\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e10\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"12\\\"\\u003e\\n \\u003cp\\u003eRBF\\u003c/p\\u003e\\n \\u003cp\\u003e125 batches\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\" rowspan=\\\"4\\\"\\u003e\\n \\u003cp\\u003e1\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eMedian\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e123\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\u0026nbsp;\\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e123\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e5\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e117\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\u0026nbsp;\\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e123\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"char\\\" rowspan=\\\"4\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eMedian\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e17\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e97\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\u0026nbsp;\\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e4\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e120\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e24\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e3\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\u0026nbsp;\\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e48\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e29\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"char\\\" rowspan=\\\"4\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e3\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003eMedian\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003eAND\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e46\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e37\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\u0026nbsp;\\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e31\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e70\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e10\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\u0026nbsp;\\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e24\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003c/tbody\\u003e\\n \\u003c/table\\u003e\\n \\u003cp\\u003e\\u003cbr\\u003e\\u003c/p\\u003e\\n \\u003cdiv\\u003e\\n \\u003ctable border=\\\"1\\\"\\u003e\\n \\u003ccaption language=\\\"En\\\"\\u003e\\n \\u003cdiv\\u003eTable 5\\u003c/div\\u003e\\n \\u003cdiv\\u003e\\n \\u003cp\\u003eTable 5: AEDDM Parameters Calibration on Drifted Data.\\u003c/p\\u003e\\n \\u003c/div\\u003e\\n \\u003c/caption\\u003e\\n \\u003cthead\\u003e\\n \\u003ctr\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eDataset\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eK\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eCount Threshold Measure:\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eLogical Parameter:\\u003c/p\\u003e\\n \\u003cp\\u003eAND OR\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eWarnings\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eDetection Delay\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eFalse Positives\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003c/tr\\u003e\\n \\u003c/thead\\u003e\\n \\u003ctbody\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"12\\\"\\u003e\\n \\u003cp\\u003eGaussian\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\" rowspan=\\\"4\\\"\\u003e\\n \\u003cp\\u003e1\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMedian\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"char\\\" rowspan=\\\"4\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMedian\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e4\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"char\\\" rowspan=\\\"4\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e3\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003eMedian\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003eAND\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e0\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e0\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e0\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"12\\\"\\u003e\\n \\u003cp\\u003eVD\\u003c/p\\u003e\\n \\u003cp\\u003e30 Batches\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e1\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMedian\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e4\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"3\\\"\\u003e\\u0026nbsp;\\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e4\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"char\\\" rowspan=\\\"4\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMedian\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e5\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e1\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e5\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"char\\\" rowspan=\\\"4\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e3\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003eMedian\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003eAND\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e0\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e6\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e0\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e1\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e6\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"12\\\"\\u003e\\n \\u003cp\\u003eHyperplane\\u003c/p\\u003e\\n \\u003cp\\u003e80 Batches\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\" rowspan=\\\"4\\\"\\u003e\\n \\u003cp\\u003e1\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMedian\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e8\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e-20\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e9\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e6\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e-20\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e12\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e5\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e-1\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e1\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e10\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e-20\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e4\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"char\\\" rowspan=\\\"4\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMedian\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e7\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e-19\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e4\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e8\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e-19\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e5\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e3\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eNo Det\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e5\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eNo Det\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"char\\\" rowspan=\\\"4\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e3\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003eMedian\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003eAND\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e4\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e1\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e0\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e5\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e1\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e1\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eNo Det\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eNo Det\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\" rowspan=\\\"12\\\"\\u003e\\n \\u003cp\\u003eRBF\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\" rowspan=\\\"4\\\"\\u003e\\n \\u003cp\\u003e1\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eMedian\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e-20\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e20\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\u0026nbsp;\\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e-20\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e20\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e-20\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e20\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\u0026nbsp;\\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e-20\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e20\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"char\\\" rowspan=\\\"4\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eMedian\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e-20\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e14\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\u0026nbsp;\\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e-20\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e17\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e5\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\u0026nbsp;\\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e9\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e-14\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"char\\\" rowspan=\\\"4\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e3\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003eMedian\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003eAND\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e8\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e0\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e\\u003cem\\u003e3\\u003c/em\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\u0026nbsp;\\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e6\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e8\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e4\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e22\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\u0026nbsp;\\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e6\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e21\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003c/tbody\\u003e\\n \\u003c/table\\u003e\\n \\u003c/div\\u003e\\n \\u003cp\\u003e\\u003cbr\\u003e\\u003c/p\\u003e\\n \\u003cp\\u003eBased on the results, it is evident that using k\\u0026thinsp;=\\u0026thinsp;3, median as a count threshold measure and using both batch threshold and count threshold in AND setting shows better results. We chose this setting as a default setting of AEDDM which is followed in all rest of the experiments.\\u0026nbsp;\\u003c/p\\u003e\\u0026nbsp;\\u003ctable id=\\\"Tab6\\\" border=\\\"1\\\"\\u003e\\n \\u003ccaption language=\\\"En\\\"\\u003e\\n \\u003cdiv class=\\\"CaptionNumber\\\"\\u003eTable 6\\u003c/div\\u003e\\n \\u003cdiv class=\\\"CaptionContent\\\"\\u003e\\n \\u003cp\\u003eBest Set of Parameters for Synthetic Datasets\\u003c/p\\u003e\\n \\u003c/div\\u003e\\n \\u003c/caption\\u003e\\n \\u003cthead\\u003e\\n \\u003ctr\\u003e\\n \\u003cth align=\\\"left\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eDataset\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\" colspan=\\\"3\\\"\\u003e\\n \\u003cp\\u003eBest Parameter Settings\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eK\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAlpha\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eBeta\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003c/tr\\u003e\\n \\u003c/thead\\u003e\\n \\u003ctbody\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eGaussian\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e3\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eMedian\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eVD\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e3\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eMaximum\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eOR\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eHyperplane\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e3\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eMedian\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eMoving RBF\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e3\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eMedian\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAND\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003c/tbody\\u003e\\n \\u003c/table\\u003e\\n \\u003cp\\u003e\\u003cbr\\u003e\\u003c/p\\u003e\\n \\u003cp\\u003eTo evaluate the results graphically, we have plotted the reconstruction error and exceed counts in Fig. \\u003cspan class=\\\"InternalRef\\\"\\u003e6\\u003c/span\\u003e which shows the reconstruction error plots as well as exceed count plots at the outputs of layer 1 and layer 2 autoencoders for all four datasets. For those batches which are not passed to layer 2 autoencoder, exceed count at layer 2 is symbolically set to -1. Reconstruction error plots for both layer 1 and layer 2 autoencoder (Fig. \\u003cspan class=\\\"InternalRef\\\"\\u003e6\\u003c/span\\u003e (a) and 6 (b)) show a clear difference between non-drifted data (starting 20 batches) and drifted data which starts from batch 20 in three out of four datasets. In the case of Hyperplane datasets, the difference in reconstruction error is not very clear as there is a very slight difference between the distribution of positive and negative class data (Fig. \\u003cspan class=\\\"InternalRef\\\"\\u003e6\\u003c/span\\u003e(iii) a and b). Similarly, exceed counts layer 2 plots (Fig. \\u003cspan class=\\\"InternalRef\\\"\\u003e6\\u003c/span\\u003e(d)) show a clear difference between the distribution of drifted and non-drifted data in the case of Gaussian, VD and RBF dataset as compared to the Hyperplane dataset. This distinction is not very clear in layer 1 exceed count plots (Fig. \\u003cspan class=\\\"InternalRef\\\"\\u003e6\\u003c/span\\u003e (c)). Since drift is detected based on the reconstruction error and exceed counts at layer 2, so we are more interested in layer 2 outputs specifically. As we have used a simple deep vanilla autoencoder with some default set of hyperparameters, there is a huge space to improve the detection performance on these datasets by calibrating different types of autoencoders with different architectures and set of hyperparameters. The next section details further experimentation of AEDDM on real-world datasets.\\u003c/p\\u003e\\n\\u003c/div\\u003e\\n\\u003cdiv id=\\\"Sec20\\\" class=\\\"Section2\\\"\\u003e\\n \\u003ch2\\u003e5.3 Experiments on Real World Datasets\\u003c/h2\\u003e\\n \\u003cp\\u003eThe drift detection performance of AEDDM approach is evaluated on four benchmark real-world datasets including NOAA weather data, Forest Covertype, KDDCUP99 Intrusion detection dataset and ELEC2 electricity dataset. In the case of real-world datasets, it is more likely that the change in distribution of most relevant features will impact the decision boundary to a larger extent and it is expected that such changes will impact the accuracy of the pre-trained classifiers (real drift). Similarly, changes in distribution of features which are less informative should not impact the decision boundary with no or very limited impact on the performance of pre-trained classifiers (virtual drift). An ideal drift detector should be able to consider the data distributional changes in more informative features and ignore the changes in less informative features with respect to drift detection.\\u003c/p\\u003e\\n \\u003cp\\u003eTo test AEDDM on real world datasets, we introduced drift by interchanging the values of top25% ( 30% or 40%) attributes in one setting and by interchanging the feature values of bottom25% (30% or 40%) in another setting by using the same approach followed by (Sethi \\u0026amp; Kantardzic, \\u003cspan class=\\\"CitationRef\\\"\\u003e2017\\u003c/span\\u003e) and (Castellani et al., \\u003cspan class=\\\"CitationRef\\\"\\u003e2021\\u003c/span\\u003e). The top 25% and bottom 25% attributes are selected based on feature importance measure like information gain or mutual information. The drift detection results of AEDDM approach have been summarized in Table \\u003cspan class=\\\"InternalRef\\\"\\u003e7\\u003c/span\\u003e. For batch threshold k\\u0026thinsp;=\\u0026thinsp;3 is used, median is used as a count threshold measure (alpha parameter) while AND is used as a logical parameter (beta parameter) for this set of experiments. The number of batches used in non-drifted and gradual drift case depends on the size of the dataset while in the case of sudden drift initial 55 batches are considered based on the size of the smallest dataset. In case of non-drifted data, AEDDM shows no false positives in all four datasets and only a few warnings in case of NOAA and Covertype datasets (see Table \\u003cspan class=\\\"InternalRef\\\"\\u003e7\\u003c/span\\u003e). A two-sample t-test is used as a significance test with 5% significance level to validate the outcome of AEDDM. The null hypothesis (H0) is true when there is no drift in the datasets and H1 is true when there is a drift in the dataset. The t-test also confirms that there is no drift in the normal non-drifted batch stream for all four datasets. For sudden drift top 25% case, AEDDM detects the drift with zero delay for three datasets and with a delay of four batches in case of ELEC dataset whereas for sudden drift bottom 25% case there are only a few warnings (NOAA\\u0026thinsp;=\\u0026thinsp;3, ELEC\\u0026thinsp;=\\u0026thinsp;5, Covertype\\u0026thinsp;=\\u0026thinsp;16); only one false positive in the case of Covertype and ELEC datasets but no detections in case of all four datasets confirmed by t-test for initial 55 batches. This result strengthens our preposition that a drift detector should be able to detect real drift (drift in important features) while ignoring the virtual drift (changes in less important features) which AEDDM effectively demonstrates through these experiments.\\u003c/p\\u003e\\n \\u003cp\\u003eTo induce gradual drift in the real world datasets, we introduced a new mechanism for incorporating a gradual drift (sudden at discrete steps) in the datasets in such a way that initial 10% data contains no change, for the next 10% data ,values of the top25% attributes are increased by 10% ( as compared to the original values in non-drifted data), the next 10% data values are increased by 20% and so on, so that in the last chunk, data values in the top 25% attributes are increased by 100%. In the case of top25% gradual drift, drift is detected in all four datasets while in the case of bottom25% gradual drift, no drift is detected in NOAA and Covertype. Although the results vary across different datasets in bottom25 gradual drift case, the performance of AEDDM is encouraging and can be further explored.\\u003c/p\\u003e\\n \\u003cdiv class=\\\"gridtable\\\"\\u003e\\u0026nbsp;\\u003ctable id=\\\"Tab7\\\" border=\\\"1\\\"\\u003e\\n \\u003ccaption language=\\\"En\\\"\\u003e\\n \\u003cdiv class=\\\"CaptionNumber\\\"\\u003eTable 7\\u003c/div\\u003e\\n \\u003cdiv class=\\\"CaptionContent\\\"\\u003e\\n \\u003cp\\u003eAEDDM Drift Detection Results on Real Datasets\\u003c/p\\u003e\\n \\u003c/div\\u003e\\n \\u003c/caption\\u003e\\n \\u003cthead\\u003e\\n \\u003ctr\\u003e\\n \\u003cth align=\\\"left\\\" rowspan=\\\"3\\\"\\u003e\\n \\u003cp\\u003eDataset\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\" colspan=\\\"4\\\" rowspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eNon-drifted Data\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\" colspan=\\\"5\\\"\\u003e\\n \\u003cp\\u003eSudden Drift\\u003c/p\\u003e\\n \\u003cp\\u003e(Initial 55 batches considered: drift starts at batch 20)\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\" colspan=\\\"5\\\"\\u003e\\n \\u003cp\\u003eGradual Drift\\u003c/p\\u003e\\n \\u003cp\\u003e(Whole batch stream is considered)\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003cth align=\\\"left\\\" colspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eTop25% (30%/40%)\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\" colspan=\\\"3\\\"\\u003e\\n \\u003cp\\u003eBottom25% (30%/40%)\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\" colspan=\\\"3\\\"\\u003e\\n \\u003cp\\u003eTop25%\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\" colspan=\\\"2\\\"\\u003e\\n \\u003cp\\u003eBottom25%\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eBatches\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eWarnings\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eFalse Positives\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003et-test\\u003c/p\\u003e\\n \\u003cp\\u003e\\u0026alpha;\\u0026thinsp;=\\u0026thinsp;5%\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eDetection Delay\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003et-test\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eWarnings\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eFalse Positives\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003et-test\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eDrift Point\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eDetect Point\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003et-test\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eDetect Point\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\n \\u003cp\\u003et-test\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003c/tr\\u003e\\n \\u003c/thead\\u003e\\n \\u003ctbody\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eNOAA\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e55\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e3\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eH\\u003csub\\u003e0\\u003c/sub\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0 (Top 40%)\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eH\\u003csub\\u003e1\\u003c/sub\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e3\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eH\\u003csub\\u003e0\\u003c/sub\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e6\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e25\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eH\\u003csub\\u003e1\\u003c/sub\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eNo Detection\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eH\\u003csub\\u003e0\\u003c/sub\\u003e (L1)\\u003c/p\\u003e\\n \\u003cp\\u003eH\\u003csub\\u003e1\\u003c/sub\\u003e (L2)\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eCovertype\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e1815\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e51\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eH\\u003csub\\u003e0\\u003c/sub\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0 (Top 25%)\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eH\\u003csub\\u003e1\\u003c/sub\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e16\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e1\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eH\\u003csub\\u003e0\\u003c/sub\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e182\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e584\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eH\\u003csub\\u003e1\\u003c/sub\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eNo Detection\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eH\\u003csub\\u003e0\\u003c/sub\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eKDDCUP\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e1543\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eH\\u003csub\\u003e0\\u003c/sub\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0 (Top 30%)\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eH\\u003csub\\u003e1\\u003c/sub\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eH\\u003csub\\u003e0\\u003c/sub\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e155\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e616\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eH\\u003csub\\u003e1\\u003c/sub\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e467\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eH\\u003csub\\u003e1\\u003c/sub\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eELEC2\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e142\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e0\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eH\\u003csub\\u003e0\\u003c/sub\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e4 (Top 30%)\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eH\\u003csub\\u003e1\\u003c/sub\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e5\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e1\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eH\\u003csub\\u003e0\\u003c/sub\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e15\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"char\\\"\\u003e\\n \\u003cp\\u003e77\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eH\\u003csub\\u003e1\\u003c/sub\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e35\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eH\\u003csub\\u003e1\\u003c/sub\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003c/tbody\\u003e\\n \\u003c/table\\u003e\\n \\u003c/div\\u003e\\n \\u003cp\\u003e\\u003cbr\\u003e\\u003c/p\\u003e\\n \\u003cp\\u003eTo demonstrate the impact of drift on the classifier\\u0026rsquo;s performance and effectiveness of AEDDM in detecting real drift while ignoring the virtual drift, we experimented with seven most used classifiers in batch classification problems including logistic regression, random forest, KNN, SVM, XGB, decision tree and MLP (In the case of kddcup99 and Covertype datasets SVM is not used due to long training time). In all four datasets, sudden and gradual drift is introduced using the top25% and bottom25% approach; in sudden case drift starts from batch 20 while in gradual case it starts after initial 10% of the batch stream. Classification performance is measured using f1 score and results averaged over 5 batches are shown in Fig. \\u003cspan class=\\\"InternalRef\\\"\\u003e7\\u003c/span\\u003e. For sudden drift scenarios (Fig. 8 (a) and (b)) results are reported only for first 55 batches while for gradual drift scenarios (Fig. \\u003cspan class=\\\"InternalRef\\\"\\u003e7\\u003c/span\\u003e (c) and (d)) results have been reported over the entire batch stream. In case of top 25% sudden drift (see Fig. \\u003cspan class=\\\"InternalRef\\\"\\u003e7\\u003c/span\\u003e(a)), there is a clear drop in f1score after index 3 (batch indices start from zero) which is batch 20 as the results have been averaged over 5 batches which indicates the drift is real.\\u003c/p\\u003e\\n \\u003cp\\u003eIn case of bottom25% sudden drift (Figure:7(b)), there is not as much degradation in performance and f1score almost follows the same pattern as in case of first non-drifted 20 batches. Here AEDDM shows its robustness to distributional changes in less informative features (virtual drift) and does not detect this drift (see Table \\u003cspan class=\\\"InternalRef\\\"\\u003e7\\u003c/span\\u003e). Similarly, in top25% gradual case (Fig. \\u003cspan class=\\\"InternalRef\\\"\\u003e7\\u003c/span\\u003e(c)), f1score gradually falls/changes at discrete intervals in accordance with how the drift is introduced which indicates a real drift and AEDDM detects this drift successfully in three datasets namely NOAA, Covertype and KDDCUP99 with some delays. While in case of bottom25% gradual drift (Fig. \\u003cspan class=\\\"InternalRef\\\"\\u003e7\\u003c/span\\u003e(d)), the distributional changes do not impact the classification performance as much (virtual drift) and AEDDM ignores these changes in three of the datasets. These results show the effectiveness of the proposed AEDDM method in detecting distributional changes in the real-world datasets which are more likely to impact the classifier\\u0026rsquo;s performance. Apart from testing the AEDDM performance using batch classifiers, we have also tested it using a well-known online classifier \\u0026ldquo; Hoeffding tree classifier\\u0026rdquo;. The next section briefly describes these experiments.\\u003c/p\\u003e\\n\\u003c/div\\u003e\\n\\u003cdiv id=\\\"Sec21\\\" class=\\\"Section2\\\"\\u003e\\n \\u003ch2\\u003e5.3 Performance Comparison\\u003c/h2\\u003e\\n \\u003cp\\u003eIn real word applications, the drift detection mechanism should be transparent to machine learning scenarios (specifically classification in our case) working in tandem with the arrival of new data. In case a drift is detected which is likely to impact the performance of the classifier, the pre-trained classifier should be retrained with the new data so that it can maintain acceptable predictive performance. To test and compare the performance of the proposed AEDDM approach in an online learning environment, we have used Hoeffding tree (Hulten et al., \\u003cspan class=\\\"CitationRef\\\"\\u003e2001b\\u003c/span\\u003e) as a base classifier which is an online incremental learning algorithm. A Hoeffding tree has the capability to adapt to the changes in the new data with the addition of every new sample and gives performance comparable to a non-incremental batch learner with unlimited data availability (Montiel et al., \\u003cspan class=\\\"CitationRef\\\"\\u003e2018\\u003c/span\\u003e).\\u003c/p\\u003e\\n \\u003cp\\u003eFor this set of experiments, we have used the same four real datasets in the top 25% sudden drift setting. The drift is detected by AEDDM in NOAA, Covertype and KDD at batch 20 with zero delay while at batch 26 in case of ELEC dataset with a delay of six batches. Comparison is made across the following:\\u003c/p\\u003e\\n \\u003cul\\u003e\\n \\u003cli\\u003e\\n \\u003cp\\u003e\\u003cstrong\\u003eStatic Model (NoChange)\\u003c/strong\\u003e: A Hoeffding tree is trained on the available training data. It is assumed that no drift occurs, so no drift detector is employed, and no model update takes place. This acts as the lower baseline.\\u003c/p\\u003e\\n \\u003c/li\\u003e\\n \\u003cli\\u003e\\n \\u003cp\\u003e\\u003cstrong\\u003ePrequential HT\\u003c/strong\\u003e: A prequential Hoeffding Tree classifier with 32 as pre-train size and batch size is used. Performance measures like accuracy and kappa statistics are averaged over 32 instances. It acts as an upper baseline as labels are readily available and first HT predicts each instance then updates itself with the correct label.\\u003c/p\\u003e\\n \\u003c/li\\u003e\\n \\u003cli\\u003e\\n \\u003cp\\u003e\\u003cstrong\\u003eAEDDM\\u003c/strong\\u003e (The proposed method): A Hoeffding tree is trained on the entire available label data and used for making predictions until a drift occurs. Each drifted batch becomes part of the training data when labels are available, and the model is retrained. Yet, we haven\\u0026rsquo;t formalized the complete adaptation mechanism for AEDDM, and it will be part of the future work. The current focus is on the effectiveness of real drift detection with a limited demonstration of adaptation.\\u003c/p\\u003e\\n \\u003c/li\\u003e\\n \\u003cli\\u003e\\n \\u003cp\\u003e\\u003cstrong\\u003eKS Test\\u003c/strong\\u003e: Kolmogorov Smirnov test is used for drift detection in an unsupervised manner. It compares an empirical distribution (incoming batch stream) with a theoretical distribution (non-drifted data) to test whether both batches come from the same distribution or not. A p-value less than 0.05 at 5% significance level indicates the presence of drift between the current and reference distribution (Z. Wang \\u0026amp; Wang, \\u003cspan class=\\\"CitationRef\\\"\\u003e2020a\\u003c/span\\u003e). A Hoeffding tree is trained on the available training data and is used to predict the incoming batches. After the drift point, each incoming batch becomes part of the training data and the Hoeffding is retrained.\\u003c/p\\u003e\\n \\u003c/li\\u003e\\n \\u003cli\\u003e\\n \\u003cp\\u003e\\u003cstrong\\u003eADD\\u003c/strong\\u003e: ADD is another autoencoder-based batch drift detection method which uses thresholding mechanism to detect drift. It also uses the Hoeffding tree as a base classifier which is initially trained on the available training data along with the autoencoders. ADD uses two different thresholds for gradual and sudden drift and alerts drift if any batch reconstruction error exceeds either threshold. In case of drift, the base classifier is retrained on the current batch and each drifted batch becomes part of the training data to retrain the autoencoders and training loss is recomputed.\\u003c/p\\u003e\\n \\u003c/li\\u003e\\n \\u003c/ul\\u003e\\n \\u003cp\\u003eWe have selected KS test based drift detection (Z. Wang \\u0026amp; Wang, \\u003cspan class=\\\"CitationRef\\\"\\u003e2020a\\u003c/span\\u003e) and ADD (Jaworski et al. \\u003cspan class=\\\"CitationRef\\\"\\u003e2020\\u003c/span\\u003e) for comparison as both are batch based drift detection methods and work in batch incremental settings. The results have been reported for the first 40 batches where the initial 20 batches contain non-drifted data while the last 20 batches contain drifted data with drift starting at batch 20 in case of all four datasets. This equal distribution of drifted and non-drifted batches provides an equal base for accuracy comparison over the entire batch stream.\\u003c/p\\u003e\\n \\u003cp\\u003eIn this set of experiments our focus is to evaluate the drift detection performance of AEDDM followed by an adaptation mechanism so that the pretrained classifier can recover from the drift and performance degradation. Here both prequential Hoeffding tree and ADD have their own adaptation mechanism (described above) while KS test and AEDDM use a similar approach (described above). The static model employs no detection hence no adaptation as well. The plots in Fig. 8 show that the performance of the base classifier falls from batch 20 and then it recovers as the model is retrained based on drift detection and adaptation mechanism by each method. This fall in accuracy is much clearer in the case of KDDCUP99 and Covertype datasets as compared to the other two datasets. The no-update model in all four cases shows how sharp the accuracy falls after drift occurs at batch 20 and if there is no detection and adaptation mechanism. The proposed AEDDM approach effectively detects this drift with zero delay (see Table \\u003cspan class=\\\"InternalRef\\\"\\u003e7\\u003c/span\\u003e) and the adapted base classifier quickly recovers from this drift giving the best average accuracy over the batch stream in case of KDDCUP99, Forest Covertype and ELEC datasets and shares the top rank in case of NOAA dataset with KS approach. The average accuracy scores over the entire batch stream are summarized in Table \\u003cspan class=\\\"InternalRef\\\"\\u003e8\\u003c/span\\u003e. The proposed AEDDM approach almost outperforms other methods in all four datasets. The access to experiments can be provided on a reasonable request to the corresponding author.\\u0026nbsp;\\u003c/p\\u003e\\n \\u003ctable id=\\\"Tab8\\\" border=\\\"1\\\"\\u003e\\n \\u003ccaption language=\\\"En\\\"\\u003e\\n \\u003cdiv class=\\\"CaptionNumber\\\"\\u003eTable 8\\u003c/div\\u003e\\n \\u003cdiv class=\\\"CaptionContent\\\"\\u003e\\n \\u003cp\\u003eAverage Batch Accuracy\\u003c/p\\u003e\\n \\u003c/div\\u003e\\n \\u003c/caption\\u003e\\n \\u003cthead\\u003e\\n \\u003ctr\\u003e\\n \\u003cth align=\\\"left\\\"\\u003e\\u0026nbsp;\\u003c/th\\u003e\\n \\u003cth align=\\\"left\\\" colspan=\\\"5\\\"\\u003e\\n \\u003cp\\u003eAverage Accuracy Over 40 Batches\\u003c/p\\u003e\\n \\u003c/th\\u003e\\n \\u003c/tr\\u003e\\n \\u003c/thead\\u003e\\n \\u003ctbody\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eDataset\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eAEDDM\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eADD\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eKS\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003ePrequential HT\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eNo Update\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eNOAA\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e\\u003cstrong\\u003e0.68\\u003c/strong\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0.67\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e\\u003cstrong\\u003e0.68\\u003c/strong\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0.66\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0.48\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eCOVERTYPE\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e\\u003cstrong\\u003e0.70\\u003c/strong\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0.62\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0.61\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0.58\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0.57\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eKDDCUP99\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e\\u003cstrong\\u003e0.94\\u003c/strong\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0.91\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0.92\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0.93\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0.49\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003ctr\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003eELEC\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e\\u003cstrong\\u003e0.85\\u003c/strong\\u003e\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0.63\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0.83\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0.73\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003ctd align=\\\"left\\\"\\u003e\\n \\u003cp\\u003e0.71\\u003c/p\\u003e\\n \\u003c/td\\u003e\\n \\u003c/tr\\u003e\\n \\u003c/tbody\\u003e\\n \\u003c/table\\u003e\\n\\u003c/div\\u003e\"},{\"header\":\"6 Conclusion and Future Work\",\"content\":\"\\u003cp\\u003eIn this paper, the AEDDM approach for drift detection is presented which is capable of detecting drift in a batch stream in an unsupervised manner. For a binary classification problem, the proposed method uses two autoencoders placed in sequential order and uses a thresholding mechanism which is based on batch reconstruction error (batch threshold) and reconstruction error of individual instances within a batch (instance threshold and count threshold). The proposed method learns the distribution of both classes data in training phase and then uses the deviation in batch reconstruction error and exceed counts within an incoming batch stream to signal warning levels and drift. The proposed method has three configurable parameters including \\u0026lsquo;\\u003cem\\u003ek\\u0026rsquo;\\u003c/em\\u003e which defines the spread of the non-drifted data, \\u0026lsquo;\\u003cem\\u003ealpha\\u003c/em\\u003e \\u0026lsquo;which is the measure to be used in count threshold (median or maximum) and \\u003cem\\u003e\\u0026lsquo;beta\\u0026rsquo;\\u003c/em\\u003e which is the logical parameter (AND or OR) and defines whether both batch threshold and count threshold will be used in conjunction or disjunction. From experimentation, the default set of parameters is k\\u0026thinsp;=\\u0026thinsp;3, alpha=\\u0026rsquo;median\\u0026rsquo; and beta=\\u0026rsquo;AND\\u0026rsquo;. The AEDDM method is shown to detect the real drift while ignoring the virtual drift thus considerably reducing the false alarms in different sudden and gradual drifting scenarios.\\u003c/p\\u003e \\u003cp\\u003eThe proposed AEDDM approach has been experimentally analyzed on four synthetic datasets and four real-world benchmark datasets. The results show that AEDDM can detect sudden drift with zero delay in most of the cases and is also able to detect gradual drift effectively using the default set of parameters. The results on real-world datasets show that AEDDM only detects real drift i.e., the distributional changes in most important features while ignores the virtual drift i.e., the distributional changes in less important features. This has been verified by using the effect of drift on seven mostly used classifiers in a binary classification setting using top25% and bottom25% approach. The performance of AEDDM method in online setting has been compared with other state of the art batch drift detection methods including KS test and ADD using Hoeffding tree as a base classifier and the proposed methods shows better performance in terms of average batch accuracy in three out of four real-world datasets.\\u003c/p\\u003e \\u003cp\\u003eThe AEDDM approach has been configured and evaluated using a deep vanilla autoencoder with one hidden layer with some default set of hyperparameters (activation function, neuron in hidden layers, optimizer, loss function, network topology etc. ) using a batch size of 32 as the sliding window. Both autoencoders have been placed in sequential order and batch is only passed to the second autoencoder if the thresholds of first autoencoder exceeds. In these simple and default settings, the AEDDM has shown its effectiveness in detecting real drift in different sudden and gradual scenarios. There is a huge space for experimentation with other possible AEDDM architectures with different types of autoencoders with different set of hyperparameters and batch sizes for binary as well as multiclassification problems with multiple drift points which will be considered as a future work.\\u003c/p\\u003e\"},{\"header\":\"Declarations\",\"content\":\"\\u003cp\\u003eThe authors have no relevant financial or non-financial interests to disclose.\\u003c/p\\u003e\\n\\u003cp\\u003eThe authors have no competing interests relevant to this article\\u0026apos;s content.\\u0026nbsp;\\u003c/p\\u003e\\n\\u003cp\\u003eAll authors certify that they have no affiliations with or involvement in any organization or entity with any financial interest or non-financial interest in the subject matter or materials discussed in this manuscript.\\u003c/p\\u003e\\n\\u003cp\\u003eThe authors have no financial or proprietary interests in any material discussed in this article.\\u003c/p\\u003e\"},{\"header\":\"References\",\"content\":\"\\u003col\\u003e\\n\\u003cli\\u003eBaena-Garc\\u0026iacute;a, M., del Campo-\\u0026Aacute;vila, J., Fidalgo, R., Bifet, A., Gavald\\u0026agrave;, R., \\u0026amp; Morales-Bueno, R. (2006). Early Drift Detection Method. \\u003cem\\u003e4th ECML PKDD International Workshop on Knowledge Discovery from Data Streams\\u003c/em\\u003e, \\u003cem\\u003e6\\u003c/em\\u003e, 77\\u0026ndash;86. https://doi.org/10.1.1.61.6101\\u003c/li\\u003e\\n\\u003cli\\u003eBarros, R. S. M., Cabral, D. R. L., Gon\\u0026ccedil;alves, P. M., \\u0026amp; Santos, S. G. T. C. (2017). RDDM: Reactive drift detection method. \\u003cem\\u003eExpert Systems with Applications\\u003c/em\\u003e, \\u003cem\\u003e90\\u003c/em\\u003e, 344\\u0026ndash;355. https://doi.org/10.1016/j.eswa.2017.08.023\\u003c/li\\u003e\\n\\u003cli\\u003eBifet, A., \\u0026amp; Gavald\\u0026agrave;, R. (2007). Learning from time-changing data with adaptive windowing. \\u003cem\\u003eProceedings of the 7th SIAM International Conference on Data Mining\\u003c/em\\u003e, 443\\u0026ndash;448. https://doi.org/10.1137/1.9781611972771.42\\u003c/li\\u003e\\n\\u003cli\\u003eBrzeziński, D., \\u0026amp; Stefanowski, J. (2011). Accuracy updated ensemble for data streams with concept drift. \\u003cem\\u003eInternational Conference on Hybrid Intelligent Systems\\u003c/em\\u003e, \\u003cem\\u003e6679 LNAI\\u003c/em\\u003e(PART 2), 155\\u0026ndash;163. https://doi.org/10.1007/978-3-642-21222-2_19\\u003c/li\\u003e\\n\\u003cli\\u003eCabral, D. R. de L., \\u0026amp; Barros, R. S. M. de. (2018). Concept drift detection based on Fisher\\u0026rsquo;s Exact test. \\u003cem\\u003eInformation Sciences\\u003c/em\\u003e, \\u003cem\\u003e442\\u003c/em\\u003e\\u0026ndash;\\u003cem\\u003e443\\u003c/em\\u003e, 220\\u0026ndash;234. https://doi.org/10.1016/j.ins.2018.02.054\\u003c/li\\u003e\\n\\u003cli\\u003eCastellani, A., Schmitt, S., \\u0026amp; Hammer, B. (2021). Task-Sensitive Concept Drift Detector with Constraint Embedding. \\u003cem\\u003e2021 IEEE Symposium Series on Computational Intelligence, SSCI 2021 - Proceedings\\u003c/em\\u003e. https://doi.org/10.1109/SSCI50451.2021.9659969\\u003c/li\\u003e\\n\\u003cli\\u003eCosta, A. F. J., Albuquerque, R. A. S., \\u0026amp; Santos, E. M. Dos. (2018). A Drift Detection Method Based on Active Learning. \\u003cem\\u003eProceedings of the International Joint Conference on Neural Networks\\u003c/em\\u003e, \\u003cem\\u003e2018\\u003c/em\\u003e-\\u003cem\\u003eJuly\\u003c/em\\u003e. https://doi.org/10.1109/IJCNN.2018.8489364\\u003c/li\\u003e\\n\\u003cli\\u003eDitzler, G., \\u0026amp; Polikar, R. (2013a). Incremental Learning of Concept Drift from Streaming Imbalanced Data. \\u003cem\\u003eIEEE Transactions on Knowledge and Data Engineering\\u003c/em\\u003e, \\u003cem\\u003e25\\u003c/em\\u003e(10), 2283\\u0026ndash;2301. https://doi.org/10.1109/TKDE.2012.136\\u003c/li\\u003e\\n\\u003cli\\u003eDitzler, G., \\u0026amp; Polikar, R. (2011). Hellinger distance based drift detection for nonstationary environments. \\u003cem\\u003eIEEE SSCI 2011: Symposium Series on Computational Intelligence - CIDUE 2011: 2011 IEEE Symposium on Computational Intelligence in Dynamic and Uncertain Environments\\u003c/em\\u003e, 41\\u0026ndash;48. https://doi.org/10.1109/CIDUE.2011.5948491\\u003c/li\\u003e\\n\\u003cli\\u003eDitzler, G., \\u0026amp; Polikar, R. (2013b). Incremental learning of concept drift from streaming imbalanced data. \\u003cem\\u003eIEEE Transactions on Knowledge and Data Engineering\\u003c/em\\u003e, \\u003cem\\u003e25\\u003c/em\\u003e(10), 2283\\u0026ndash;2301. https://doi.org/10.1109/TKDE.2012.136\\u003c/li\\u003e\\n\\u003cli\\u003eDitzler, G., Roveri, M., Alippi, C., \\u0026amp; Polikar, R. (2015). Learning in Nonstationary Environments: A Survey. \\u003cem\\u003eIEEE Computational Intelligence Magazine\\u003c/em\\u003e, \\u003cem\\u003e10\\u003c/em\\u003e(4), 12\\u0026ndash;25. https://doi.org/10.1109/MCI.2015.2471196\\u003c/li\\u003e\\n\\u003cli\\u003eDos Reis, D., Flach, P., Matwin, S., \\u0026amp; Batista, G. (2016). Fast unsupervised online drift detection using incremental kolmogorov-smirnov test. \\u003cem\\u003eProceedings of the ACM SIGKDD International Conference on Knowledge Discovery and Data Mining\\u003c/em\\u003e, \\u003cem\\u003e13\\u003c/em\\u003e-\\u003cem\\u003e17\\u003c/em\\u003e-\\u003cem\\u003eAugu\\u003c/em\\u003e, 1545\\u0026ndash;1554. https://doi.org/10.1145/2939672.2939836\\u003c/li\\u003e\\n\\u003cli\\u003eFan, W. (2004). Systematic data selection to mine concept-drifting data streams. \\u003cem\\u003eKDD-2004 - Proceedings of the Tenth ACM SIGKDD International Conference on Knowledge Discovery and Data Mining\\u003c/em\\u003e, 128\\u0026ndash;137. https://doi.org/10.1145/1014052.1014069\\u003c/li\\u003e\\n\\u003cli\\u003eFl\\u0026oacute;rez, A., Rodr\\u0026iacute;guez-Moreno, I., Artetxe, A., Olaizola, I. G., \\u0026amp; Sierra, B. (2023). CatSight, a direct path to proper multi-variate time series change detection: perceiving a concept drift through common spatial pattern. \\u003cem\\u003eInternational Journal of Machine Learning and Cybernetics\\u003c/em\\u003e. https://doi.org/10.1007/s13042-023-01810-z\\u003c/li\\u003e\\n\\u003cli\\u003eFr\\u0026iacute;as-Blanco, I., Del Campo-\\u0026Aacute;vila, J., Ramos-Jim\\u0026eacute;nez, G., Morales-Bueno, R., Ortiz-D\\u0026iacute;az, A., \\u0026amp; Caballero-Mota, Y. (2015). Online and non-parametric drift detection methods based on Hoeffding\\u0026rsquo;s bounds. \\u003cem\\u003eIEEE Transactions on Knowledge and Data Engineering\\u003c/em\\u003e, \\u003cem\\u003e27\\u003c/em\\u003e(3), 810\\u0026ndash;823. https://doi.org/10.1109/TKDE.2014.2345382\\u003c/li\\u003e\\n\\u003cli\\u003eGama, J., Medas, P., Castillo, G., \\u0026amp; Rodrigues, P. (2004). Learning with drift detection. \\u003cem\\u003eLecture Notes in Computer Science (Including Subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)\\u003c/em\\u003e, \\u003cem\\u003e3171\\u003c/em\\u003e, 286\\u0026ndash;295. https://doi.org/10.1007/978-3-540-28645-5_29\\u003c/li\\u003e\\n\\u003cli\\u003eGama, J., Zliobaite, I., Bifet, A., Pechenizkiy, M., \\u0026amp; Bouchachia, A. (2014). A survey on concept drift adaptation. \\u003cem\\u003eACM Computing Surveys\\u003c/em\\u003e, \\u003cem\\u003e46\\u003c/em\\u003e(4). https://doi.org/10.1145/2523813\\u003c/li\\u003e\\n\\u003cli\\u003eGemaque, R. N., Costa, A. F. J., Giusti, R., \\u0026amp; dos Santos, E. M. (2020). An overview of unsupervised drift detection methods. \\u003cem\\u003eWiley Interdisciplinary Reviews: Data Mining and Knowledge Discovery\\u003c/em\\u003e, \\u003cem\\u003e10\\u003c/em\\u003e(6). https://doi.org/10.1002/widm.1381\\u003c/li\\u003e\\n\\u003cli\\u003eGoodfellow, Y. B. and A. (2016). \\u003cem\\u003eDeep Learning\\u003c/em\\u003e. MIT Press.\\u003c/li\\u003e\\n\\u003cli\\u003eG\\u0026ouml;z\\u0026uuml;a\\u0026ccedil;ık, \\u0026Ouml;., Bonab, H., B\\u0026uuml;y\\u0026uuml;k\\u0026ccedil;akır, A., \\u0026amp; Can, F. (2019). Unsupervised concept drift detection with a discriminative classifier. \\u003cem\\u003eInternational Conference on Information and Knowledge Management, Proceedings\\u003c/em\\u003e, 2365\\u0026ndash;2368. https://doi.org/10.1145/3357384.3358144\\u003c/li\\u003e\\n\\u003cli\\u003eGu, F., Zhang, G., Lu, J., \\u0026amp; Lin, C. T. (2016). Concept drift detection based on equal density estimation. \\u003cem\\u003eProceedings of the International Joint Conference on Neural Networks\\u003c/em\\u003e, \\u003cem\\u003e2016\\u003c/em\\u003e-\\u003cem\\u003eOctob\\u003c/em\\u003e, 24\\u0026ndash;30. https://doi.org/10.1109/IJCNN.2016.7727176\\u003c/li\\u003e\\n\\u003cli\\u003eHaque, A., Khan, L., \\u0026amp; Baron, M. (2016). SAND: Semi-supervised adaptive novel class detection and classification over data stream. \\u003cem\\u003e30th AAAI Conference on Artificial Intelligence, AAAI 2016\\u003c/em\\u003e, 1652\\u0026ndash;1658.\\u003c/li\\u003e\\n\\u003cli\\u003eHaque, A., Khan, L., Baron, M., Thuraisingham, B., \\u0026amp; Aggarwal, C. (2016). Efficient handling of concept drift and concept evolution over Stream Data. \\u003cem\\u003e2016 IEEE 32nd International Conference on Data Engineering, ICDE 2016\\u003c/em\\u003e, 481\\u0026ndash;492. https://doi.org/10.1109/ICDE.2016.7498264\\u003c/li\\u003e\\n\\u003cli\\u003eHarries, M., \\u0026amp; Wales, N. S. (1999). \\u003cem\\u003eSplice-2 comparative evaluation: Electricity pricing\\u003c/em\\u003e.\\u003c/li\\u003e\\n\\u003cli\\u003eHinton, G. E., \\u0026amp; Zemel, R. S. (1994). Autoencoders, Minimum Description Length and Helmholtz free Energy. \\u003cem\\u003eAdvances in Neural Information Processing Systems\\u003c/em\\u003e, \\u003cem\\u003e6\\u003c/em\\u003e, 3\\u0026ndash;10.\\u003c/li\\u003e\\n\\u003cli\\u003eHu, H., Kantardzic, M., \\u0026amp; Sethi, T. S. (2020). No Free Lunch Theorem for concept drift detection in streaming data classification: A review. In \\u003cem\\u003eWiley Interdisciplinary Reviews: Data Mining and Knowledge Discovery\\u003c/em\\u003e (Vol. 10, Issue 2). Wiley-Blackwell. https://doi.org/10.1002/widm.1327\\u003c/li\\u003e\\n\\u003cli\\u003eHulten, G., Spencer, L., \\u0026amp; Domingos, P. (2001a). Mining time-changing data streams. \\u003cem\\u003eProceedings of the Seventh ACM SIGKDD International Conference on Knowledge Discovery and Data Mining\\u003c/em\\u003e, 97\\u0026ndash;106. https://doi.org/10.1145/502512.502529\\u003c/li\\u003e\\n\\u003cli\\u003eHulten, G., Spencer, L., \\u0026amp; Domingos, P. (2001b). Mining time-changing data streams. \\u003cem\\u003eProceedings of the Seventh ACM SIGKDD International Conference on Knowledge Discovery and Data Mining\\u003c/em\\u003e, 97\\u0026ndash;106. https://doi.org/10.1145/502512.502529\\u003c/li\\u003e\\n\\u003cli\\u003eIwashita, A. S., \\u0026amp; Papa, J. P. (2019). An Overview on Concept Drift Learning. \\u003cem\\u003eIEEE Access\\u003c/em\\u003e, \\u003cem\\u003e7\\u003c/em\\u003e, 1532\\u0026ndash;1547. https://doi.org/10.1109/ACCESS.2018.2886026\\u003c/li\\u003e\\n\\u003cli\\u003eJaworski, M., Duda, P., \\u0026amp; Rutkowski, L. (2018). On applying the Restricted Boltzmann Machine to active concept drift detection. \\u003cem\\u003e2017 IEEE Symposium Series on Computational Intelligence, SSCI 2017 - Proceedings\\u003c/em\\u003e, \\u003cem\\u003e2018\\u003c/em\\u003e-\\u003cem\\u003eJanua\\u003c/em\\u003e, 1\\u0026ndash;8. https://doi.org/10.1109/SSCI.2017.8285409\\u003c/li\\u003e\\n\\u003cli\\u003eJaworski, M., Rutkowski, L., \\u0026amp; Angelov, P. (2020). Concept Drift Detection Using Autoencoders in Data Streams Processing. \\u003cem\\u003eLecture Notes in Computer Science (Including Subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)\\u003c/em\\u003e, \\u003cem\\u003e12415 LNAI\\u003c/em\\u003e, 124\\u0026ndash;133. https://doi.org/10.1007/978-3-030-61401-0_12\\u003c/li\\u003e\\n\\u003cli\\u003eJaworski, M., Rutkowski, L., Angelov, P., Artificial, P. A.-I. C. on, \\u0026amp; 2020, undefined. (2020). Concept Drift Detection Using Autoencoders in Data Streams Processing. \\u003cem\\u003eSpringer\\u003c/em\\u003e, 124\\u0026ndash;133. https://doi.org/10.1007/978-3-030-61401-0_12\\u003c/li\\u003e\\n\\u003cli\\u003eKolter, J. Z., \\u0026amp; Maloof, M. A. (2007). Dynamic weighted majority: An ensemble method for drifting concepts. \\u003cem\\u003eJournal of Machine Learning Research\\u003c/em\\u003e, \\u003cem\\u003e8\\u003c/em\\u003e, 2755\\u0026ndash;2790.\\u003c/li\\u003e\\n\\u003cli\\u003eLiao, J., Zhang, J., \\u0026amp; Ng, W. W. Y. (2016). Effects of different base classifiers to Learn++ family algorithms for concept drifting and imbalanced pattern classification problems. \\u003cem\\u003eProceedings - International Conference on Machine Learning and Cybernetics\\u003c/em\\u003e, \\u003cem\\u003e1\\u003c/em\\u003e, 99\\u0026ndash;104. https://doi.org/10.1109/ICMLC.2016.7860884\\u003c/li\\u003e\\n\\u003cli\\u003eLiu, A., Lu, J., Liu, F., \\u0026amp; Zhang, G. (2018). Accumulating regional density dissimilarity for concept drift detection in data streams. \\u003cem\\u003ePattern Recognition\\u003c/em\\u003e, \\u003cem\\u003e76\\u003c/em\\u003e, 256\\u0026ndash;272. https://doi.org/10.1016/j.patcog.2017.11.009\\u003c/li\\u003e\\n\\u003cli\\u003eLiu, G., Cheng, H. R., Qin, Z. G., Liu, Q., \\u0026amp; Liu, C. X. (2013). E-CVFDT: An improving CVFDT method for concept drift data stream. \\u003cem\\u003e2013 International Conference on Communications, Circuits and Systems, ICCCAS 2013\\u003c/em\\u003e, \\u003cem\\u003e1\\u003c/em\\u003e, 315\\u0026ndash;318. https://doi.org/10.1109/ICCCAS.2013.6765241\\u003c/li\\u003e\\n\\u003cli\\u003eLosing, V., Hammer, B., \\u0026amp; Wersing, H. (2017). KNN classifier with self adjusting memory for heterogeneous concept drift. \\u003cem\\u003eProceedings - IEEE International Conference on Data Mining, ICDM\\u003c/em\\u003e, 291\\u0026ndash;300. https://doi.org/10.1109/ICDM.2016.141\\u003c/li\\u003e\\n\\u003cli\\u003eLu, J., Liu, A., Dong, F., Gu, F., Gama, J., \\u0026amp; Zhang, G. (2019). Learning under Concept Drift: A Review. \\u003cem\\u003eIEEE Transactions on Knowledge and Data Engineering\\u003c/em\\u003e, \\u003cem\\u003e31\\u003c/em\\u003e(12), 2346\\u0026ndash;2363. https://doi.org/10.1109/TKDE.2018.2876857\\u003c/li\\u003e\\n\\u003cli\\u003eMasud, M., Gao, J., Khan, L., Han, J., \\u0026amp; Thuraisingham, B. M. (2011). Classification and novel class detection in concept-drifting data streams under time constraints. \\u003cem\\u003eIEEE Transactions on Knowledge and Data Engineering\\u003c/em\\u003e, \\u003cem\\u003e23\\u003c/em\\u003e(6), 859\\u0026ndash;874. https://doi.org/10.1109/TKDE.2010.61\\u003c/li\\u003e\\n\\u003cli\\u003eMenon, A. G., \\u0026amp; Gressel, G. (2021). Concept Drift Detection in Phishing Using Autoencoders. \\u003cem\\u003eCommunications in Computer and Information Science\\u003c/em\\u003e, \\u003cem\\u003e1366\\u003c/em\\u003e, 208\\u0026ndash;220. https://doi.org/10.1007/978-981-16-0419-5_17\\u003c/li\\u003e\\n\\u003cli\\u003eMontiel, J., Read, J., Bifet, A., \\u0026amp; Abdessalem, T. (2018). Scikit-multiflow: A Multi-output Streaming Framework. \\u003cem\\u003eJournal of Machine Learning Research\\u003c/em\\u003e, \\u003cem\\u003e19\\u003c/em\\u003e. https://doi.org/10.5555/3291125.3309634\\u003c/li\\u003e\\n\\u003cli\\u003eNick Street, W., \\u0026amp; Kim, Y. S. (2001). A streaming ensemble algorithm (SEA) for large-scale classification. \\u003cem\\u003eProceedings of the Seventh ACM SIGKDD International Conference on Knowledge Discovery and Data Mining\\u003c/em\\u003e, 377\\u0026ndash;382. https://doi.org/10.1145/502512.502568\\u003c/li\\u003e\\n\\u003cli\\u003eNishida, K., \\u0026amp; Yamauchi, K. (2007). Detecting concept drift using statistical testing. \\u003cem\\u003eLecture Notes in Computer Science (Including Subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)\\u003c/em\\u003e, \\u003cem\\u003e4755 LNAI\\u003c/em\\u003e, 264\\u0026ndash;269. https://doi.org/10.1007/978-3-540-75488-6_27\\u003c/li\\u003e\\n\\u003cli\\u003eOladele, S. (2021). \\u003cem\\u003eA Comprehensive Guide on How to Monitor Your Models in Production - neptune.ai\\u003c/em\\u003e. P\\u0026aacute;gina Oficial Neptune AI. https://neptune.ai/blog/how-to-monitor-your-models-in-production-guide\\u003c/li\\u003e\\n\\u003cli\\u003ePage, E. S. (1954). Continuous Inspection Schemes. \\u003cem\\u003eBiometrika\\u003c/em\\u003e, \\u003cem\\u003e41\\u003c/em\\u003e(1/2), 100. https://doi.org/10.2307/2333009\\u003c/li\\u003e\\n\\u003cli\\u003ePesaranghader, A., Viktor, H. L., \\u0026amp; Paquet, E. (2018). McDiarmid Drift Detection Methods for Evolving Data Streams. \\u003cem\\u003eProceedings of the International Joint Conference on Neural Networks\\u003c/em\\u003e, \\u003cem\\u003e2018\\u003c/em\\u003e-\\u003cem\\u003eJuly\\u003c/em\\u003e. https://doi.org/10.1109/IJCNN.2018.8489260\\u003c/li\\u003e\\n\\u003cli\\u003ePinag\\u0026eacute;, F., dos Santos, E. M., \\u0026amp; Gama, J. (2020). A drift detection method based on dynamic classifier selection. \\u003cem\\u003eData Mining and Knowledge Discovery\\u003c/em\\u003e, \\u003cem\\u003e34\\u003c/em\\u003e(1), 50\\u0026ndash;74. https://doi.org/10.1007/s10618-019-00656-w\\u003c/li\\u003e\\n\\u003cli\\u003eQahtan, A., Alharbi, B., Wang, S., \\u0026amp; Zhang, X. (2015). A PCA-based change detection framework for multidimensional data streams. \\u003cem\\u003eProceedings of the ACM SIGKDD International Conference on Knowledge Discovery and Data Mining\\u003c/em\\u003e, \\u003cem\\u003e2015\\u003c/em\\u003e-\\u003cem\\u003eAugus\\u003c/em\\u003e, 935\\u0026ndash;944. https://doi.org/10.1145/2783258.2783359\\u003c/li\\u003e\\n\\u003cli\\u003eRaab, C., Heusinger, M., \\u0026amp; Schleif, F. M. (2020). Reactive Soft Prototype Computing for Concept Drift Streams. \\u003cem\\u003eNeurocomputing\\u003c/em\\u003e, \\u003cem\\u003e416\\u003c/em\\u003e, 340\\u0026ndash;351. https://doi.org/10.1016/j.neucom.2019.11.111\\u003c/li\\u003e\\n\\u003cli\\u003eSchelter, S., Biessmann, F., Januschowski, T., Salinas, D., Seufert, S., \\u0026amp; Szarvas, G. (2018). On Challenges in Machine Learning Model Management. \\u003cem\\u003eBulletin of the IEEE Computer Society Technical Committee on Data Engineering\\u003c/em\\u003e, 5\\u0026ndash;13. http://sites.computer.org/debull/A18dec/p5.pdf\\u003c/li\\u003e\\n\\u003cli\\u003eSchlimmer, J. C., \\u0026amp; Granger, R. H. (1986). Incremental Learning from Noisy Data. \\u003cem\\u003eMachine Learning\\u003c/em\\u003e, \\u003cem\\u003e1\\u003c/em\\u003e(3), 317\\u0026ndash;354. https://doi.org/10.1023/A:1022810614389\\u003c/li\\u003e\\n\\u003cli\\u003eSchr\\u0026ouml;der, T., \\u0026amp; Schulz, M. (2022). Monitoring machine learning models: A categorization of challenges and methods. In \\u003cem\\u003eData Science and Management\\u003c/em\\u003e. https://doi.org/10.1016/j.dsm.2022.07.004\\u003c/li\\u003e\\n\\u003cli\\u003eSethi, T. S., \\u0026amp; Kantardzic, M. (2015). Don\\u0026rsquo;t pay for validation: Detecting drifts from unlabeled data using Margin Density. \\u003cem\\u003eProcedia Computer Science\\u003c/em\\u003e, \\u003cem\\u003e53\\u003c/em\\u003e(1), 103\\u0026ndash;112. https://doi.org/10.1016/j.procs.2015.07.284\\u003c/li\\u003e\\n\\u003cli\\u003eSethi, T. S., \\u0026amp; Kantardzic, M. (2017). On the reliable detection of concept drift from streaming unlabeled data. \\u003cem\\u003eArXiv\\u003c/em\\u003e.\\u003c/li\\u003e\\n\\u003cli\\u003eSidhu, P., \\u0026amp; Bhatia, M. P. S. (2015). An online ensembles approach for handling concept drift in data streams: diversified online ensembles detection. \\u003cem\\u003eInternational Journal of Machine Learning and Cybernetics\\u003c/em\\u003e, \\u003cem\\u003e6\\u003c/em\\u003e(6), 883\\u0026ndash;909. https://doi.org/10.1007/s13042-015-0366-1\\u003c/li\\u003e\\n\\u003cli\\u003eSidhu, P., \\u0026amp; Bhatia, M. P. S. (2019). A two ensemble system to handle concept drifting data streams: recurring dynamic weighted majority. \\u003cem\\u003eInternational Journal of Machine Learning and Cybernetics\\u003c/em\\u003e, \\u003cem\\u003e10\\u003c/em\\u003e(3), 563\\u0026ndash;578. https://doi.org/10.1007/s13042-017-0738-9\\u003c/li\\u003e\\n\\u003cli\\u003eSoppin, S., Ramachandra, M., \\u0026amp; Chandrashekar, B. N. (2021). \\u003cem\\u003eEssentials of Deep Learning and AI: Experience Unsupervised Learning, Autoencoders, Feature Engineering, and Time Series Analysis with TensorFlow, Keras, and scikit-learn (English Edition)\\u003c/em\\u003e.\\u003c/li\\u003e\\n\\u003cli\\u003eSpinosa, E. J., De Carvalho, A. P. D. L. F., \\u0026amp; Gama, J. (2007). OLINDDA: A cluster-based approach for detecting novelty and concept drift in data streams. \\u003cem\\u003eProceedings of the ACM Symposium on Applied Computing\\u003c/em\\u003e, 448\\u0026ndash;452. https://doi.org/10.1145/1244002.1244107\\u003c/li\\u003e\\n\\u003cli\\u003eWald, A. (1973). \\u003cem\\u003eSequential Analysis\\u003c/em\\u003e. DOVER PUBLICATIONS, INC.\\u003c/li\\u003e\\n\\u003cli\\u003eWang, Haixun, Fan, W., Yu, P. S., \\u0026amp; Han, J. (2003). Mining concept-drifting data streams using ensemble classifiers. \\u003cem\\u003eProceedings of the ACM SIGKDD International Conference on Knowledge Discovery and Data Mining\\u003c/em\\u003e, 226. https://doi.org/10.1145/956755.956778\\u003c/li\\u003e\\n\\u003cli\\u003eWang, Heng, \\u0026amp; Abraham, Z. (2015). Concept drift detection for streaming data. \\u003cem\\u003eProceedings of the International Joint Conference on Neural Networks\\u003c/em\\u003e, \\u003cem\\u003e2015\\u003c/em\\u003e-\\u003cem\\u003eSepte\\u003c/em\\u003e. https://doi.org/10.1109/IJCNN.2015.7280398\\u003c/li\\u003e\\n\\u003cli\\u003eWang, S., Minku, L. L., Ghezzi, D., Caltabiano, D., Tino, P., \\u0026amp; Yao, X. (2013). Concept Drift Detection for Online Class Imbalance Learning. \\u003cem\\u003eProceedings of the International Joint Conference on Neural Networks\\u003c/em\\u003e. https://doi.org/10.1109/IJCNN.2013.6706768\\u003c/li\\u003e\\n\\u003cli\\u003eWang, Z., \\u0026amp; Wang, W. (2020a). Concept Drift Detection Based on Kolmogorov\\u0026ndash;Smirnov Test. \\u003cem\\u003eLecture Notes in Electrical Engineering\\u003c/em\\u003e, \\u003cem\\u003e572 LNEE\\u003c/em\\u003e, 273\\u0026ndash;280. https://doi.org/10.1007/978-981-15-0187-6_31\\u003c/li\\u003e\\n\\u003cli\\u003eWang, Z., \\u0026amp; Wang, W. (2020b). Concept Drift Detection Based on Kolmogorov\\u0026ndash;Smirnov Test. \\u003cem\\u003eLecture Notes in Electrical Engineering\\u003c/em\\u003e, \\u003cem\\u003e572 LNEE\\u003c/em\\u003e, 273\\u0026ndash;280. https://doi.org/10.1007/978-981-15-0187-6_31\\u003c/li\\u003e\\n\\u003cli\\u003eWares, S., Isaacs, J., \\u0026amp; Elyan, E. (2019). Data stream mining: methods and challenges for handling concept drift. \\u003cem\\u003eSN Applied Sciences\\u003c/em\\u003e, \\u003cem\\u003e1\\u003c/em\\u003e(11). https://doi.org/10.1007/s42452-019-1433-0\\u003c/li\\u003e\\n\\u003cli\\u003eYong, B. X., Fathy, Y., \\u0026amp; Brintrup, A. (2020a). Bayesian Autoencoders for Drift Detection in Industrial Environments. \\u003cem\\u003e2020 IEEE International Workshop on Metrology for Industry 4.0 and IoT, MetroInd 4.0 and IoT 2020 - Proceedings\\u003c/em\\u003e, 627\\u0026ndash;631. https://doi.org/10.1109/MetroInd4.0IoT48571.2020.9138306\\u003c/li\\u003e\\n\\u003cli\\u003eYong, B. X., Fathy, Y., \\u0026amp; Brintrup, A. (2020b). Bayesian Autoencoders for Drift Detection in Industrial Environments. \\u003cem\\u003e2020 IEEE International Workshop on Metrology for Industry 4.0 and IoT, MetroInd 4.0 and IoT 2020 - Proceedings\\u003c/em\\u003e, 627\\u0026ndash;631. https://doi.org/10.1109/MetroInd4.0IoT48571.2020.9138306\\u003c/li\\u003e\\n\\u003cli\\u003eYu, S., \\u0026amp; Abraham, Z. (2017). Concept drift detection with hierarchical hypothesis testing. \\u003cem\\u003eProceedings of the 17th SIAM International Conference on Data Mining, SDM 2017\\u003c/em\\u003e, 768\\u0026ndash;776. https://doi.org/10.1137/1.9781611974973.86\\u003c/li\\u003e\\n\\u003c/ol\\u003e\"}],\"fulltextSource\":\"\",\"fullText\":\"\",\"funders\":[],\"hasAdminPriorityOnWorkflow\":false,\"hasManuscriptDocX\":true,\"hasOptedInToPreprint\":true,\"hasPassedJournalQc\":\"\",\"hasAnyPriority\":true,\"hideJournal\":true,\"highlight\":\"\",\"institution\":\"Institute of Business Administration Karachi\",\"isAcceptedByJournal\":false,\"isAuthorSuppliedPdf\":false,\"isDeskRejected\":\"\",\"isHiddenFromSearch\":false,\"isInQc\":false,\"isInWorkflow\":false,\"isPdf\":false,\"isPdfUpToDate\":true,\"isWithdrawnOrRetracted\":false,\"journal\":{\"display\":true,\"email\":\"info@researchsquare.com\",\"identity\":\"researchsquare\",\"isNatureJournal\":false,\"hasQc\":true,\"allowDirectSubmit\":true,\"externalIdentity\":\"\",\"sideBox\":\"\",\"snPcode\":\"\",\"submissionUrl\":\"/submission\",\"title\":\"Research Square\",\"twitterHandle\":\"researchsquare\",\"acdcEnabled\":true,\"dfaEnabled\":false,\"editorialSystem\":\"\",\"reportingPortfolio\":\"\",\"inReviewEnabled\":false,\"inReviewRevisionsEnabled\":true},\"keywords\":\"Concept drift, Machine learning, Autoencoder, Data stream, Deep learning\",\"lastPublishedDoi\":\"10.21203/rs.3.rs-3244928/v1\",\"lastPublishedDoiUrl\":\"https://doi.org/10.21203/rs.3.rs-3244928/v1\",\"license\":{\"name\":\"CC BY 4.0\",\"url\":\"https://creativecommons.org/licenses/by/4.0/\"},\"manuscriptAbstract\":\"\\u003cp\\u003eIn streaming data environments, data characteristics and probability distributions are likely to change over time, causing a phenomenon called concept drift, which poses challenges for machine learning models to predict accurately. In such non-stationary environments, there is a need to detect concept drift and update the model to maintain an acceptable predictive performance. Existing approaches to drift detection have inherent problems like requirements of truth labels in supervised detection methods and high false positive rate in case of unsupervised drift detection. In this paper, we propose a semi-supervised Autoencoder based Drift Detection Method (AEDDM) aimed at detecting drift without the need of truth labels, yet with a high confidence that the detected drift is real. In a binary classification setting, AEDDM uses two autoencoders in a layered architecture, trained on labelled data and uses a thresholding mechanism based on reconstruction error to signal the presence of drift. The proposed method has been evaluated on four synthetic and four real world datasets with different drifting scenarios. In case of real-world datasets, the induced and detected drifts have been evaluated from classifier\\u0026rsquo;s performance viewpoint using seven mostly used batch classifiers as well as from adaptation perspective in an online learning environment using Hoeffding Tree classifier. The results show that AEDDM affectively detects the distributional changes in data which are most likely to impact the classifier\\u0026rsquo;s performance (real drift) while ignoring the virtual drift thus considerably reducing the false alarms with an ability to adapt in terms of classification performance.\\u003c/p\\u003e\",\"manuscriptTitle\":\"A Novel Framework for Concept Drift Detection for Classification Problems in Data Streams\",\"msid\":\"\",\"msnumber\":\"\",\"nonDraftVersions\":[{\"code\":1,\"date\":\"2023-08-09 15:36:20\",\"doi\":\"10.21203/rs.3.rs-3244928/v1\",\"editorialEvents\":[{\"type\":\"communityComments\",\"content\":0}],\"status\":\"published\",\"journal\":{\"display\":true,\"email\":\"info@researchsquare.com\",\"identity\":\"researchsquare\",\"isNatureJournal\":false,\"hasQc\":true,\"allowDirectSubmit\":true,\"externalIdentity\":\"\",\"sideBox\":\"\",\"snPcode\":\"\",\"submissionUrl\":\"/submission\",\"title\":\"Research Square\",\"twitterHandle\":\"researchsquare\",\"acdcEnabled\":true,\"dfaEnabled\":false,\"editorialSystem\":\"\",\"reportingPortfolio\":\"\",\"inReviewEnabled\":false,\"inReviewRevisionsEnabled\":true}}],\"origin\":\"\",\"ownerIdentity\":\"6a78583c-b87b-4f0b-bb6b-ab27a6532938\",\"owner\":[],\"postedDate\":\"August 9th, 2023\",\"published\":true,\"recentEditorialEvents\":[],\"rejectedJournal\":[],\"revision\":\"\",\"amendment\":\"\",\"status\":\"posted\",\"subjectAreas\":[{\"id\":23886876,\"name\":\"Artificial Intelligence and Machine Learning\"}],\"tags\":[],\"updatedAt\":\"2023-08-09T15:36:21+00:00\",\"versionOfRecord\":[],\"versionCreatedAt\":\"2023-08-09 15:36:20\",\"video\":\"\",\"vorDoi\":\"\",\"vorDoiUrl\":\"\",\"workflowStages\":[]},\"version\":\"v1\",\"identity\":\"rs-3244928\",\"journalConfig\":\"researchsquare\"},\"__N_SSP\":true},\"page\":\"/article/[identity]/[[...version]]\",\"query\":{\"redirect\":\"/article/rs-3244928\",\"identity\":\"rs-3244928\",\"version\":[\"v1\"]},\"buildId\":\"WrCJVZZCHTDjtuVLN7oU0\",\"isFallback\":false,\"isExperimentalCompile\":false,\"dynamicIds\":[84888],\"gssp\":true,\"scriptLoader\":[]}","source_license":"CC-BY-4.0","license_restricted":false}