主要内容

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

fitensemble

分類および回帰のアンサンブル学習器の当てはめ

説明

fitensembleは,決定木学習器または判別分析分類器のブースティングまたはバギングを行うことができます。また,KNN のランダム部分空間アンサンブルまたは判別分析分類器に学習をさせることもできます。

よりシンプルなインターフェイスでアンサンブル分類およびアンサンブル回帰をあてはめるには,それぞれfitcensembleおよびfitrensembleを代わりに使用します。また,fitcensemblefitrensembleにはベイズ最適化のためのオプションもあります。

Mdl= fitensemble (资源描述ResponseVarName方法NLearn学习者は,NLearn個の分類学習器または回帰学習器のアンサンブル(学习者)をテーブル资源描述内のすべての変数にあてはめた結果が格納されている学習済みのアンサンブル モデル オブジェクトを返します。ResponseVarNameは,资源描述内の応答変数の名前です。方法は,アンサンブル集約法です。

Mdl= fitensemble (资源描述公式方法NLearn学习者は,公式で指定されたモデルをあてはめます。

Mdl= fitensemble (资源描述Y方法NLearn学习者は,资源描述内の変数をすべて予測子変数として扱います。Yは,资源描述に含まれていない応答変数です。

Mdl= fitensemble (XY方法NLearn学习者は,X内の予測子データとY内の応答データを使用してアンサンブルに学習をさせます。

Mdl= fitensemble (___名称,值は1つ以上の名称,值ペア引数で指定された追加オプションと前の構文のいずれかを使用して,アンサンブルに学習をさせます。たとえば,クラスの順序,10分割交差検証の実施,学習率を指定できます。

すべて折りたたむ

学習されたブースティングアンサンブル分類の決定木について,再代入損失を推定します。

电离层データセットを読み込みます。

负载电离层

100年演算法,学習サイクルおよびデータセット全体を使用して,決定木アンサンブルを学習させます。

ClassTreeEns = fitensemble (X, Y,“AdaBoostM1”, 100,“树”);

ClassTreeEnsは学習させたClassificationEnsembleアンサンブル分類器です。

累積再代入損失(学習データのラベルの累積誤分類誤差)を特定します。

rsLoss = resubLoss (ClassTreeEns,“模式”“累积”);

rsLossは 100行 1.列のベクトルです。要素kには最初のk学習サイクルの後の再代入損失が格納されます。

学習サイクル数の上に累積再代入損失をプロットします。

绘图(rsLoss);xlabel(“学习周期的数量”);ylabel (“Resubstitution损失”);

图中包含一个坐标轴。轴包含一个线型对象。

一般的に,学習させたアンサンブル分類の決定木の数が増加すると,再代入損失は減少します。

再代入損失の減少は,アンサンブル学習が十分に行われていることを示す可能性もあります。ただし,この減少からアンサンブルの予測力を推定することはできません。アンサンブルの予測力を測定するには,次の方法で汎化誤差を推定します。

  1. データを学習セットと交差検証セットに無作為に分割します。この操作を行うには、fitensembleを使用してアンサンブルを学習させる際に“坚持”,坚持输出比例を指定します。

  2. 学習させたアンサンブルをkfoldLossに渡します。これにより,汎化誤差が推定されます。

学習およびブースティング回帰木のアンサンブルを使用して、自動車の燃費を予測します。予測子として気筒数、気筒ごとの排気量、馬力、重量を選択します。次に、予測子の数を減らしてアンサンブルに学習をさせ、初めのアンサンブルに対して標本内予測精度を比較します。

carsmallデータセットを読み込みます。学習データをテーブルに格納します。

负载carsmall台=表(汽缸、排量、马力、重量、MPG);

代理分岐を使用する回帰木テンプレートを指定し,値が存在する場合の予測精度を向上させます。

t = templateTree (“代孕”“上”);

LSBoostと 100学習サイクルを使用して、アンサンブル回帰木を学習させます。

Mdl1 = fitensemble(资源描述,“英里”“LSBoost”,100,t);

Mdl1は学習させた回归套アンサンブル回帰です。英里/加仑はMATLAB®ワークスペースの変数なので,次のように入力すると同じ結果を得ることができます。

Mdl1=fitensemble(总载重、每加仑、LSBoost、100吨);

学習させたアンサンブル回帰を使用して,排気量が200立方インチ,150馬力,重量3000磅の4気筒搭載車の燃費を予測します。

predMPG = predict(Mdl1,[4 200 150 3000])
predMPG=22.8462

この仕様の自動車の平均燃費は21.78 mpgです。

位移を除く资源描述内の予測子をすべて使用して,新しいアンサンブルに学習をさせます。

公式='MPG ~气缸+马力+重量';Mdl2 = fitensemble(资源描述公式,“LSBoost”,100,t);

Mdl1Mdl2の再代入MSEを比較します。

mse1 = resubLoss (Mdl1)
mse1 = 6.4721
mse2 = resubLoss (Mdl2)
mse2 = 7.8599

すべての予測子に対して学習を行ったアンサンブルの方が、標本内 微卫星が小さくなります。

決定木の,学習されたブースティングアンサンブル分類の汎化誤差を推定します。

电离层データセットを読み込みます。

负载电离层

100年AdaBoostM1,学習サイクル無作為に選択された半分のデータを使用して,決定木アンサンブルを学習させます。残りの半分を使用してアルゴリズムが検証されます。

rng(2);%为了再现性ClassTreeEns = fitensemble (X, Y,“AdaBoostM1”, 100,“树”...“坚持”, 0.5);

ClassTreeEnsは学習させたClassificationEnsembleアンサンブル分類器です。

累積汎化誤差(検証データのラベルの累積誤分類誤差)を特定します。

genError=kfoldLoss(类别树,“模式”“累积”);

genErrorは 100行 1.列のベクトルです。要素kには最初のk学習サイクルの後の汎化誤差が格納されています。

学習サイクル数の上に汎化誤差をプロットします。

绘图(genError);xlabel(“学习周期的数量”);ylabel (泛化误差的);

图中包含一个坐标轴。轴包含一个线型对象。

25件の弱学習器がアンサンブル分類器を構成している場合、累積汎化誤差は約 7% まで低下します。

決定木のアンサンブルにおける木の深さを制御できます。また,名前と値のペアの引数最大数分裂MinLeafSizeまたはMinParentSizeを使用すると,決定木バイナリ学習器が含まれているECOCモデルにおける木の深さも制御できます。

  • 決定木をバギングする場合,既定の設定ではfitensembleは深い決定木を成長させます。モデルの複雑さや計算時間の削減のために,より浅い木を成長させることもできます。

  • 決定木をブースティングする場合、既定の設定ではfitensembleは切り株 (1 つの分割がある木) を成長させます。木を深くすると、精度を向上させることができます。

carsmallデータセットを読み込みます。変数加速度位移马力および重量を予測子として,英里/加仑を応答として指定します。

负载carsmallX =[加速度位移马力重量];Y = MPG;

回帰木をブースティングする場合,木の深さの制御に関する既定値は次のとおりです。

  • 最大数分裂1。このオプションは切り株を成長させます。

  • 5(次の場合)MinLeafSize

  • 10(次の場合)MinParentSize

最適な分割数は次により求めます。

  1. 一連のアンサンブルを学習させます。以後のアンサンブルの最大分割数を、切り株から最大n- 1個の分割まで指数的に増やします。nは学習標本のサイズです。また、アンサンブルごとの学習率を 1.から 0.1に減らします。

  2. アンサンブルの交差検証を実行します。

  3. アンサンブルごとに交差検証の平均二乗誤差(MSE)を推定します。

  4. 交差検証のMSEを比較します。MSEが最も小さいアンサンブルは性能が最適であり,そのデータセットに最適な最大分割数,木の数,および学習率も表示されます。

深い回帰木と切り株を成長させ交差検証を実行します。欠損値がデータに含まれているので,代理分岐を使用するように指定します。これらはベンチマークとして機能します。

MdlDeep = fitrtree (X, Y,“CrossVal”“上”“MergeLeaves”“关闭”...“MinParentSize”1.“代孕”“上”);MdlStump = fitrtree (X, Y,“MaxNumSplits”1.“CrossVal”“上”“代孕”“上”);

150年個の回帰木を使用してブースティングアンサンブルを学習させます。アンサンブルに対して5分割の交差検証を実行します。 2 0 2 1 2 という数列の値を使用して分割の最大数を変化させます。は, 2 n- 1を超えない値です。nは学習標本のサイズです。{0.1,0.25,0.5,1};という集合の各値に対して,それぞれの学習率を調整します。

n =大小(X, 1);M =底(log2(n - 1));Lr = [0.1 0.25 0.5 1];maxNumSplits = 2。^ (0:m);numTrees = 150;Mdl =细胞(元素个数(maxNumSplits),元素个数(lr));rng (1);%为了再现性k = 1:元素个数(lr);j = 1:元素个数(maxNumSplits);t = templateTree (“MaxNumSplits”maxNumSplits (j),“代孕”“上”);Mdl {j, k} = fitensemble (X, Y,“LSBoost”numTrees t...“类型”“回归”“KFold”5.“LearnRate”,lr(k));结束结束

各アンサンブルについて相互検定のMSEを計算します。

kflAll = @ (x) kfoldLoss (x,“模式”“累积”);errorCell=cellfun(kflAll、Mdl、,“统一”、假);error = replaceall (cell2mat(errorCell),[numTrees nummel (maxnumsplents) nummel (lr)]); / /重新命名errorDeep = kfoldLoss (MdlDeep);errorStump = kfoldLoss (MdlStump);

少数のアンサンブル,深い木,切り株について,アンサンブルの木の数が増加すると交差検証のMSEがどのように変化するかをプロットします。同じプロットで,学習率に関する曲線をプロットします。木の複雑さの変化を別のプロットにプロットします。木の複雑さのレベルのサブセットを選択します。

mnsPlot = [1 round(nummel (maxnumsplents)/2) nummel (maxnumsplents)];图;k = 1:3;次要情节(2 2 k);情节(挤压(错误(:,mnsPlot (k):)),“线宽”2);轴;持有;甘氨胆酸h =;情节(h。XLim,[errorDeep errorDeep],“。b”“线宽”2);情节(h。XLim,[errorStump errorStump],“r”“线宽”2);情节(h.XLim min (min(错误(:,mnsPlot (k):)))。* [1],“——k”);h.YLim = [10 50];包含树木的数量;伊莱贝尔“交叉验证MSE”;标题(sprintf (“MaxNumSplits = % 0.3 g”maxNumSplits (mnsPlot (k))));持有结束;hL=图例([cellstr(num2str)(lr','学习率= %0.2f'));...“深树”“树桩”“最小MSE。”]); 位置(1)=0.6;

图中包含3个轴。标题为maxnumpartitions = 1的坐标轴1包含7个line类型的对象。标题为maxnumpartitions = 8的坐标轴2包含7个line类型的对象。标题为maxnumpartitions = 64的坐标轴3包含7个line类型的对象。这些对象表示学习率= 0.10,学习率= 0.25,学习率= 0.50,学习率= 1.00,深树,树桩,最小MSE。

各曲線では、アンサンブル内の木の本数が最適な位置で交差検証の 微卫星が最小になります。

全体的にMSEが最小になる最大分割数,木の数および学習率を特定します。

[minErr, minErrIdxLin] = min(错误(:));[idxNumTrees, idxMNS idxLR] = ind2sub(大小(错误),minErrIdxLin);流(“\n分钟。MSE=%0.5f'minErr)
最小MSE = 18.42979
流('\n临时参数值:\nNum.Trees=%d', idxNumTrees);
最优参数值:Num. Trees = 1
流('\ nmaxnumpartitions = %d\nLearning Rate = %0.2f\n'...maxNumSplits(idxMNS),lr(idxLR))
学习速率= 1.00

このアンサンブルを最適化する別の方法については,ブースティング回帰アンサンブル回帰の最適化を参照してください。

入力引数

すべて折りたたむ

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

  • 资源描述に応答変数が含まれている場合に他の変数をすべて予測子として使用するには,ResponseVarNameを使用して応答変数を指定します。

  • 资源描述に応答変数が含まれている場合に他の変数の一部のみを予測子として使用するには,公式を使用して式を指定します。

  • 资源描述に応答変数が含まれていない場合は,Yを使用して応答データを指定します。応答変数の長さと资源描述の行数は、同じでなければなりません。

メモ

メモリと実行時間を節約するには、资源描述ではなくXYを指定します。

データ型:表格

応答変数名。资源描述内の応答変数の名前を指定します。

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

応答変数は、明确的配列、文字配列、一串配列、必然的ベクトル、数値ベクトル、または文字ベクトルの 单间牢房配列でなければなりません。応答変数が文字配列の場合、各要素は配列の 1.つの行に対応しなければなりません。

分類の場合,名前と値のペアの引数一会を使用してクラスの順序を指定できます。それ以外の場合,fitensembleがクラスの順序を決定してMdl。一会に格納します。

データ型:烧焦|字符串

応答変数および予測子変数サブセットの説明モデル。“Y ~ x1 + x2 + x3”という形式の文字ベクトルまたは 一串スカラーを指定します。この形式では、Yは応答変数を,x1x2およびx3は予測子変数を表します。

モデルに学習をさせるための予測子として资源描述内の変数のサブセットを指定するには,式を使用します。式を指定した場合,公式に現れない资源描述内の変数は使用されません。

式の変数名は资源描述の変数名 (Tbl.Properties.VariableNames)であり,有効なMATLAB®識別子でなければなりません。関数isvarnameを使用して资源描述の変数名を検証できます。変数名が有効でない場合、関数matlab.lang.makeValidNameを使用してそれらを変換できます。

データ型:烧焦|字符串

予測子データ。数値行列を指定します。

各行は1つの観測値に,各列は1つの予測子変数に対応します。

Yの長さとXの行数は等しくなければなりません。

予測子の名前をXに表示される順序で指定するには、PredictorNames名前と値のペアの引数を使用します。

データ型:|双重的

応答データ。绝对配列,文字配列,弦配列,逻辑ベクトル,数値ベクトル,または文字ベクトルの细胞配列を指定します。Yの各エントリは、Xまたは资源描述の対応する行の観測値に対する応答またはラベルです。Yの長さとXまたは资源描述の行数は、同じでなければなりません。応答変数が文字配列の場合,各要素は配列の1つの行に対応しなければなりません。

  • 分類の場合、サポートされるどのデータ型でもYに使用できます。名前と値のペアの引数一会を使用してクラスの順序を指定できます。それ以外の場合,fitensembleがクラスの順序を決定してMdl。一会に格納します。

  • 回帰の場合,Yは数値列ベクトルでなければなりません。

データ型:分类|烧焦|字符串|逻辑||双重的|细胞

アンサンブル集約法。次の一覧に記載されている方式名のいずれかを指定します。

  • 2つのクラスによる分類:

    • “AdaBoostM1”

    • “LogitBoost”

    • “GentleBoost”

    • “RobustBoost”(优化工具箱™が必要)

    • “LPBoost”(b)优化工具箱が必要)

    • “TotalBoost”(b)优化工具箱が必要)

    • “俄罗斯助推”

    • “子”

    • “包”

  • 3つ以上のクラスによる分類:

    • “AdaBoostM2”

    • “LPBoost”(b)优化工具箱が必要)

    • “TotalBoost”(b)优化工具箱が必要)

    • “俄罗斯助推”

    • “子”

    • “包”

  • 回帰:

    • “LSBoost”

    • “包”

“包”は分類問題と回帰問題に対して指定できるので、“方法”,“包”を指定する場合、名前と値のペアの引数类型を使用して問題のタイプを指定します。

アンサンブル集約アルゴリズムの詳細と例については,アンサンブルアルゴリズムおよび適用するアンサンブル集約法の選択を参照してください。

アンサンブル学習サイクルの数。正の整数または“AllPredictorCombinations”を指定します。

  • 正の整数を指定した場合,すべての学習サイクルで,1つの弱学習器が学习者内のすべてのテンプレートオブジェクトについて学習します。この結果,延べNLearn*numel(学习者)個の学習器が学習を行います。

  • “AllPredictorCombinations”を指定する場合は、方法“子”に設定し,学习者で1つの学習器のみを指定します。このように設定すると,予測子が一度にNPredToSample個抽出され、その可能な組み合わせすべてに対して学習器が学習を行います。この結果、nchoosek(NPredToSample大小(X, 2))個の学習器が学習を行います。

アンサンブルはすべての学習済み学習器を使用して構成され、Mdl。训练有素的に格納されます。

詳細は、ヒントを参照してください。

データ型:|双重的|烧焦|字符串

アンサンブルで使用する弱学習器。弱学習器の名前、弱学習器テンプレートオブジェクト,または弱学習器テンプレートオブジェクトの细胞配列を指定します。

弱学習器 弱学習器の名前 テンプレートオブジェクト作成関数 方法の設定
判別分析 “判别” templateDiscriminant “子”を推奨
k最近傍 “资讯” templateKNN “子”のみ
決定木 “树” templateTree “子”を除くすべての手法

詳細は、NLearnおよびヒントを参照してください。

例:2種類の分類木から構成されるアンサンブルの場合,{t1 t2}を指定します。t1t2は分類木テンプレートです。

名前と値のペアの引数

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

例:“CrossVal”,“on”,“LearnRate”,0.05は10分割交差検証を実施し,学習率として0.05を使用するよう指定します。
一般的なアンサンブルオプション

すべて折りたたむ

カテゴリカル予測子のリスト。次の表のいずれかの値として指定します。

説明
正の整数のベクトル

ベクトルの各エントリは,カテゴリカル変数が含まれている予測子データの列に対応するインデックス値です。インデックス値の範囲は1 ~pです。pはモデルの学習に使用した予測子の数です。

fitensembleが入力変数のサブセットを予測子として使用する場合,関数はサブセットのみを使用して予測子にインデックスを作成します。応答変数,観測値の重み変数,および関数で使用されないその他の変数は,“CategoricalPredictors”値でカウントされません。

逻辑ベクトル

真正的というエントリは,予測子データの対応する列がカテゴリカル変数であることを意味します。ベクトルの長さはpです。

文字行列 行列の各行は予測子変数の名前です。名前はPredictorNamesのエントリに一致しなくてはなりません。文字行列の各行が同じ長さになるように、名前を余分な空白で埋めてください。
文字ベクトルの细胞配列または字符串配列 配列の各要素は予測子変数の名前です。名前はPredictorNamesのエントリに一致しなくてはなりません。
“所有” すべての予測子がカテゴリカルです。

“CategoricalPredictors”の仕様は以下の場合適切です。

  • “学习者”は木学習器を指定します。

  • “学习者”は,すべての予測子がカテゴリカルであるk最近傍学習器を指定します。

各学習器は,学習器に対応する近似関数と同じ方法でカテゴリカル予測子を特定して処理します。k最近傍学習器についてはfitcknn“CategoricalPredictors”を,木学習器についてはfitctree“CategoricalPredictors”を参照してください。

例:“CategoricalPredictors”、“所有”

データ型:|双重的|逻辑|烧焦|字符串|细胞

出力頻度。“NPrint”と正の整数または“关闭”から構成されるコンマ区切りのペアとして指定します。

それまでにfitensembleが“弱学習器”または”分割”に学習をさせた回数を追跡するには,正の整数を指定します。つまり,正の整数米を指定した場合、次のようになります。

  • 交差検証オプション(CrossValなど)を指定していない場合,fitensembleでm個の弱学習器の学習が完了するたびに,コマンドラインにメッセージが表示されます。

  • 交差検証オプションを指定した場合,fitensembleでm個の分割の学習が完了するたびに,コマンドラインにメッセージが表示されます。

“关闭”を指定した場合、fitensembleで弱学習器の学習が完了してもメッセージは表示されません。

ヒント

一部のブースティングされた決定木の学習を最速にするには,NPrintを既定値の“关闭”に設定します。このヒントは、分類の方法“AdaBoostM1”“AdaBoostM2”“GentleBoost”,または“LogitBoost”であるか,回帰の方法“LSBoost”である場合に有効です。

例:“NPrint”,5

データ型:|双重的|烧焦|字符串

予測子変数名。一意な名前の字符串配列または一意な文字ベクトルの细胞配列として指定します。PredictorNamesの機能は,学習データの提供方法によって決まります。

  • XYを指定した場合、PredictorNamesを使用してX内の予測子変数に名前を割り当てることができます。

    • PredictorNames内の名前の順序は,Xの列の順序に一致しなければなりません。つまり,PredictorNames {1}X(:,1)の名前、PredictorNames {2}X(:,2)の名前であり,他も同様です。また,大小(X, 2)元素个数(PredictorNames)は等しくなければなりません。

    • 既定ではPredictorNames{x1, x2,…}です。

  • 资源描述を指定する場合、PredictorNamesを使用して学習に使用する予測子変数を選択できます。つまり,fitensembleは,学習中にPredictorNamesの予測子変数と応答変数のみを使用します。

    • PredictorNamesTbl.Properties.VariableNamesのサブセットでなければならず,応答変数の名前を含めることはできません。

    • 既定では,すべての予測子変数の名前がPredictorNamesに格納されます。

    • “PredictorNames”公式の両方ではなく,いずれか一方を使用して学習用の予測子を指定することをお勧めします。

例:PredictorNames,{‘SepalLength’,‘SepalWidth’,‘PetalLength’,‘PetalWidth}

データ型:字符串|细胞

応答変数名。文字ベクトルまたは字符串スカラーとして指定します。

  • Yを指定した場合、“ResponseName”を使用して応答変数の名前を指定できます。

  • ResponseVarNameまたは公式を指定した場合、“ResponseName”を使用することはできません。

例:“ResponseName”、“响应”

データ型:烧焦|字符串

教師あり学習のタイプ。“类型”“分类”または“回归”から構成されるコンマ区切りのペアとして指定します。

  • 方法“包”の場合、教師あり学習のタイプが明確ではなくなります。このため、バギングを行うときは类型を指定します。

  • それ以外の場合は、方法の値により教師あり学習のタイプが決まります。

例:“类型”、“分类”

交差検証オプション

すべて折りたたむ

交差検証フラグ。“Crossval”“上”または“关闭”から構成されるコンマ区切りのペアとして指定します。

“上”を指定した場合10分割の交差検証が実施されます。

この交差検証の設定をオーバーライドするには,名前と値のペアの引数CVPartition坚持KFold发酵剂のいずれかを使用します。交差検証済みモデルを作成するために使用できる交差検証の名前と値のペアの引数は,一度に1つだけです。

あるいは,crossvalまたはcrossvalMdlを渡すことにより,後で交差検証を実行します。

例:“Crossval”,“上”

交差検証分割。cvpartitionで作成したcvpartition分割オブジェクトとして指定します。分割オブジェクトは,交差検証のタイプと、学習セットおよび検証セットのインデックス付けを指定します。

交差検証済みモデルの作成で指定できる名前と値の引数は,CVPartition坚持KFold发酵剂の4つのうちのいずれかのみです。

例:本量利= cvpartition(500年,“KFold”,5)500年を使用して個の観測値に対する5分割交差検証について無作為な分割を作成するとします。この場合,“CVPartition”,本量利を使用して交差検証済みモデルを指定できます。

ホールドアウト検証に使用されるデータの比率。(0,1) の範囲のスカラー値として指定します。‘坚持’,pを指定した場合,以下の手順が実行されます。

  1. p*100%のデータを無作為に選択して検証データとして確保し,残りのデータを使用してモデルに学習をさせる。

  2. コンパクトな学習済みモデルを交差検証済みモデルの训练有素的プロパティに格納する。

交差検証済みモデルの作成で指定できる名前と値の引数は,CVPartition坚持KFold发酵剂の4つのうちのいずれかのみです。

例:“坚持”,0.1

データ型:双重的|

交差検証済みモデルで使用する分割の数。1より大きい正の整数値として指定します。KFold, kを指定した場合,以下の手順が実行されます。

  1. データを無作為にk個のセットに分割する。

  2. 各セットについて、そのセットを検定データとして確保し、他のk– 1個のセットを使用してモデルに学習をさせる。

  3. k個のコンパクトな学習済みモデルを,交差検証済みモデルの训练有素的プロパティに含まれているk行 1.列の 单间牢房ベクトルに格納する。

交差検証済みモデルの作成で指定できる名前と値の引数は,CVPartition坚持KFold发酵剂の4つのうちのいずれかのみです。

例:“KFold”,5

データ型:|双重的

分析法の交差検証のフラグ。“上”または“关闭”として指定します。“Leaveout”,“上”を指定した場合,n個の観測値(nはモデルのNumObservationsプロパティで指定される,欠損観測値を除外した観測値の個数)のそれぞれについて以下の手順が実行されます。

  1. いずれかの観測値を検証データとして確保し,他のn - 1個の観測値を使用してモデルに学習をさせる。

  2. n個のコンパクトな学習済みモデルを,交差検証済みモデルの训练有素的プロパティに含まれているn行1列の细胞ベクトルに格納する。

交差検証済みモデルの作成で指定できる名前と値の引数は,CVPartition坚持KFold发酵剂の4つのうちのいずれかのみです。

例:“Leaveout”,“上”

その他の分類または回帰のオプション

すべて折りたたむ

学習に使用するクラスの名前。分类配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列として指定します。一会のデータ型は资源描述内の応答変数またはYと同じでなければなりません。

一会が文字配列の場合,各要素は配列の1つの行に対応しなければなりません。

一会の使用目的は次のとおりです。

  • 学習時のクラスの順序を指定する。

  • クラスの順序に対応する入力または出力引数の次元の順序を指定する。たとえば,费用の次元の順序や预测によって返される分類スコアの列の順序を指定するために一会を使用します。

  • 学習用にクラスのサブセットを選択する。たとえば、Yに含まれているすべての異なるクラス名の集合が{'a','b','c'}であるとします。クラス“一个”および“c”のみの観測値を使用してモデルに学習をさせるには,“类名”,{' a ', ' c '}を指定します。

一会の既定値は,资源描述内の応答変数またはYに含まれているすべての異なるクラス名の集合です。

例:“类名”,{' b ', ' g '}

データ型:分类|烧焦|字符串|逻辑||双重的|细胞

誤分類のコスト。“成本”と正方行列または構造体から構成されるコンマ区切りペアとして指定します。指定する項目によって,内容は次のように変わります。

  • 正方行列费用の場合,成本(i, j)は真のクラスがである点をクラスjに分類するコストです。つまり,行は真のクラスに、列は予測するクラスに対応します。费用の対応する行と列についてクラスの順序を指定するには,名前と値のペアの引数一会も指定します。

  • 構造体年代の場合,次の2つのフィールドが必要となります。

    • S.ClassNamesYと同じデータ型のクラス名を表す変数を含む。

    • S.ClassificationCosts。行と列の順序がS.ClassNamesと同じコスト行列。

既定値は(K) - (Kです。Kは異なるクラスの数です。

メモ

fitensemble费用を使用して,之前で指定されたクラスの事前確率を調整します。その後,fitensembleは調整した事前確率を学習に使用し,コスト行列を既定設定にリセットします。

例:'Cost',[0 1 2;1 0 2;2 2 0)

データ型:双重的||结构体

各クラスの事前確率。“之前”と次の表の値から構成されるコンマ区切りのペアとして指定します。

説明
“经验” クラスの事前確率は,Yのクラスの相対的頻度です。
“统一” クラスの事前確率はいずれも1 / K (Kはクラス数)となります。
数値ベクトル 各要素はクラスの事前確率です。Mdl。一会に従って要素を並べ替えるか、一会名前と値のペアの引数を使用して順序を指定します。要素は合計が1になるように正規化されます。
構造体配列

構造体年代には2つのフィールドがあります。

  • S.ClassNamesYと同じ型の変数のクラス名が格納されます。

  • S.ClassProbs: 対応する事前確率のベクトルが格納されます。要素は合計が1になるように正規化されます。

fitensembleは,合計が1になるように之前の事前確率を正規化します。

例:结构(“类名”,{{setosa,杂色的,‘virginica}}, ClassProbs, 1:3)

データ型:烧焦|字符串|双重的||结构体

観測値の重み。“重量”と,正の値の数値ベクトルまたは资源描述内の変数の名前から構成されるコンマ区切りのペアとして指定します。Xまたは资源描述の各行に含まれている観測値は,权重の対応する値で重み付けされます。权重のサイズは,Xまたは资源描述の行数と等しくなければなりません。

入力データをテーブル资源描述として指定した場合、权重は数値ベクトルが含まれている资源描述内の変数の名前にすることができます。この場合,权重には文字ベクトルまたは字符串スカラーを指定しなければなりません。たとえば,重みベクトルW资源描述。Wとして格納されている場合、' W 'として指定します。それ以外の場合,モデルに学習をさせるときに、资源描述の列はWを含めてすべて予測子または応答として扱われます。

合計が各クラスの事前確率の値と等しくなるように权重が正規化されます。

既定の設定では,权重(n,1)です。nXまたは资源描述の観測値数です。

データ型:双重的||烧焦|字符串

ブースティング法およびバギングのサンプリングオプション

すべて折りたたむ

すべての弱学習器についてリサンプリングされる学習セットの比率。“FResample”と(0,1)の正のスカラーから構成されるコンマ区切りのペアとして指定します。

“FResample”を使用するには,方法“包”を指定するか,重新取样“上”に設定します。

例:“FResample”,0.75

データ型:|双重的

復元抽出を示すフラグ。“替换”“关闭”または“上”から構成されるコンマ区切りのペアとして指定します。

  • “上”の場合,学習観測値が復元抽出されます。

  • “关闭”の場合,学習観測値が非復元抽出されます。重新取样“上”に設定した場合,重みが均一であるという前提で学習観測値がサンプリングされます。ブースティング法も指定した場合,観測値が再重み付けされてブースティングが行われます。

方法“包”に設定した場合と重新取样“上”に設定した場合を除いて,取代の効果はありません。

例:“替换”、“关闭”

リサンプリングを示すフラグ。重新取样的“关闭”または“上”から構成されるコンマ区切りのペアとして指定します。

  • 方法がブースティング法である場合、次のようになります。

    • “重采样”,“打开”は,更新された重みを多項サンプリング確率として使用することにより学習観測値をサンプリングするよう指定します。

    • “重采样”,“关闭”(既定) は、すべての学習反復で観測値を再重み付けするよう指定します。

  • 方法“包”の場合,重新取样的“上”でなければなりません。一定の比率(FResampleを参照)の学習観測値が復元抽出または非復元抽出(取代を参照)でリサンプリングされます。

重新取样を使用してリサンプリングを指定する場合は,データセット全体に対してのリサンプリングをお勧めします。つまり,FResampleの既定設定である1を使用します。

AdaBoostM1、AdaBoostM2 LogitBoost, GentleBoostおよびLSBoost法のオプション

すべて折りたたむ

縮小学習率。“LearnRate”と区間(0,1)の数値スカラーから構成されるコンマ区切りのペアとして指定します。

縮小を使用してアンサンブルに学習をさせるには、LearnRate1未満の値(一般的な0.1など) に設定します。縮小を使用してアンサンブルに学習をさせると、学習反復数を増やす必要がありますが、多くの場合精度が向上します。

例:“LearnRate”,0.1

データ型:|双重的

RUSBoost法のオプション

すべて折りたたむ

縮小学習率。“LearnRate”と区間(0,1)の数値スカラーから構成されるコンマ区切りのペアとして指定します。

縮小を使用してアンサンブルに学習をさせるには、LearnRate1未満の値(一般的な0.1など) に設定します。縮小を使用してアンサンブルに学習をさせると、学習反復数を増やす必要がありますが、多くの場合精度が向上します。

例:“LearnRate”,0.1

データ型:|双重的

最小相当クラスについてのサンプリング比率。“比率最小”と数値スカラー,または学習データ内の異なるクラス数と同じ長さをもつ正の値の数値ベクトルから構成されるコンマ区切りのペアとして指定します。

学習データにK個のクラスがあり,最小相当クラスには個の観測値があるとします。

  • 正の数値スカラー年代を指定した場合、fitensemble年代個の観測値を各クラスから抽出します。つまり、各クラスでサンプリングの比率が同じになります。詳細は、アルゴリズムを参照してください。

  • 数値ベクトルs1s2、……sKを指定した場合、fitensemble如果個の観測値をクラス= 1,…,K)から抽出します。比率最小の要素は、一会を使用して指定されるクラス名に同じ順序で対応します (ヒントを参照)。

既定値は(K,1)で、個の観測値を各クラスから抽出するよう指定します。

例:‘RatioToSmallest’,(2,1)

データ型:|双重的

LPBoostおよびTotalBoost法のオプション

すべて折りたたむ

収束速度を制御するマージン精度。“MarginPrecision”と区間[0,1]の数値スカラーから構成されるコンマ区切りのペアとして指定します。边缘精度は,収束に必要なブースティング反復回数に影響を与えます。

ヒント

多数の学習器を使用してアンサンブルに学習をさせるには,边缘精度に小さい値を指定します。少数の学習器を使用して学習をさせる場合は,大きい値を指定します。

例:“MarginPrecision”,0.5

データ型:|双重的

RobustBoost法のオプション

すべて折りたたむ

目標分類誤差。“RobustErrorGoal”と非負の数値スカラーから構成されるコンマ区切りのペアとして指定します。可能な値の上限は,RobustMarginSigmaおよびRobustMaxMarginの値によって決まります。ただし,上限が1を超えることはできません。

ヒント

通常は、特定の学習セットについてRobustErrorGoalの最適な範囲が存在します。小さすぎる値または大きすぎる値を設定した場合、分類精度が低いモデルが生成される可能性があります。適切な値を求めるには、交差検証を試してください。

例:“RobustErrorGoal”,0.05

データ型:|双重的

学習データに対する分類マージンの分布の広がり。“RobustMarginSigma”と正の数値スカラーから構成されるコンマ区切りのペアとして指定します。RobustMarginSigmaを指定する前に、RobustBoostに関する文献([19]など)を調べてください。

例:“RobustMarginSigma”,0.5

データ型:|双重的

学習データの最大分類マージン。“RobustMaxMargin”と非負の数値スカラーから構成されるコンマ区切りのペアとして指定します。分類マージンがRobustMaxMargin未満になるように学習データ内の観測値数が最小化されます。

例:“RobustMaxMargin”,1

データ型:|双重的

ランダム部分空間法のオプション

すべて折りたたむ

各ランダム部分空間学習器についてサンプリングする予測子の個数。“NPredToSample”と区間1,…,pの正の整数から構成されるコンマ区切りのペアとして指定します。pは予測子変数の個数(大小(X, 2)または尺寸(待定,2))です。

データ型:|双重的

出力引数

すべて折りたたむ

学習済みのアンサンブルモデル。次の表のモデルオブジェクトのいずれかとして返されます。

モデルオブジェクト 类型の設定 交差検証オプションの指定 方法の設定 重新取样の設定
ClassificationBaggedEnsemble “分类” なし “包” “上”
ClassificationEnsemble “分类” なし 分類用のアンサンブル集約法のいずれか “关闭”
ClassificationPartitionedEnsemble “分类” あり アンサンブル分類集約法のいずれか “关闭”または“上”
RegressionBaggedEnsemble “回归” なし “包” “上”
回归套 “回归” なし “LSBoost” “关闭”
RegressionPartitionedEnsemble “回归” あり “LSBoost”または“包” “关闭”または“上”

交差検証を制御する名前と値のペアの引数はCrossVal坚持KFold发酵剂およびCVPartitionです。

Mdlのプロパティを参照するには、ドット表記を使用します。たとえば、交差検証されていないアンサンブルについて弱学習器モデル オブジェクトの 单间牢房ベクトルのアクセスまたは表示を行うには、コマンド ラインでMdl。训练有素的を入力します。

ヒント

  • NLearnは数十から数千までさまざまな数になります。通常,予測力が高いアンサンブルでは数百から数千の弱学習器が必要です。しかし,このような多数のサイクルの学習をアンサンブルが一度に行う必要はありません。数十個の学習器の学習から開始してアンサンブルの性能を調査し,必要な場合は分類問題用の的简历または回帰問題用の的简历を使用して弱学習器の数を増やすことができます。

  • アンサンブルの性能は、アンサンブルの設定と弱学習器の設定によって決まります。つまり、既定のパラメーターを使用する弱学習器を指定すると、アンサンブルの性能が低下する可能性があります。このため、アンサンブルの設定と同じように、テンプレートを使用して弱学習器のパラメーターを調整し、汎化誤差が最小になる値を選択することをお勧めします。

  • 重新取样を使用してリサンプリングを指定する場合は,データセット全体に対してのリサンプリングをお勧めします。つまり,FResampleの既定設定である1を使用します。

  • 分類問題の場合(つまり,类型“分类”の場合)

    • アンサンブル集約法(方法)が“包”で、

      • 誤分類コスト(费用)が非常に不均衡である場合,在袋子の標本について,ペナルティが大きいクラスから一意な観測値がオーバーサンプリングされます。

      • クラスの事前確率(之前)の歪みが大きい場合,事前確率が大きいクラスから一意な観測値がオーバーサンプリングされます。

      これらの組み合わせにより,標本サイズが小さい場合,ペナルティまたは事前確率が大きいクラスから抽出されるout-of-bag観測値の相対頻度が低くなる可能性があります。この結果,out-of-bagの推定誤差の変動幅が非常に大きくなり,解釈が困難になる可能性があります。特に標本サイズが小さい場合に,out-of-bagの推定誤差の変動幅が大きくならないようにするには,费用を使用して誤分類コスト行列をより平衡にするか,之前を使用して事前確率ベクトルの歪みを小さくします。

    • 一部の入力引数および出力引数の順序は学習データ内の各クラスに対応するので,名前と値のペアの引数一会を使用してクラスの順序を指定することをお勧めします。

      • クラスの順序を簡単に求めるには,未分類の(つまり欠損ラベルがある)観測値を学習データからすべて削除し,異なるクラスがすべて含まれている配列を取得および表示してから,その配列を一会に指定します。たとえば,応答変数 (Y)がラベルの细胞配列であるとします。次のコードは,変数一会でクラスの順序を指定します。

        Ycat =分类(Y);一会=类别(Ycat)
        分类<定义>を未分類観測値に割り当て,类别<定义>を出力から除外します。したがって、このコードをラベルの 单间牢房配列に対して使用するか、同様のコードを 明确的配列に対して使用すると、欠損ラベルがある観測値を削除しなくても各クラスのリストを取得できます。

      • 最小相当ラベルから最大相当ラベルの順になるようにクラスの順序を指定するには,(前の項目のように)クラスの順序を簡単に調べ,リスト内のクラスの順序を頻度順に変更してから,リストを一会に渡します。前の例に従うと,次のコードは最小相当から最大相当の順にクラスの順序をclassNamesLHで指定します。

        Ycat =分类(Y);一会=类别(Ycat);频率= countcats (Ycat);[~, idx] =(频率)进行排序;classNamesLH =一会(idx);

アルゴリズム

  • アンサンブル集約アルゴリズムの詳細については,アンサンブルアルゴリズムを参照してください。

  • 方法がブースティングアルゴリズム,学习者が決定木になるように指定した場合,既定では“切り株”が成長します。決定株は、2.つの終端ノード (葉ノード) に接続されている 1.つのルート ノードです。木の深さは、templateTreeを使用して名前と値のペアの引数最大数分裂MinLeafSizeおよびMinParentSizeを指定することにより調整できます。

  • fitensembleは誤分類コストが大きいクラスをオーバーサンプリングし,誤分類コストが小さいクラスをアンダーサンプリングして,袋中の標本を生成します。その結果,out-of-bagの標本では,誤分類コストが大きいクラスの観測値は少なくなり,誤分類コストが小さいクラスの観測値は多くなります。小さいデータセットと歪みが大きいコスト行列を使用してアンサンブル分類に学習をさせる場合,クラスあたりのout-of-bag観測値の数が少なくなる可能性があります。このため,out-of-bagの推定誤差の変動幅が非常に大きくなり,解釈が困難になる可能性があります。事前確率が大きいクラスでも同じ現象が発生する場合があります。

  • アンサンブル集約法(方法)がRUSBoostである場合,名前と値のペアの引数比率最小では最小相当クラスに関して各クラスのサンプリングの比率を指定します。たとえば,学習データにA および B という 2 つのクラスがあるとします。A には 100 個の観測値、B には 10 個の観測値が含まれています。また、最小相当クラスでは個の観測値が学習データに含まれているとします。

    • “RatioToSmallest”,2を設定した場合,年代2 * 1020.になります。したがって、fitensembleはクラスの20個の観測値とクラスBの20個の観測値を使用して,すべての学習器に学習をさせます。‘RatioToSmallest’,(2 - 2)を設定した場合も同じ結果になります。

    • ‘RatioToSmallest’,(2,1)を設定した場合,s12 * 1020.およびs21 * 1010になります。したがって、fitensembleはクラスの20個の観測値とクラスBの10個の観測値を使用して,すべての学習器に学習をさせます。

  • 決定木のアンサンブルの場合とデュアルコア以上のシステムの場合,fitensembleでは英特尔®スレッディング ビルディング ブロック (待定)を使用して学習を並列化します。英特尔TBBについての詳細は、https://software.intel.com/en-us/intel-tbbを参照してください。

参照

[1] Breiman, L.《套袋预测》。机器学习。1996年第26卷,123-140页。

[2] 《随机森林》,机器学习,第45卷,第5-32页,2001年。

[3] Freund, Y.“一个更健壮的助推算法。“v1 arXiv: 0905.2138, 2009。

[4] 《在线学习的决策理论推广及其在促进学习中的应用》,《计算机与系统科学杂志》,第55卷,第119-139页,1997年。

[5] Friedman, J. <贪婪函数近似:梯度增压机>《统计年鉴》,第29卷第5期,第1189-1232页,2001年。

Friedman, J., T. Hastie,和R. Tibshirani。加性逻辑回归:助推的统计学观点《统计年鉴》,第28卷第2期,第337-407页,2000年。

Hastie, T., R. Tibshirani, J. Friedman。统计学习的要素部分版,施普林格,纽约,2008。

[8] Ho,T.K.“构建决策森林的随机子空间方法”,《模式分析和机器智能IEEE学报》,第20卷,第8期,第832-844页,1998年。

Schapire r.e., Y. Freund, P. Bartlett和W.S. Lee。“扩大差额:对投票方法有效性的新解释。”《统计年鉴》,第26卷第5期,第1651-1686页,1998年。

Seiffert, C., T. Khoshgoftaar, J. Hulse和A. Napolitano。RUSBoost:在训练数据有偏差时提高分类性能。“第19届模式识别国际会议”,第1-4页,2008。

[11]温穆特,廖建军,陈志强。“完全正确的助推算法,使利润最大化。”Proc, 23日国际。机器学习大会,ACM,纽约,第1001-1008页,2006。

R2011aで導入