function T = msmt_tree(A,B,maxdepth,tol,CF,min_points) % MSMT_TREE obtains necessary information to call the function % msmt_tree_grow that grow the decision tree generated by the MSM-T % algorithm. % % T = msmt_tree(A,B,maxdepth,tol,CF) returns the decision % tree generated by MSM-T and puts it in a file. % % T: matrix representing the decision tree. % (let n be the dimension of the points in set A and set B.) % for column j in matrix T: % T(1:n,j) = w (the weight vector for this particular node) % T(n+1,j) = theta (the threshold value for this node) % T(n+2,j) = lchild (index of the left child of this node) % T(n+3,j) = rchild (index of the right child of this node) % T(n+4,j) = depth of the current node % NOTE: if lchild = -1, then node's left child is a leaf node % if rchild = -1, then node's right child is a leaf node % A: matrix representing set A % B: matris representing set B % % maxdepth: maximum allowable depth of decision tree, integer >= 1 % NOTE: if maxdepth is not given, it is set to a huge % positive integer. % % tol: percentage allowable error in a leaf node, 0 <= tol <= 1 % NOTE: if tol is not given, tol = 0.0 % % CF: certainty factor used in pruning algorithm (see C4.5: Programs % for Machine Learning by J. Ross Quinlan for more information). % NOTE: if CF is not given or CF = 0.0, then the generated % tree will not be pruned. % % min_points: minimum number of points such that if the number of % misclassified points at a decision node are less than % min_points, this decision node will be pruned. % % NOTE: maxdepth, tol, CF, min_points are optional parameters % This function is written to call the recursive function msmt_tree_grow, % generating the tree, T. msmt_tree_grow is not called directly because % there are some parameters passed which are only used in the recursion. % begin global n; if nargin < 6 min_points = 0; end if nargin < 5 CF = 0.0; end if nargin < 4 tol = 0.0; end if nargin < 3 maxdepth = round(realmax); % big number end % the value of n is the dimension of the points (i.e. number of columns in % matrix A) n = size(A,2); % depth is defined here to the the number of decisions made on the way % down the tree. so initially, the depth is 1, since we always will make % one decision (draw one plane). curdepth = 1; % plant this seed and grow this tree!!!!! T = []; T = msmt_tree_grow(T,A,B,maxdepth,curdepth,tol); if (CF ~= 0.0) T = prune_tree_C45(T,A,B,CF); end if (min_points ~= 0) T = prune_tree_points(T,A,B,min_points); end