Main Content

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

ClassificationSVM Predict

1 クラスおよびバイナリ分類用のサポート ベクター マシン (SVM) 分類器を使用した観測値の分類

  • ライブラリ:
  • Statistics and Machine Learning Toolbox / Classification

説明

ClassificationSVM Predict ブロックは、1 クラスおよび 2 クラス (バイナリ) の分類について、SVM 分類オブジェクト ClassificationSVM とそのオブジェクト関数 predict を使用して、観測値を分類します。

ClassificationSVM オブジェクトを含むワークスペース変数の名前を指定することにより、学習済みの SVM 分類オブジェクトをブロックにインポートします。入力端子 [X] では観測値 (予測子データ) を受信し、出力端子 [Label] では観測値の予測クラス ラベルを返します。オプションの出力端子 [Score] を追加すると、予測クラス スコアまたは事後確率が返されます。

端子

入力

すべて展開する

予測子データ。1 つの観測値の列ベクトルまたは行ベクトルとして指定します。

依存関係

  • [X] の変数の順序は、[Select trained machine learning model] で指定された SVM モデルで学習済みの、予測子変数の順序と同じでなければなりません。

  • SVM モデルに学習をさせるときに fitcsvm'Standardize',true を設定した場合、ClassificationSVM Predict ブロックは、SVM モデルの Mu プロパティにある平均と Sigma プロパティにある標準偏差を使用して、[X] の値を標準化します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

出力

すべて展開する

予測クラス ラベル。スカラーとして返されます。

依存関係

  • 1 クラス学習の場合、[Label] は陽性クラスを表す値です。

  • 2 クラス学習の場合、[Label] はスコアまたは事後確率が最大になるクラスです。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated

予測クラスのスコアまたは事後確率。1 クラス学習ではスカラーとして、2 クラス学習では 1 行 2 列のベクトルとして返されます。

  • 1 クラス学習の場合、[Score] は陽性クラスの分類スコアです。1 クラス学習の事後確率を得ることはできません。

  • 2 クラス学習の場合、[Score] は 1 行 2 列のベクトルです。

    • [Score] の 1 番目および 2 番目の要素は、それぞれ陰性クラス (svmMdl.ClassNames(1)) および陽性クラス (svmMdl.ClassNames(2)) の分類スコアに対応します。ここで、svmMdl[Select trained machine learning model] で指定された SVM モデルです。svmMdlClassNames プロパティは、陰性および陽性のクラス名をチェックするために使用できます。

    • fitPosterior または fitSVMPosterior を使用してスコアから事後確率への最適な変換関数をあてはめた場合、[Score] にはクラスの事後確率が格納されます。それ以外の場合は、[Score] にクラス スコアが格納されます。

依存関係

この端子を有効にするには、[ブロック パラメーター] ダイアログ ボックスの [メイン] タブで [Add output port for predicted class scores] のチェック ボックスをオンにします。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

パラメーター

すべて展開する

メイン

ClassificationSVM オブジェクトまたは CompactClassificationSVM オブジェクトを含むワークスペース変数の名前を指定します。

fitcsvm を使用して SVM モデルに学習させる場合、以下の制限が適用されます。

  • 予測子データにカテゴリカル予測子 (logicalcategoricalcharstring、または cell) を含めることはできません。学習データをテーブルで渡す場合、予測子は数値 (double または single) でなければなりません。また、名前と値のペアの引数 'CategoricalPredictors' は使用できません。カテゴリカル予測子を SVM モデルに含めるには、SVM モデルをあてはめる前に dummyvar を使用してカテゴリカル予測子を前処理します。

  • 名前と値のペアの引数 'ScoreTransform' の値を 'invlogit' や無名関数にすることはできません。新しい観測値が与えられた場合に事後確率を予測するブロックでは、学習済みの SVM モデルを fitPosterior または fitSVMPosterior に渡します。

  • 名前と値のペアの引数 'KernelFunction' の値は、'gaussian''linear'、または 'polynomial' でなければなりません。

プログラムでの使用

ブロック パラメーター: TrainedLearner
型: ワークスペース変数
値: ClassificationSVM オブジェクト | CompactClassificationSVM オブジェクト
既定の設定: svmMdl

チェック ボックスをオンにすると、ClassificationSVM Predict ブロックに 2 番目の出力端子 [Score] が追加されます。

プログラムでの使用

ブロック パラメーター: ShowOutputScore
型: 文字ベクトル
値: 'off' | 'on'
既定の設定: 'off'

データ型

固定小数点が使用可能なパラメーター

固定小数点演算の丸めモードを指定します。詳細は、丸め (Fixed-Point Designer)を参照してください。

ブロック パラメーターは常に、最も近い表現可能な値に丸められます。ブロック パラメーターの丸めを制御するには、MATLAB® 丸め関数を使用した表現をマスク フィールドに入力します。

プログラムでの使用

ブロック パラメーター: RndMeth
型: 文字ベクトル
値: 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'
既定の設定: 'Floor'

オーバーフローの際に飽和するか折り返すかを指定します。

アクション理由オーバーフローの際の影響

このチェック ボックスをオンにする (on)。

モデルにオーバーフローの可能性があり、生成されたコードで明示的な飽和保護が必要である。

オーバーフローの際は、データ型が表現できる最小値または最大値に飽和します。

データ型 int8 (8 ビット負号付き整数) が表現できる最大値は 127 です。この最大値よりも大きいブロック演算結果は、8 ビット整数のオーバーフローを引き起こします。チェック ボックスをオンにすると、ブロック出力は 127 で飽和します。同様に、ブロック出力は最小出力値の -128 で飽和します。

このチェック ボックスをオフにする (off)。

生成されたコードの効率を最適化したい。

ブロックが範囲外の信号を処理する方法を過剰指定したくない。詳細は、信号範囲のエラーのトラブルシューティング (Simulink)を参照してください。

オーバーフローの際は、データ型が表現できる適切な値で折り返します。

データ型 int8 (8 ビット負号付き整数) が表現できる最大値は 127 です。この最大値よりも大きいブロック演算結果は、8 ビット整数のオーバーフローを引き起こします。チェック ボックスをオフにすると、オーバーフローによって引き起こされた値が int8 として解釈され、意図しない結果になる可能性があります。たとえば、130 (バイナリでは 1000 0010) というブロック結果が int8 として表現されると、-126 になります。

プログラムでの使用

ブロック パラメーター: SaturateOnIntegerOverflow
型: 文字ベクトル
値: 'off' | 'on'
既定の設定: 'off'

このパラメーターを選択して、ブロックに指定したデータ型を固定小数点ツールがオーバーライドしないようにします。詳細は、[出力データ型の設定をロックする] の使用 (Fixed-Point Designer)を参照してください。

プログラムでの使用

ブロック パラメーター: LockScale
型: 文字ベクトル
値: 'off' | 'on'
既定の設定: 'off'
データ型

[Label] 出力のデータ型を指定します。データ型は継承するか、直接指定するか、Simulink.NumericType のようにデータ型オブジェクトとして表現することができます。

継承オプションを選択すると、ソフトウェアは以下のように動作します。

  • Inherit: Inherit via back propagation — Simulink は、データ型の伝播時にブロックの [Label data type] を自動的に決定します (データ型の伝播 (Simulink)を参照)。この場合、ブロックは下流ブロックまたは信号オブジェクトのデータ型を使用します。

  • Inherit: Inherit from 'Constant value'ClassificationSVM predict ブロックは、マスクの下で Constant ブロックを使用します。Constant ブロックのデータ型は、[Select trained machine learning model] で指定された SVM モデルで学習済みの、観測されたクラス ラベルに依存します。

    • 観測されたクラス ラベルが数値の場合、Constant ブロックのデータ型は double になります。

    • 観測されたクラス ラベルが logical の場合、Constant ブロックのデータ型は boolean になります。

    • 観測されたクラス ラベルが数値でも logical でもない場合、Constant ブロックは enumerated データ型変数 enumLabels を使用します。たとえば、クラス ラベルが class 1 および class 2 の場合、対応する [Label] の値は enumLabels.class_1 および enumLabels.class_2 になります。ブロックは、関数 matlab.lang.makeValidName を使用して、クラス ラベルを有効な MATLAB 識別子に変換します。

データ型の詳細については、信号のデータ型の制御 (Simulink)を参照してください。

[データ型アシスタントを表示] ボタン をクリックすると、[データ型アシスタント] が表示されます。これは、データ型の属性を設定する際に役立ちます。詳細は、データ型アシスタントを利用したデータ型の指定 (Simulink)を参照してください。

プログラムでの使用

ブロック パラメーター: LabelDataTypeStr
型: 文字ベクトル
: 'Inherit: Inherit via back propagation' | Inherit: Inherit from 'Constant value' | 'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | boolean | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | Enum: <class name> | '<data type expression>'
既定の設定: 'Inherit: Inherit via back propagation'

Simulink® がチェックする [Label] 出力範囲の下限値。

Simulink は以下を実行するために最小値を使用します。

メモ

[Label minimum] パラメーターが、[Label] の実際の出力信号を飽和させたり、クリップしたりすることはありません。代わりに、Saturation (Simulink) ブロックを使用してください。

プログラムでの使用

ブロック パラメーター: LabelOutMin
型: 文字ベクトル
: '[ ]'| スカラー
既定の設定: '[ ]'

Simulink がチェックする [Label] 出力範囲の上限値。

Simulink は以下を実行するために最大値を使用します。

メモ

[Label maximum] パラメーターが、[Label] の実際の出力信号を飽和させたり、クリップしたりすることはありません。代わりに、Saturation (Simulink) ブロックを使用してください。

プログラムでの使用

ブロック パラメーター: LabelOutMax
型: 文字ベクトル
: '[ ]'| スカラー
既定の設定: '[ ]'

[Score] 出力のデータ型を指定します。データ型は継承するか、直接指定するか、Simulink.NumericType のようにデータ型オブジェクトとして表現することができます。

[Inherit: auto] を選択すると、ブロックはデータ型を継承するルールを使用します。

データ型の詳細については、信号のデータ型の制御 (Simulink)を参照してください。

[データ型アシスタントを表示] ボタン をクリックすると、[データ型アシスタント] が表示されます。これは、データ型の属性を設定する際に役立ちます。詳細は、データ型アシスタントを利用したデータ型の指定 (Simulink)を参照してください。

プログラムでの使用

ブロック パラメーター: ScoreDataTypeStr
型: 文字ベクトル
: 'Inherit: auto' | 'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | '<data type expression>'
既定の設定: 'double'

Simulink がチェックする [Score] 出力範囲の下限値。

Simulink は以下を実行するために最小値を使用します。

メモ

[Score minimum] パラメーターが、[Score] の実際の信号を飽和させたり、クリップしたりすることはありません。代わりに、Saturation (Simulink) ブロックを使用してください。

プログラムでの使用

ブロック パラメーター: ScoreOutMin
型: 文字ベクトル
: '[ ]'| スカラー
既定の設定: '[ ]'

Simulink がチェックする [Score] 出力範囲の上限値。

Simulink は以下を実行するために最大値を使用します。

メモ

[Score maximum] パラメーターが、[Score] の実際の信号を飽和させたり、クリップしたりすることはありません。代わりに、Saturation (Simulink) ブロックを使用してください。

プログラムでの使用

ブロック パラメーター: ScoreOutMax
型: 文字ベクトル
: '[ ]'| スカラー
既定の設定: '[ ]'

内部の未変換スコアのデータ型を指定します。データ型は継承するか、直接指定するか、Simulink.NumericType のようにデータ型オブジェクトとして表現することができます。

[Inherit: auto] を選択すると、ブロックはデータ型を継承するルールを使用します。

データ型の詳細については、信号のデータ型の制御 (Simulink)を参照してください。

[データ型アシスタントを表示] ボタン をクリックすると、[データ型アシスタント] が表示されます。これは、データ型の属性を設定する際に役立ちます。詳細は、データ型アシスタントを利用したデータ型の指定 (Simulink)を参照してください。

プログラムでの使用

ブロック パラメーター: RawScoreDataTypeStr
型: 文字ベクトル
: 'Inherit: auto' | 'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | '<data type expression>'
既定の設定: 'double'

Simulink がチェックする未変換スコア範囲の下限値。

Simulink は以下を実行するために最小値を使用します。

メモ

[Raw score minimum] パラメーターが、未変換スコアの実際の信号を飽和させたり、クリップしたりすることはありません。

プログラムでの使用

ブロック パラメーター: RawScoreOutMin
型: 文字ベクトル
: '[ ]'| スカラー
既定の設定: '[ ]'

Simulink がチェックする未変換スコア範囲の上限値。

Simulink は以下を実行するために最大値を使用します。

メモ

[Raw score maximum] パラメーターが、未変換スコアの実際の信号を飽和させたり、クリップしたりすることはありません。

プログラムでの使用

ブロック パラメーター: RawScoreOutMax
型: 文字ベクトル
: '[ ]'| スカラー
既定の設定: '[ ]'

カーネル計算用のパラメーターのデータ型を指定します。

[Kernel data type] パラメーターは、指定した SVM モデルのカーネル関数のタイプによって、異なるパラメーターのデータ型を指定します。SVM モデルに学習させている場合は、名前と値のペアの引数 'KernelFunction' を指定します。

'KernelFunction'データ型
'gaussian' または 'rbf'[Kernel data type] は、ガウス カーネル G(x,s)=exp(D2) の平方距離 D2=xs2 のデータ型を指定します。ここで、x は観測値の予測子データで、s はサポート ベクターです。
'linear'[Kernel data type] は、線形カーネル関数 G(x,s)=xs' の出力のデータ型を指定します。ここで、x は観測値の予測子データで、s はサポート ベクターです。
'polynomial'[Kernel data type] は、多項式カーネル関数 G(x,s)=(1+xs')p の出力のデータ型を指定します。ここで、x は観測値の予測子データ、s はサポート ベクター、p は多項式カーネル関数の次数です。

データ型は継承するか、直接指定するか、Simulink.NumericType のようにデータ型オブジェクトとして表現することができます。

継承オプションを選択すると、ソフトウェアは以下のように動作します。

  • Inherit: Inherit via internal rule — ブロックは内部ルールを使用してデータ型を決定します。内部ルールは、組み込みターゲット ハードウェアのプロパティを考慮しながら、数値の精度、パフォーマンス、および生成されたコードのサイズを最適化するデータ型を選択します。状況によっては、効率と数値の精度を同時に最適化できないこともあります。

  • Inherit: Keep MSB — Simulink は、全範囲の演算を維持するデータ型を選択してから、組み込みターゲット ハードウェアに適したサイズまで精度を下げます。このルールではオーバーフローは発生しません。

    ヒント

    より効率的に生成されたコードについては、[整数オーバーフローで飽和] パラメーターをオフにしてください。

  • Inherit: Match scaling — Simulink は、スケーリングが入力タイプのスケーリングと一致するデータ型を選択します。ここで、入力とは、マスクの下のブロックの入力のことです。該当するタイプの全範囲が組み込みターゲット ハードウェアに適合しない場合、組み込みターゲット ハードウェアに適したタイプを生成できるよう、範囲が縮小されます。このルールではオーバーフローの発生する可能性があります。

    状況によっては、コードの効率と数値の精度を同時に最適化できないこともあります。これらの内部ルールが数値の精度またはパフォーマンスに関する特定のニーズを満たさない場合は、次のオプションのいずれかを使用してください。

    • データ型を明示的に指定する。

    • fixdt(1,32,16) のように既定のデータ型を明示的に指定してから、固定小数点ツールを使用してモデルのデータ型を推奨する。詳細については、fxptdlg (Fixed-Point Designer) を参照してください。

  • Inherit: Inherit via back propagation — (非推奨) ブロックは、マスクの下の下流ブロックのデータ型を使用します。

  • Inherit: Same as first input — (非推奨) ここでの最初の入力とは、マスクの下のブロックに関する最初の入力のことです。

データ型の詳細については、信号のデータ型の制御 (Simulink)を参照してください。

[データ型アシスタントを表示] ボタン をクリックすると、[データ型アシスタント] が表示されます。これは、データ型の属性を設定する際に役立ちます。詳細は、データ型アシスタントを利用したデータ型の指定 (Simulink)を参照してください。

プログラムでの使用

ブロック パラメーター: KernelDataTypeStr
型: 文字ベクトル
: 'Inherit: Inherit via internal rule | 'Inherit: Keep MSB' | 'Inherit: Match scaling' | 'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'uint64' | 'int64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | '<data type expression>'
既定の設定: 'double'

Simulink がチェックするカーネル計算用の内部変数範囲の下限値。

Simulink は以下を実行するために最小値を使用します。

メモ

[Kernel minimum] パラメーターが、カーネル計算値の実際の信号を飽和させたり、クリップしたりすることはありません。

プログラムでの使用

ブロック パラメーター: KernelOutMin
型: 文字ベクトル
: '[ ]'| スカラー
既定の設定: '[ ]'

Simulink がチェックするカーネル計算用の内部変数範囲の上限値。

Simulink は以下を実行するために最大値を使用します。

メモ

[Kernel maximum] パラメーターが、カーネル計算値の実際の信号を飽和させたり、クリップしたりすることはありません。

プログラムでの使用

ブロック パラメーター: KernelOutMax
型: 文字ベクトル
: '[ ]'| スカラー
既定の設定: '[ ]'

詳細

すべて展開する

ヒント

  • 線形 SVM モデルを使用しており、多数のサポート ベクターが含まれている場合、予測 (観測値の分類) が低速になる可能性があります。線形 SVM モデルに基づく観測値の分類を効率的に行うには、discardSupportVectors を使用して ClassificationSVM オブジェクトからサポート ベクターを削除します。

代替機能

MATLAB Function ブロックを ClassificationSVM オブジェクトのオブジェクト関数 predict と共に使用することができます。たとえば、MATLAB Function ブロックの使用によるクラスの予測を参照してください。

Statistics and Machine Learning Toolbox™ ライブラリ内の ClassificationSVM Predict ブロックを使用するかどうか、または MATLAB Function ブロックを関数 predict と共に使用するかどうかを判断する際には、以下を考慮してください。

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

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

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

拡張機能

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。

R2020b で導入