% TREETEST   ツリーに対する誤差率
%
% COST = TREETEST(T,'resubstitution') は、再置換の手法を用いて、ツリー
% T のコストを計算します。T は、TREEFIT 関数によって作成された決定木で
% す。ツリーのコストは、終端ノードの推定確率に各ノードのコストをかけた
% もののすべてに渡って和をとります。T が分類木の場合、ノードのコストは、
% ノード内の観測の誤判別の和です。T は回帰木の場合、ノードのコストは、
% ノード内の観測に関する誤差の二乗平均です。COST は、T に対する最適な
% 削除(pruning) 列内の各サブツリーに対するコスト値のベクトルです。
% 再置換のコストは、オリジナルツリーを作成するために使われるのと同じ
% 標本に基づきます。従って、それは新しいデータにツリーを適用する際に
% 起こり得るコストを過小評価します。
%
% COST = TREETEST(T,'test',X,Y) は、検定標本として、予測子の行列 X と
% 応答 Y を使用し、その標本に決定木 T を適用し、検定標本に対して計算
% されたコスト値のベクトル COST を出力します。X と Y は、ツリー T を
% 求めるために用いた標本である学習標本と同じであってはいけません。
%
% COST = TREETEST(T,'crossvalidate',X,Y) は、コストベクトルの計算に
% 10分割交差検定を使用します。X と Y は、ツリー T に近似するために使用
% された標本である学習標本でなければいけません。関数は、標本をだいたい
% 同じ大きさのランダムに選択された10の副標本に分割します。分類木につい
% ては、副標本もまた、だいたい同比率でクラス標本をもちます。個々の副標
% 本について、TREETEST は、残りのデータにツリーを近似し、それを副標本
% を予測するために使用します。それは、すべての標本に対するコストを計算
% するために、すべての副標本からの情報を集積していきます。
%
% [COST,SECOST,NTNODES,BESTLEVEL] = TREETEST(...) は、各 COST 値の標準
% 誤差を含んでいるベクトル SECOST と、各サブツリーに対して終端ノードの
% 数を含んでいるベクトル NTNODES と、推定された削除(pruning)の最適レベ
% ルを含んでいるスカラの BESTLEVEL を出力します。BESTLEVEL=0 は、削除
% されないこと(すなわち、完全な取り除かれていないツリー)を意味します。
% 最適レベルとは、最小コストのサブツリーから1標準誤差以内にある最も
% 小さなツリーを作成するものです。
%
% [...] = TREETEST(...,'PARAM1',val1,'PARAM2',val2,...) は、以下から
% 選択されるオプションパラメータ 名/値 の組み合わせを指定します。:
%
%    'nsamples'   交差検定の標本の数 (デフォルト 10)
%    'treesize'   コストが最小コストから1標準誤差以内となる最も小さい
%                 ツリーを選択する'se'(デフォルト) か、(再置換のエラー
%                 の計算に対しては重要でない)最小のコストツリーを選択
%                 する 'min' のどちらか。
%
% 例題:  交差検定を用いて、Fisher の iris data に対する最適なツリーを
%        検索します。実線は、各ツリーの大きさに対して推定されたコスト
%        を示し、点線が、最小から1標準誤差の点を示しています。また、
%        正方形のマーカーが、点線の下にある最も小さいツリーにつけられ
%        ます。
%    % 大きいツリーで始めます
%    load fisheriris;
%    t = treefit(meas,species','splitmin',5);
%
%    % 最小のコストツリーを検索します。
%    [c,s,n,best] = treetest(t,'cross',meas,species);
%    tmin = treeprune(t,'level',best);
%
%    % 最小のコストツリーの1標準誤差以内の最も小さいツリーをプロットします。
%    [mincost,minloc] = min(c);
%    plot(n,c,'b-o', n(best+1),c(best+1),'bs',...
%         n,(mincost+s(minloc))*ones(size(n)),'k--');
%    xlabel('Tree size (number of terminal nodes)')
%    ylabel('Cost')
%
%   参考 TREEFIT, TREEDISP, TREEPRUNE, TREEVAL.


%   Copyright 1993-2004 The MathWorks, Inc. 
