Incremental Hierarchical Discriminant Regression (IHDR)

Incremental Hierarchical Discriminant Regression is a self-organization engine, which incrementally builds a decision or regression tree for a high dimensional input and output space.  It operates sample by sample, and in real time.  IHDR is an approximate computational model for automatic development of the associative cortical areas, with sensory inputs and motor (action) outputs.  We have developed the IHDR algorithm with both C++ and MATLAB.  It has been tested with many types of data, such as indoor and outdoor robot navigation and face classification with different poses and lighting conditions.  The experimental results have demonstrated that the algorithm can deal with a very large sample sizes as well as very large input dimension, and still run in real-time.


Using the program

Please download the zip file here, which provides a library of the IHDR tree, named as ”libihdr.a”. The makefile is used to generate an executable file – ihdrexample, in order to to provide an example of how to use the library.

Extract the zip file in your project directory, which includes:
– library: “libihdr.a”
– header files: “IHDR.h, Cgs.h, Mah dist.h, Misc.h, Node.h, Param.h, Prob.h, sample.h, Transfer.h, Tree.h”
– makefile: “makefile”
– example file: “ihdrexample.cpp”
– training file: “letter.tra”
– testing file: “letter.tes”
– readme file of the “letter” dataset: “letter doc.txt”


The example file shows you how to use “libihdr.a.”. The task here is to generate an IHDR tree for a classification task, based on the training file and testing file specified above. Run the makefile to generate the executable file “ihdrexample.” The format to run the executable file is “ihdrexample -x <input dimension> -y <output dimension> -n <name of the tree>”. According to the example, you can also generate your own program for other classification or regression tasks. The package contains the source code for the IHDR tree, which can be used for further modification and development.