ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

margin

クラス: CompactClassificationTree

分類マージン

構文

m = margin(tree,X,Y)

説明

m = margin(tree,X,Y) は、予測子 X の行列とクラス ラベル Y に対する分類マージンを返します。この定義については、「マージン」を参照してください。

入力引数

tree

関数 fitctree で作成された分類木、または、compact を使用して作成されたコンパクト分類木。

X

各行が 1 つの観測値、各列が 1 つの予測子を表す行列。X の行数は、tree の予測子の数と等しくなければなりません。

Y

tree に存在するのと同じデータ型のクラス ラベル。

出力引数

m

長さ size(X,1) の数値列ベクトル。m の各エントリは、tree を使用して計算された、対応する行の X と (真のクラス) Y のマージンを示します。

定義

マージン

分類マージンは、真のクラスの分類スコアと、偽のクラスの最大分類スコアの差を表します。マージンは行列 X と同じ行数の列ベクトルです。

スコア (ツリー)

ツリーの場合、葉ノードの分類の "スコア" は、そのノードでの分類の事後確率です。あるノードにおける分類の事後確率とは、分類によって実際にそのノードに達するのに要した学習シーケンスの数を、そのノードまでの学習シーケンスの数で除算した値です。

たとえば、X < 0.15 または X > 0.95 のときは、予測子 Xtrue に、そうでないときには、X を false に分類するとします。

100 個の点を無作為に生成し、分類します。

rng(0,'twister') % for reproducibility
X = rand(100,1);
Y = (abs(X - .55) > .4);
tree = fitctree(X,Y);
view(tree,'Mode','Graph')

ツリーを枝刈りします。

tree1 = prune(tree,'Level',1);
view(tree1,'Mode','Graph')

枝刈りされたツリーは、0.15 未満の観測値を正しく true に分類しています。また、.15 から .94 までの観測値についても、正しく false に分類しています。しかし、0.94 より大きい観測は false と誤って分類されます。そのため、0.15 より大きい観測値のスコアは、true では .05/.85=.06、false では .8/.85=.94 になります。

X の先頭から 10 行までの予測スコアを計算します。

[~,score] = predict(tree1,X(1:10));
[score X(1:10,:)]
ans =

    0.9059    0.0941    0.8147
    0.9059    0.0941    0.9058
         0    1.0000    0.1270
    0.9059    0.0941    0.9134
    0.9059    0.0941    0.6324
         0    1.0000    0.0975
    0.9059    0.0941    0.2785
    0.9059    0.0941    0.5469
    0.9059    0.0941    0.9575
    0.9059    0.0941    0.9649

実際に、X で 0.15 より小さいすべての値 (右端の列) には、01 のスコアが関連付けられ (左の列と中央の列)、X のその他の値には、0.910.09 のスコアが関連付けられています。スコアの違い (想定した .06 ではなく、0.09) は、統計変動によるものです。範囲 (.95,1)X には、想定した 5 個ではなく 8 個の観測値があります。

先頭 2 列のデータで学習された、フィッシャーのアヤメ データの分類マージンを計算し、最後の 10 エントリを表示します。

load fisheriris
X = meas(:,1:2);
tree = fitctree(X,species);
M = margin(tree,X,species);
M(end-10:end)
ans =
    0.1111
    0.1111
    0.1111
   -0.2857
    0.6364
    0.6364
    0.1111
    0.7500
    1.0000
    0.6364
    0.2000

すべてのデータについて学習した分類木の方が優れています。

tree = fitctree(meas,species);
M = margin(tree,meas,species);
M(end-10:end)
ans =
    0.9565
    0.9565
    0.9565
    0.9565
    0.9565
    0.9565
    0.9565
    0.9565
    0.9565
    0.9565
    0.9565

参考

| | |

この情報は役に立ちましたか?