Main Content

predict

サポート ベクター マシン回帰モデルの使用による応答の予測

説明

yfit = predict(Mdl,X) は、学習済みの完全またはコンパクトなサポート ベクター マシン (SVM) 回帰モデル Mdl に基づいて、テーブルまたは行列 X 内の予測子データに対する予測応答のベクトルを返します。

yfit = predict(Mdl,X,PredictionForMissingValue=prediction) は、予測子データ X に欠損値がある観測値について予測した応答として prediction の値を使用します。既定では、predict は学習データ内の観測された応答値の中央値を使用します。 (R2023b 以降)

入力引数

すべて展開する

SVM 回帰モデル。それぞれ fitrsvm または compact によって返される RegressionSVM モデルまたは CompactRegressionSVM モデルとして指定します。

応答の生成に使用する予測子データ。数値行列またはテーブルを指定します。

X の各行は 1 つの観測値に対応し、各列は 1 つの変数に対応します。

  • 数値行列の場合

    • X の列を構成する変数の順序は、Mdl に学習させた予測子変数の順序と同じでなければなりません。

    • テーブル (たとえば Tbl) を使用して Mdl に学習をさせた場合、Tbl に含まれている予測子変数がすべて数値変数であれば、X を数値行列にすることができます。学習時に Tbl 内の数値予測子をカテゴリカルとして扱うには、fitrsvm の名前と値のペアの引数 CategoricalPredictors を使用してカテゴリカル予測子を同定します。Tbl に種類の異なる予測子変数 (数値および categorical データ型など) が混在し、X が数値行列である場合、predict でエラーがスローされます。

  • テーブルの場合

    • predict は、文字ベクトルの cell 配列ではない cell 配列や複数列の変数をサポートしません。

    • テーブル (たとえば Tbl) を使用して Mdl に学習をさせた場合、X 内のすべての予測子変数は変数名およびデータ型が、Mdl に学習させた (Mdl.PredictorNames に格納されている) 変数と同じでなければなりません。ただし、X の列の順序が Tbl の列の順序に対応する必要はありません。TblX に追加の変数 (応答変数や観測値の重みなど) を含めることができますが、predict はこれらを無視します。

    • 数値行列を使用して Mdl に学習をさせた場合、Mdl.PredictorNames 内の予測子名と X 内の対応する予測子変数名が同じでなければなりません。学習時に予測子の名前を指定する方法については、fitrsvm の名前と値のペアの引数 PredictorNames を参照してください。X 内の予測子変数はすべて数値ベクトルでなければなりません。X に追加の変数 (応答変数や観測値の重みなど) を含めることができますが、predict はこれらを無視します。

fitrsvm'Standardize',true に設定して Mdl を学習させた場合、X の列が Mdl.Mu の対応する平均値と Mdl.Sigma の標準偏差を使用して標準化されます。

データ型: table | double | single

R2023b 以降

予測子に欠損値がある観測値に使用する予測した応答値。"median""mean"、または数値スカラーとして指定します。

説明
"median"predict は、予測子に欠損値がある観測値について予測した応答値として、学習データ内の観測された応答値の中央値を使用します。
"mean"predict は、予測子に欠損値がある観測値について予測した応答値として、学習データ内の観測された応答値の平均値を使用します。
数値スカラーpredict は、予測子に欠損値がある観測値について予測した応答値として、この値を使用します。

例: "mean"

例: NaN

データ型: single | double | char | string

出力引数

すべて展開する

予測応答。長さが n のベクトルとして返されます。n は、学習データに含まれている観測値の個数です。

応答を予測する方法の詳細については、サポート ベクター マシン回帰について式 1式 2を参照してください。

すべて展開する

carsmall データ セットを読み込みます。与えられた馬力と重量に対して自動車の燃費を予測するモデルを考えます。標本サイズを調べます。

load carsmall
tbl = table(Horsepower,Weight,MPG);
N = size(tbl,1);

データを学習セットとテスト セットに分割します。データの 10% をテスト用にホールドアウトします。

rng(10); % For reproducibility
cvp = cvpartition(N,'Holdout',0.1);
idxTrn = training(cvp); % Training set indices
idxTest = test(cvp);    % Test set indices

線形 SVM 回帰モデルを学習させます。データを標準化します。

Mdl = fitrsvm(tbl(idxTrn,:),'MPG','Standardize',true);

MdlRegressionSVM モデルです。

テスト セットの応答を予測します。

YFit = predict(Mdl,tbl(idxTest,:));

観測応答値と予測応答値が並んで格納されているテーブルを作成します。

table(tbl.MPG(idxTest),YFit,'VariableNames',...
    {'ObservedValue','PredictedValue'})
ans=10×2 table
    ObservedValue    PredictedValue
    _____________    ______________

          14             9.4833    
          27             28.938    
          10              7.765    
          28             27.155    
          22             21.054    
          29             31.484    
        24.5             30.306    
        18.5              19.12    
          32             28.225    
          28             26.632    

ヒント

代替機能

Simulink ブロック

Simulink® に SVM 回帰モデルの予測を統合するには、Statistics and Machine Learning Toolbox™ ライブラリにある RegressionSVM Predict ブロックを使用するか、MATLAB® Function ブロックを関数 predict と共に使用します。例については、RegressionSVM Predict ブロックの使用による応答の予測MATLAB Function ブロックの使用によるクラス ラベルの予測を参照してください。

使用するアプローチを判断する際は、以下を考慮してください。

  • Statistics and Machine Learning Toolbox ライブラリ ブロックを使用する場合、固定小数点ツール (Fixed-Point Designer)を使用して浮動小数点モデルを固定小数点に変換できます。

  • MATLAB Function ブロックを関数 predict と共に使用する場合は、可変サイズの配列に対するサポートを有効にしなければなりません。

  • MATLAB Function ブロックを使用する場合、予測の前処理や後処理のために、同じ MATLAB Function ブロック内で MATLAB 関数を使用することができます。

拡張機能

バージョン履歴

R2015b で導入

すべて展開する