||The step is done in some node of tree - on the data in table with the same number in node column. The algorithm is recursive.
The structure of the step is:
1. Test end condition. If it is satisfied end the branch of algorithm.
2. Get all the possible splitters (way to split data in the node).
- If there is no splitter, end the branch of algorithm.
3. Select the best splitter of them.
4. Splitt the data according the best splitter and for each new son do a step.
In the step it is possible to make a pause and show the details of the splitters to user. It is in the case, that the DecTreeProperties.Step is true.
If the user abort the process of stepping (click Cancel or Run), the there are special private attributes (in DecTreeMethod) abortedProcess and noStep, which is also in each step tested.
||It is implemted in general algorithm (in DecTreeMethod) like EndCondition.
The end condition satisfies if the node is full of only one class.
||It is method-dependent work. Usually it makes a splitter from each attribute, which has at least two different values in the actual node. It realized in GetSplitters method of concrete algorithms. (See General Algorithm for more information about splitters idea.)
|Select the Best Splitter
||It is method-dependent work, but in the general algorithm there is a basic structure of this searching. Foreach splitter in the node it compares it with actual best one and the winner is the new best one. The comparing is done by CompareSplitters of concrete algorithms.
|Split the Data
||The splitting of the data according the splitter is done in DecTreeMethod.Split. There is no needed the concrete algorithm's help, because the interface (abstract class DecTreeSplitter) of splitters gives count of the parts and SQL condition for each this part. (See General Algorithm for more information about splitters idea.)