ClassificationEnsemble
アンサンブル分類器
説明
ClassificationEnsemble は、学習済みの弱学習器モデルのセット、およびそれらの学習器が学習を行ったデータを結合します。このオブジェクトでは、弱学習器からの予測を集約することにより、新しいデータに対するアンサンブル応答を予測できます。学習に使用したデータが格納されているため、再代入予測を計算でき、必要に応じて学習を再開することもできます。
作成
アンサンブル分類オブジェクト (ens) の作成には fitcensemble を使用します。
プロパティ
アンサンブルのプロパティ
この プロパティ は読み取り専用です。
弱学習器の重みの結合に使用された方法。'WeightedAverage' または 'WeightedSum' のいずれかとして返されます。
データ型: char
この プロパティ は読み取り専用です。
当てはめの情報。数値配列として返されます。FitInfoDescription プロパティは、この配列の内容を記述します。
データ型: double
この プロパティ は読み取り専用です。
FitInfo の情報の説明。文字ベクトルまたは文字ベクトルの cell 配列として返されます。
データ型: char | cell
この プロパティ は読み取り専用です。
アンサンブル内の弱学習器の名前。文字ベクトルの cell 配列として返されます。各学習器の名前は一度だけ現れます。たとえば、ツリーが 100 本のアンサンブルの場合は、LearnerNames は {'Tree'} になります。
データ型: cell
この プロパティ は読み取り専用です。
アンサンブルの学習に使用されるパラメーター。EnsembleParams オブジェクトとして返されます。ModelParameters のプロパティには、アンサンブルのタイプ ('classification' または 'regression' のいずれか)、アンサンブルの作成に使用される Method、およびその他のアンサンブルに応じたパラメーターが含まれます。
この プロパティ は読み取り専用です。
アンサンブル内の学習済み弱学習器の数。正の整数として返されます。
データ型: double
この プロパティ は読み取り専用です。
学習済み弱学習器。cell ベクトルとして返されます。対応するコンパクトな分類モデルが cell ベクトルのエントリに格納されます。
データ型: cell
この プロパティ は読み取り専用です。
学習済み弱学習器の重み。数値ベクトルとして返されます。TrainedWeights には NumTrained 個の要素が含まれます。ここで、NumTrained はアンサンブル内の弱学習器の数です。アンサンブルは、学習器からの重み付き予測を集約することによって、予測される応答を計算します。
データ型: double
学習器 j で予測子 i が使用されていることを示すインジケーター。P 行 NumTrained 列のサイズの logical 行列として返されます。ここで、P は学習データ内の予測子 (列) の数です。UsePredForLearner(i,j) は、学習器 j で予測子 i が使用されている場合は true、それ以外の場合は false になります。それぞれの学習器で、予測子の順序は学習データにおける列の順序と同じになります。
アンサンブルのタイプが Subspace でない場合、UsePredForLearner のエントリはすべて true になります。
データ型: logical
予測子のプロパティ
この プロパティ は読み取り専用です。
数値予測子のビンのエッジ。p 個の数値ベクトルが含まれている cell 配列を指定します。p は予測子の個数です。各ベクトルには、数値予測子のビンのエッジを含めます。カテゴリカル予測子はビン化されないので、カテゴリカル予測子の場合は、この cell 配列の要素を空にします。
数値予測子がビン化されるのは、木学習器を使用してモデルに学習をさせるときに名前と値の引数 NumBins として正の整数スカラーを指定した場合だけです。NumBins の値が空 (既定) である場合、BinEdges プロパティは空になります。
学習済みモデル mdl の BinEdges プロパティを使用することにより、ビン化された予測子データ Xbinned を再現できます。
X = mdl.X; % Predictor data
Xbinned = zeros(size(X));
edges = mdl.BinEdges;
% Find indices of binned predictors.
idxNumeric = find(~cellfun(@isempty,edges));
if iscolumn(idxNumeric)
idxNumeric = idxNumeric';
end
for j = idxNumeric
x = X(:,j);
% Convert x to array if x is a table.
if istable(x)
x = table2array(x);
end
% Group x into bins by using the discretize function.
xbinned = discretize(x,[-inf; edges{j}; inf]);
Xbinned(:,j) = xbinned;
endXbinned に格納されます。カテゴリカル予測子の場合、Xbinned の値は 0 になります。X に NaN が含まれている場合、対応する Xbinned の値は NaN になります。データ型: cell
この プロパティ は読み取り専用です。
カテゴリカル予測子のインデックス。正の整数のベクトルとして指定します。CategoricalPredictors には、対応する予測子がカテゴリカルであることを示すインデックス値が格納されます。インデックス値の範囲は 1 ~ p です。p はモデルの学習に使用した予測子の数です。どの予測子もカテゴリカルではない場合、このプロパティは空 ([]) になります。
データ型: single | double
この プロパティ は読み取り専用です。
展開された予測子名。文字ベクトルの cell 配列として返されます。
モデルがカテゴリカル変数用のエンコーディングを使用している場合、ExpandedPredictorNames には展開された変数を表す名前が格納されます。それ以外の場合、ExpandedPredictorNames は PredictorNames と同じです。
データ型: cell
この プロパティ は読み取り専用です。
予測子名。文字ベクトルの cell 配列を指定します。PredictorNames のエントリの順序は学習データと同じになります。
データ型: cell
この プロパティ は読み取り専用です。
予測子の値。実数行列または table として返されます。X の各列が 1 つの変数 (予測子) を表し、各行が 1 つの観測値を表します。
データ型: double | table
応答のプロパティ
この プロパティ は読み取り専用です。
重複が削除された Y の要素のリスト。categorical 配列、文字ベクトルの cell 配列、文字配列、logical ベクトル、または数値ベクトルとして返されます。ClassNames のデータ型は引数 Y のデータと同じです。(string 配列は文字ベクトルの cell 配列として扱われます)。
データ型: double | logical | char | cell | categorical
この プロパティ は読み取り専用です。
応答変数の名前。文字ベクトルとして返されます。
データ型: char
この プロパティ は読み取り専用です。
X の観測値に対応するクラス ラベル。categorical 配列、文字ベクトルの cell 配列、文字配列、logical ベクトル、または数値ベクトルとして返されます。Y の各行は、X の対応する行の分類を表します。
データ型: single | double | logical | char | string | cell | categorical
その他のデータのプロパティ
この プロパティ は読み取り専用です。
ハイパーパラメーターの交差検証最適化の説明。BayesianOptimization オブジェクト、またはハイパーパラメーターと関連する値の table として返されます。モデルを作成するときに名前と値の引数 OptimizeHyperparameters が空以外であった場合、このプロパティは空以外になります。HyperparameterOptimizationResults の値は、モデル作成時の HyperparameterOptimizationOptions の Optimizer オプションの設定に依存します。
"bayesopt"(既定) —BayesianOptimizationクラスのオブジェクト"gridsearch"または"randomsearch"— 使用したハイパーパラメーター、観測された目的関数の値 (交差検証損失)、および最低 (最良) から最高 (最悪) までの観測値の順位が格納された table
この プロパティ は読み取り専用です。
学習データ内の観測値の数。正の整数として返されます。入力データまたは応答データに欠損値がある場合、NumObservations は入力データの行数よりも少なくなることがあります。
データ型: double
この プロパティ は読み取り専用です。
当てはめに使用される元の予測子データ X の行。n 要素の logical ベクトルとして返されます。ここで、n は X の行数です。オブジェクトの作成に X のすべての行を使用する場合、RowsUsed は空の配列 ([]) になります。
データ型: logical
この プロパティ は読み取り専用です。
アンサンブル内のスケーリングされた重み。数値ベクトルとして返されます。W の長さは n (学習データの行数) です。W の要素の合計は 1 です。
データ型: double
他の分類のプロパティ
この プロパティ は読み取り専用です。
誤分類コスト。正方数値行列として返されます。Cost には K 個の行および列が含まれ、K はクラスの数です。
Cost(i,j) は、真のクラスが i である点をクラス j に分類するコストです。Cost の行と列の順序は、ClassNames のクラスの順序に対応します。
データ型: double
この プロパティ は読み取り専用です。
各クラスの事前確率。K 要素の数値ベクトルとして返されます。ここで、K は応答内の一意のクラスの数です。Prior の要素の順序は、ClassNames のクラスの順序に対応します。
データ型: double
スコアを変換するための関数。関数ハンドルまたは組み込みの変換関数の名前として指定します。"none" は変換なしを意味します。つまり、"none" は @(x)x と同じ意味になります。組み込みの変換関数の一覧とカスタム変換関数の構文については、ScoreTransform (ツリー) または ScoreTransform (アンサンブル) を参照してください。
ドット表記を使用して関数 ScoreTransform を追加または変更します。
Mdl.ScoreTransform = "function" % or Mdl.ScoreTransform = @function
データ型: char | string | function_handle
オブジェクト関数
compact | 機械学習モデルのサイズの縮小 |
compareHoldout | 新しいデータを使用して 2 つの分類モデルの精度を比較 |
crossval | 機械学習モデルの交差検証 |
edge | アンサンブル分類モデルの分類エッジ |
gather | Gather properties of Statistics and Machine Learning Toolbox object from GPU |
lime | Local Interpretable Model-agnostic Explanations (LIME) |
loss | アンサンブル分類モデルの分類損失 |
margin | アンサンブル分類モデルの分類マージン |
partialDependence | 部分依存の計算 |
plotPartialDependence | 部分依存プロット (PDP) および個別条件付き期待値 (ICE) プロットの作成 |
predict | アンサンブル分類モデルを使用したラベルの予測 |
predictorImportance | 決定木の分類アンサンブルに関する予測子の重要度の推定 |
resubEdge | アンサンブル分類モデルの再代入分類エッジ |
resubLoss | アンサンブル分類モデルの再代入分類損失 |
resubMargin | アンサンブル分類モデルの再代入分類マージン |
resubPredict | 再代入によるアンサンブル分類の観測値の分類 |
resume | アンサンブル分類モデルの学習の再開 |
shapley | シャープレイ値 |
testckfold | 交差検証の反復により 2 つの分類モデルの精度を比較 |
例
ionosphere データ セットを読み込みます。
load ionosphereすべての測定値と AdaBoostM1 法を使用して、100 本の分類木があるブースティング アンサンブルに学習させます。
Mdl = fitcensemble(X,Y,'Method','AdaBoostM1')
Mdl =
ClassificationEnsemble
ResponseName: 'Y'
CategoricalPredictors: []
ClassNames: {'b' 'g'}
ScoreTransform: 'none'
NumObservations: 351
NumTrained: 100
Method: 'AdaBoostM1'
LearnerNames: {'Tree'}
ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'
FitInfo: [100×1 double]
FitInfoDescription: {2×1 cell}
Properties, Methods
Mdl は ClassificationEnsemble モデル オブジェクトです。
Mdl.Trained は、アンサンブルを構成する学習済みの分類木 (CompactClassificationTree モデル オブジェクト) の 100 行 1 列の cell ベクトルが格納されているプロパティです。
1 番目の学習済み分類木のグラフをプロットします。
view(Mdl.Trained{1},'Mode','graph')
既定の設定では、fitcensemble は木のブースティング アンサンブルに対して浅い木を成長させます。
X の平均のラベルを予測します。
predMeanX = predict(Mdl,mean(X))
predMeanX = 1×1 cell array
{'g'}
ヒント
分類木のアンサンブルの場合、ens の Trained プロパティにはコンパクトな分類モデルの ens.NumTrained 行 1 列の cell ベクトルが格納されます。cell ベクトルの木 t をテキストまたはグラフィックスで表示するには、次のように入力します。
view(ens.Trained{(LogitBoost または GentleBoost を使用して集約されたアンサンブルの場合)。t}.CompactRegressionLearner)view(ens.Trained{(他のすべての集約法の場合)。t})
拡張機能
使用上の注意および制限:
関数
predictはコード生成をサポートします。Simulink® にアンサンブルの予測を統合するには、Statistics and Machine Learning Toolbox™ ライブラリにある ClassificationEnsemble Predict ブロックを使用するか、MATLAB® Function ブロックを関数
predictと共に使用します。fitcensembleを使用してアンサンブルに学習させる場合、以下の制限が適用されます。名前と値の引数
ScoreTransformの値を無名関数にすることはできません。アンサンブルで使用する弱学習器に対するコード生成の制限がアンサンブルにも適用されます。
決定木弱学習器では、代理分岐は使用できません。つまり、名前と値の引数
Surrogateの値は'off'でなければなりません。k 最近傍弱学習器では、名前と値の引数
Distanceの値をカスタム距離関数にすることはできません。名前と値の引数DistanceWeightの値をカスタム距離重み関数にすることはできますが、無名関数にすることはできません。
固定小数点コードの生成では、以下の追加制限が適用されます。
fitcensembleを使用してアンサンブルに学習させる場合、木学習器を使用してアンサンブルに学習させる必要があり、ScoreTransformの値を'invlogit'にすることはできません。カテゴリカル予測子 (
logical、categorical、char、string、またはcell) はサポートされません。名前と値の引数CategoricalPredictorsは使用できません。カテゴリカル予測子をモデルに含めるには、モデルを当てはめる前にdummyvarを使用してカテゴリカル予測子を前処理します。categoricalデータ型のクラス ラベルはサポートされません。学習データ内のクラス ラベル値 (TblまたはY) および名前と値の引数ClassNamesの値はどちらもcategoricalデータ型の配列にはできません。
詳細は、コード生成の紹介を参照してください。
使用上の注意および制限:
次のオブジェクト関数は GPU 配列を完全にサポートしています。
次のオブジェクト関数は GPU 配列のサポートに制限があります。
次の少なくとも 1 つに該当する場合、オブジェクト関数は GPU で実行されます。
モデルが GPU 配列を使用して当てはめられている。
オブジェクト関数に渡す予測子データが GPU 配列である。
詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2011a で導入R2023b 以降では、判別分析弱学習器をもつアンサンブル分類モデルの X、Y、および W のデータ プロパティに、予測子に欠損値がある学習観測値が含まれます。RowsUsed プロパティは、学習に使用された観測値ではなく、モデルに格納されている学習観測値を示します。予測子に欠損値がある観測値は、モデルの学習プロセスでは引き続き省略されます。
以前のリリースでは、予測子に欠損値がある学習観測値はモデルのデータ プロパティで省略されていました。
R2022a 以降では、指定したコストの値を使用して観測誤分類コストを計算できるように、Cost プロパティにユーザー指定のコスト行列が格納されます。ソフトウェアで格納される正規化された事前確率 (Prior) と観測値の重み (W) には、コスト行列で指定されているペナルティは反映されていません。観測誤分類コストを計算するには、関数 loss または resubLoss を呼び出すときに名前と値の引数 LossFun を "classifcost" として指定します。
モデルの学習は変更されていないため、クラス間の判定境界には変更がないことに注意してください。
学習用に、指定した事前確率が近似関数によって更新され、指定したコスト行列で指定されているペナルティが組み込まれます。さらに、事前確率と観測値の重みが正規化されます。この動作は変更されていません。以前のリリースでは、Cost プロパティには既定のコスト行列が格納され、Prior プロパティと W プロパティには学習に使用される事前確率と観測値の重みがそれぞれ格納されていました。R2022a 以降では、ユーザー指定のコスト行列が変更なしで格納され、コストのペナルティが反映されていない正規化された事前確率と観測値の重みが格納されます。詳細については、誤分類コスト行列、事前確率、および観測値の重みを参照してください。
Cost、Prior、および W の各プロパティを使用するオブジェクト関数の一部を次に示します。
関数
lossおよびresubLossは、名前と値の引数LossFunを"classifcost"または"mincost"として指定した場合、Costプロパティに格納されたコスト行列を使用します。関数
lossおよびedgeは、入力データの観測値の重みを正規化するために、Priorプロパティに格納された事前確率を使用します。関数
resubLossおよびresubEdgeは、Wプロパティに格納された観測値の重みを使用します。
分類モデルに学習させるときに既定以外のコスト行列を指定すると、オブジェクト関数で以前のリリースとは異なる値が返されます。
ソフトウェアでコスト行列、事前確率、および観測値の重みを以前のリリースと同じように扱う場合は、誤分類コスト行列に応じた事前確率と観測値の重みの調整の説明に従って、既定以外のコスト行列の事前確率と観測値の重みを調整します。その後、分類モデルに学習させるときに、調整後の事前確率と観測値の重みを名前と値の引数 Prior と Weights を使用して指定し、既定のコスト行列を使用します。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)