There are some new techniques able to work with data streams. The VFDT algorithm of Domingos and Hulten [1]} builds incrementally a decision tree, using a small subset of examples to determine which attribute to use to split at a given node. They employ Hoeffding bounds to show that the resulting tree can be made arbitrarily similar to one that would be built having all the data at hand. Another approach is called CVFDT and is presented in [2]}. It works by keeping its model consistent with respect to a sliding window of data from the data stream, and creating and replacing alternate decision subtrees when it detects that the distribution of data is changing at a node. The drawback is that it does not automatically detect the optimal window size like Adwin does. Bifet and Gavaldá [3]} develop other approaches based on VFDT algorithm, such as HWT-Adwin and HAT that use Adwin [4]} as a change detector. It keeps a variable-length window of recently seen items and it is able to automatically detect and adapt its window to the current rate of change. A user of Adwin has only to decide how to measure error (e.g., using accuracy). Adwin, in (REF ), uses a threshold called \(delta\)  in order to automatically configure the error with two levels, named warning and change level. The warning level is identified using \(delta\times 10\) , while the change level is identified using \(delta\) . Since \(delta\)  appears to the denominator, using \(delta\times 10\)  will produce a lower value than using \(delta\) . So the warning level will occur before the change one. \(n\)  is the width of the window in that moment. Adwin monitors the error over the data in the window. If the error becomes greater than a warning level, Adwin assumes that a concept drift starts to occur and it starts collecting new samples in a new window, too. If the error becomes greater than the change level, Adwin assumes that a concept occurred and it substitutes the old window with the new one.
\( levelError = \ln (\frac{2\times \ln {n}}{delta})\) 
