Machine Learning Laboratory
From ITI 3.9 to ITI 3.10 (23 March 2001)
From ITI 3.8 to ITI 3.9 (26 August 1998)
- Fixed tree save/restore. Format of .iti files has changed.
- Added function to delete an instance from the current tree.
From ITI 3.7 to ITI 3.8 (11 December 1997)
- Fixed dmti - it was not installing the intended test at a decision node.
From ITI 3.6 to ITI 3.7 (17 October 1997)
- Rewrote cpu_used() to use library function times(), which
is in standard library. That function returns times in clock
ticks, so there is extra code to convert those to seconds,
based on number of ticks per second, obtained via call to
sysconf(). The getrusage(), which was nonstandard, is now
- The cpu_used() function counts both user and sys time -
formerly it counted just user time. Cpu results with this version
should not be compared to cpu results from earlier versions.
From ITI 3.5 to ITI 3.6 (10 October 1997)
- Fixed problem in -M option. It may have been computing the number of
possible cutpoints at a node incorrectly for the purpose of computing minimum
From ITI 3.4 to ITI 3.5 (26 August 1997)
- Input scanner trims leading and trailing blanks from variable values and class names.
From ITI 3.3 to ITI 3.4 (5 August 1997)
- Moved two #defines from iti.h to iti_pst.h
- Changed several %d formatters in plot.c to %3.2lf
From ITI 3.2 to ITI 3.3 (28 July 1997)
- sprint argument for error message missing in dmti.c
From ITI 3.1 to ITI 3.2 (26 July 1997)
- Transpose_tree fixed.
From ITI 2.9 to ITI 3.1 (25 July 1997)
- Parentheses in variables names or symbolic values are removed automatically when loaded.
- Counting error in transpose_tree fixed.
From ITI 2.8 to ITI 2.9
- Removed Goodman-Kruskal indirect metric.
- Removed gain-ratio indirect metric.
- Made Kolmogorov-Smirnoff distance the only indirect metric.
- Tree save-to-file and restore-from-file rewritten. Tree
now saved in an ascii form. Still not for human consumption,
- Reorganized the .h files. There is now a config.h file with
a few constants in it. No need to look at anything else.
- All known bugs eliminated from dmti. Appears bug free.
- Data structure for values of instance changed to be a dynamically
- Variable names stored globally just once. No longer anywhere
- Source files reorganized. The iti.c file is now an application
that makes use of the library routines. An API will be
- Leave-one-out and k-fold cross validation code removed.
- Data structure for variables changed to be a dynamically allocated
array. (It used to be an AVL tree) Much code changed because
of this. There is an improvement in both time and space.
- For PST, tree arcs now have `t' and `f' labels.
- For PST, default font size is now 6 (was 8).
- Switched to Web-based documentation.
From ITI 2.7 to ITI 2.8 (22 July 1996)
- Added Goodman-Kruskal indirect metric.
- Added minimum number of instances of second majority class that
are needed to consider leaf as impure. Default is 1.
- When loading instances, the value "NAN" is equated
with "?", i.e. missing.
From ITI 2.6 to ITI 2.7
- Instances with missing values are now handled differently. It is
now assumed that an instance with a missing value fails the test at a
node. This means that the FALSE branch is taken. This is so for both
training and testing. Many coding changes.
- Majority class now breaks ties in favor of classname that is
- Cutpoints that would break pure intervals (for numeric variables)
no longer evaluated. This may also change tree that will be built as
it changes the average gain.
- xval-prep no longer prints to stderr.
- class_counts now of type int.
- Number of nodes is now often broken into number of leaves and
number of decision nodes. The 'N' option becomes the 'L' option.
From ITI 2.5 to ITI 2.6
- Fixed bug in transpose_tree.
From ITI 2.4 to ITI 2.5
- Converted to ANSII C.
- A tie (according to attribute selection metric) between two
symbolic values of a variable is now broken in favor of the
lexicographically lesser of the two. (Formerly, it was the case that
symbolic value with the lower address was preferred, which can cause
some problems in systems that embed ITI.) Similarly, a tie between
two variables is now broken in favor of the lexicographically lesser
of the two.
- Added ability to select attribute selection metric. Instead of
always using gain-ratio, one can select kolmogorov_smirnov. Default
is gain-ratio. See iti.doc for more info. Some other metrics may be
added in the future.
- Renamed variety of procedures/functions related to gain_ratio.
Distinguishes general parts of metric from specific metric used.
- Brought xval.sh up to date.
From ITI 2.3 to ITI 2.4
- Added k-fold cross-validation.
- Replaced each call to nint() with call to rint() in information.c.
From ITI 2.2 to ITI 2.3
- Removed an extraneous line of code.
- Fixed error-correction mode.
- Fixed plot.c and added a plot.doc.
From ITI 2.1 to ITI 2.2
- Fixed printing of tree, was omitting symbolic attribute value.
- Changed `optimize' namings to `dmti', i.e. direct metric tree
induction. This conforms to how system is now described in TR-95-18.
- Added restore_tree() and save_tree().
- Added leave-one-out cross validation.
- Reworked specification of arguments on command line.
- Added new tech report (TR 95-18) describing ITI and DMTI.
From ITI 1.8 to ITI 2.1
- Fixed documentation regarding command line arguments.
- Fixed scanner to allow instances without a trailing '.'.
- Reworked optimize.c to create separate list of tests at a node
before trying each one. Necessary because root node of any
tree/subtree may change due to tree restructuring. Can't pick the
tests out of a node because node can change.
- Reworked how transposition is done for tests with numeric variables.
Got rid of `slewing'. Just do a regular transposition without any
Last Updated: August 26, 1998
© Copyright 1998, All Rights Reserved, Paul Utgoff, University of Massachusetts