Clojure implementation of the paper "Decision Stream: Cultivating Deep Decision Trees"
This repository provides a basic implementation of the Decision Stream regression and classification algorithm. Unlike the classical decision tree approach, this method builds a directed acyclic graph with high degree of connectivity by merging statistically indistinguishable nodes at each iteration.
The dependencies are configured in the pom.xml file.
data.gz
with training data by running tar -xvzf data.gz
decision-stream.jar
with Leiningen (lein uberjar
) or Maven (mvn package
).
java -jar decision-stream.jar base-directory train-data train-answers test-data test-answers learning_mode significance-threshold
The program takes 7 input parameters:
base-directory
- path to the datasettrain-data
- file with training datatrain-answers
- file with training answerstest-data
- file with test datatest-answers
- file with test answerslearning_mode:
classification
orregression
- classification or regression problemsignificance-threshold
- threshold for merging/splitting operations
Example:
java -jar decision-stream.jar data/ailerons/ train_data.csv train_answ.csv test_data.csv test_answ.csv regression 0.02
The datasets prepared for training in the data
folder: