主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

损失

説明

l=损失(资源描述ResponseVarNameから返されるスカラーは,资源描述。ResponseVarNameが真の分類を含む場合に,资源描述データをどの程度の精度で分類するかを表します。

損失を計算する場合,损失Yのクラス確率を,之前プロパティに格納されている学習に使用されるクラス確率に正規化します。

l=损失(资源描述Yから返されるスカラーは,Yが真の分類を含む場合に,资源描述データをどの程度の精度で分類するかを表します。

l=损失(XYから返されるスカラーは,Yが真の分類を含む場合に,Xデータをどの程度の精度で分類するかを表します。

l=损失(___名称,值は,前の構文のいずれかを使用し,1つ以上の名称,值ペア引数で指定されたオプションを追加して,損失を返します。たとえば,損失関数や観測値の重みを指定できます。

lseNLeafbestlevel] =损失(___は,分類誤差の標準誤差のベクトル(se),枝刈り系列の木における葉ノードの数のベクトル(NLeaf),および名前と値のペアTreeSizeで定義された最適な枝刈りレベル(bestlevel)も返します。

入力引数

すべて展開する

学習済みの分類木。ClassificationTreeまたはCompactClassificationTreeモデルオブジェクトとして指定します。つまり,fitctreeまたは紧凑的が返す学習済み分類モデルです。

標本データ。テーブルとして指定します。资源描述の各行は1つの観測値に,各列は1つの予測子変数に対応します。オプションとして,応答変数用および観測値の重み用の追加列を资源描述に含めることができます。资源描述には,を学習させるために使用したすべての予測子が含まれていなければなりません。文字ベクトルの细胞配列ではない cell 配列と複数列の変数は使用できません。

を学習させるために使用した応答変数が资源描述に含まれている場合,ResponseVarNameまたはYを指定する必要はありません。

表格に含まれている標本データを使用してを学習させた場合,このメソッドの入力データも表に格納されていなければなりません。

データ型:表格

分類するデータ。数値行列として指定します。Xの各行は1つの観測値を,各列は1つの予測子を表します。Xの列数は,を学習させるために使用したデータ数と同じでなければなりません。Xの行数は,Yの要素数と同じでなければなりません。

データ型:|

応答変数の名前。资源描述に含まれている変数の名前として指定します。を学習させるために使用した応答変数が资源描述に含まれている場合,ResponseVarNameを指定する必要はありません。

ResponseVarNameを指定する場合は,文字ベクトルまたは字符串スカラーとして指定しなければなりません。たとえば,応答変数が资源描述。响应として格納されている場合,“响应”として指定します。それ以外の場合,资源描述の列は资源描述。ResponseVarNameを含めてすべて予測子として扱われます。

応答変数は,绝对配列,文字配列,字符串配列,逻辑ベクトル,数値ベクトル,または文字ベクトルの细胞配列でなければなりません。応答変数が文字配列の場合,各要素は配列の1つの行に対応しなければなりません。

データ型:字符|字符串

クラスラベル。categorical 配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。Yのデータ型はの学習に使用した分類と同じでなければならず,要素数はXの行数に等しくなければなりません。

データ型:分类|字符|字符串|逻辑|||细胞

名前と値のペアの引数

オプションの名称,值引数のコンマ区切りペアを指定します。的名字は引数名で,价值は対応する値です。的名字は引用符で囲まなければなりません。Name1, Value1,…,的家のように,複数の名前と値のペアの引数を,任意の順番で指定できます。

損失関数。“LossFun”と組み込みの損失関数名または関数ハンドルから構成されるコンマ区切りのペアとして指定します。

  • 次の表は,使用可能な損失関数の一覧です。対応する文字ベクトルまたは字符串スカラーを使用して,いずれかを指定します。

    説明
    “binodeviance” 二項分布からの逸脱度
    “classiferror” 10進数の誤分類率
    “指数” 指数損失
    “枢纽” ヒンジ損失
    分对数的 ロジスティック損失
    “mincost” 最小予測誤分類コスト(事後確率である分類スコアの場合)
    “二次” 二次損失

    “mincost”は,事後確率である分類スコアに適しています。既定の設定では,分類木は分類スコアとして事後確率を返します(预测を参照)。

  • 関数ハンドル表記を使用して独自の関数を指定します。

    X内の観測値数をn,異なるクラスの数(元素个数(tree.ClassNames))をKとします。使用する関数のシグネチャは次のようになっていなければなりません。

    lossvalue =lossfun(C、S、W、成本)
    ここで,

    • 出力引数lossvalueはスカラーです。

    • 関数名 (lossfun)を選択します。

    • CnK列の逻辑行列で,行は対応する観測値が属するクラスを示しています。列の順序は树。ClassNamesのクラスの順序に対応します。

      Cを作成するには,各行について観測値pがクラスに含まれている場合にC (p, q) = 1を設定します。行pの他のすべての要素を0に設定します。

    • 年代は,分類スコアのnK列の行列です。列の順序は树。ClassNamesのクラスの順序に対応します。年代は分類スコアの行列で,预测の出力と同様です。

    • Wは,観測値の重みのn行1列の数値ベクトルです。Wを渡す場合,要素は正規化され,合計が1になります。

    • 成本は,誤分類コストの,K行K列の数値行列です。たとえば,Cost = ones(K) - eye(K)は,正しい分類のコストとして0を,誤分類のコストとして1を指定します。

    “LossFun”@lossfunを使用して独自の関数を指定します。

損失関数の詳細については,分類損失を参照してください。

データ型:字符|字符串|function_handle

観測値の重み。“重量”と,正の値の数値ベクトルまたは资源描述内の変数の名前から構成されるコンマ区切りのペアとして指定します。

数値ベクトルで权重を指定する場合,权重のサイズはXまたは资源描述の行数と等しくなければなりません。

资源描述内の変数名を权重として指定する場合,文字ベクトルまたは字符串スカラーを指定しなければなりません。たとえば,重みが资源描述。Wとして格納されている場合,' W 'として指定します。それ以外の場合,资源描述の列は资源描述。Wを含めてすべて予測子として扱われます。

损失は,各クラスの観測値について重みの合計がそのクラスの事前確率になるように,重みを正規化します。权重を指定した場合,损失は重み付けした分類損失を計算します。

データ型:||字符|字符串

枝刈りしたサブツリーに関連する名称,值引数。

枝刈りレベル。“子树”と昇順の非負の整数のベクトルまたは“所有”から構成されるコンマ区切りのペアとして指定します。

ベクトルを指定する場合,すべての要素が0から马克斯(tree.PruneList)の範囲になければなりません。0は枝刈りしない完全な木を,马克斯(tree.PruneList)は完全に枝刈りした木(つまり,ルートノードのみ)を表します。

“所有”を指定した場合,损失はすべての部分木(枝刈り順序全体)に作用します。これは,0:马克斯(tree.PruneList)を指定することと同じです。

损失では,子树で指定された各レベルまでの枝刈りを行ってから,対応する出力引数を推定します。子树のサイズにより,一部の出力引数のサイズが決まります。

子树を呼び出すために,PruneListプロパティまたはPruneAlphaプロパティを空にすることはできません。言い換えると,“删除”,“上”を設定してを成長させるか,修剪を使用しての枝刈りを行います。

例:“子树”,“所有”

データ型:||字符|字符串

木のサイズ。“TreeSize”と次のいずれかの値から構成されるコンマ区切りのペアとして指定します。

  • “本身”- - - - - -损失は,最小の1標準偏差内の損失(l+se,このときlおよびseは,子树での最小値に相関します)をもつ,最も高い枝刈りレベルを返します。

  • “最小值”- - - - - -损失は,最も損失が少ない子树の要素を戻します。通常,これは子树の最小要素です。

出力引数

すべて展開する

分類損失。長さが子树のベクトルとして返されます。誤差の意味は,权重およびLossFunの値によって異なります。

損失の標準誤差。長さが子树のベクトルとして返されます。

枝刈りされた部分木における葉(終端ノード)の数。長さが子树のベクトルとして返されます。

名前と値のペアTreeSizeで定義した最適な枝刈りレベル。スカラー値として返されます。値は,TreeSizeの設定に応じて次のようになります。

  • TreeSize“本身”- - - - - -损失は,最小の1標準偏差内の損失(l+se,このときlおよびseは,子树での最小値に相関します)をもつ,最も高い枝刈りレベルを返します。

  • TreeSize“最小值”- - - - - -损失は,最も損失が少ない子树の要素を返します。通常,これは子树の最小要素です。

既定では,bestlevelは,最も損失の少ない,1標準偏差内の損失の枝刈りレベルです。

すべて展開する

电离层データセットの再代入分類誤差を計算します。

负载电离层树= fitctree (X, Y);L =损失(树,X, Y)
L = 0.0114

枝刈りをしていない決定木は,過適合になる傾向があります。モデルの複雑さと標本外性能のバランスをとる方法の1つとして,標本内性能と標本外性能が十分高くなるように木の枝刈りを行います(つまり木の成長を制限します)。

フィッシャーのアヤメのデータセットを読み込みます。データを学習セット(50%)と検定セット(50%)に分割します。

负载fisheriris1) n =大小(量;rng (1)%的再现性idxTrn = false (n, 1);idxTrn (randsample (n,圆(0.5 * n))) = true;%训练集逻辑索引idxVal = idxTrn == false;%验证设置逻辑索引

学習セットを使用して分類木を成長させます。

Mdl = fitctree(量(idxTrn:),物种(idxTrn));

分類木を表示します。

视图(Mdl,“模式”“图”);

图分类树查看器包含一个轴和其他类型的uimenu, uicontrol对象。轴包含18个类型为line, text的对象。

この分類木には4つの枝刈りレベルがあります。レベル0は(表示のように)枝刈りされていない完全な木です。レベル3はルートノードのみ(分割なし)です。

最上位レベルを除く各部分木(枝刈りレベル)について,学習標本の分類誤差を確認します。

m = max(Mdl.PruneList) - 1;trnLoss = resubLoss (Mdl,“子树”0米):
trnLoss =3×10.0267 0.0533 0.3067
  • 枝刈りされていない完全な木では,学習観測値の約2.7%が誤分類されています。

  • レベル1まで枝刈りされた木では,学習観測値の約5.3%が誤分類されています。

  • レベル2(切り株)まで枝刈りされた木では,学習観測値の約30.6%が誤分類されています。

最上位を除く各レベルで検定標本の分類誤差を確認します。

valLoss =损失(Mdl量(idxVal:),物种(idxVal),“子树”0米):
valLoss =3×10.0369 0.0237 0.3067
  • 枝刈りされていない完全な木では,検定観測値の約3.7%が誤分類されています。

  • レベル1まで枝刈りされた木では,検定観測値の約2.4%が誤分類されています。

  • レベル2(切り株)まで枝刈りされた木では,検定観測値の約30.7%が誤分類されています。

モデルの複雑さと標本外性能のバランスをとるには,Mdlをレベル1まで枝刈りすることを検討します。

pruneMdl =修剪(Mdl,“水平”1);视图(pruneMdl,“模式”“图”

图分类树查看器包含一个轴和其他类型的uimenu, uicontrol对象。轴包含12个类型为line, text的对象。

詳細

すべて展開する

拡張機能