Main Content

ClassificationSVM Predict

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

R2020b 以降

  • ClassificationSVM Predict Block Icon

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

説明

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

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

端子

入力

すべて展開する

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

x の変数の順序は、[学習済み機械学習モデルを選択] で指定された SVM モデルに学習させた予測子変数の順序と同じでなければなりません。

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

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

出力

すべて展開する

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

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

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

データ型: single | double | half | 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[学習済み機械学習モデルを選択] で指定された SVM モデルです。svmMdlClassNames プロパティは、陰性および陽性のクラス名をチェックするために使用できます。

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

依存関係

この端子を有効にするには、[ブロック パラメーター] ダイアログ ボックスの [メイン] タブで [予測済みクラス スコア用の出力端子を追加] のチェック ボックスをオンにします。

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

パラメーター

すべて展開する

メイン

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

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

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

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

  • 名前と値の引数 KernelFunction の値は 'gaussian' ('rbf' と同じであり、1 クラス学習の場合の既定値)、'linear' (2 クラス学習の場合の既定値) または '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 のようにデータ型オブジェクトとして表現できます。

サポートされるデータ型は、[学習済み機械学習モデルを選択] で指定されたモデルで使用されるラベルによって異なります。

  • モデルで数値ラベルまたは logical ラベルが使用される場合、サポートされるデータ型は [Inherit: Inherit via back propagation] (既定)、doublesinglehalfint8uint8int16uint16int32uint32int64uint64boolean、固定小数点およびデータ型オブジェクトです。

  • モデルで非数値ラベルが使用される場合、サポートされるデータ型は [Inherit: auto] (既定)、Enum: <class name> およびデータ型オブジェクトです。

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

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

  • Inherit: auto (非数値ラベルの場合の既定値) — ブロックは自動定義された列挙データ型変数を使用します。たとえば、[学習済み機械学習モデルを選択] で指定されたワークスペース変数名が myMdl で、クラス ラベルが class 1 および class 2 であるとします。この場合、対応する label の値は myMdl_enumLabels.class_1 および myMdl_enumLabels.class_2 になります。ブロックは、関数 matlab.lang.makeValidName を使用して、クラス ラベルを有効な MATLAB 識別子に変換します。

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

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

プログラムでの使用

ブロック パラメーター: LabelDataTypeStr
: 文字ベクトル
: "Inherit: Inherit via back propagation" | "Inherit: auto" | "double" | "single" | "half" | "int8" | "uint8" | "int16" | "uint16" | "int32" | "uint32" | "int64" | "uint64" | "boolean" | "fixdt(1,16,0)" | "fixdt(1,16,2^0,0)" | "Enum: <class name>" | "<data type expression>"
既定の設定: "Inherit: Inherit via back propagation" (数値ラベルと logical ラベルの場合) | "Inherit: auto" (非数値ラベルの場合)

Simulink がチェックする label 出力範囲の下限値を指定します。

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

メモ

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

依存関係

このパラメーターを指定できるのは、[学習済み機械学習モデルを選択] で指定されたモデルで数値ラベルが使用される場合だけです。

プログラムでの使用

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

Simulink がチェックする label 出力範囲の上限値を指定します。

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

メモ

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

依存関係

このパラメーターを指定できるのは、[学習済み機械学習モデルを選択] で指定されたモデルで数値ラベルが使用される場合だけです。

プログラムでの使用

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

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

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

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

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

プログラムでの使用

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

Simulink がチェックする score 出力範囲の下限値を指定します。

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

メモ

[スコアのデータ型、最小値] パラメーターが、score の実際の出力を飽和させたり、クリップしたりすることはありません。これを行うには、代わりに Saturation (Simulink) ブロックを使用してください。

プログラムでの使用

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

Simulink がチェックする score 出力範囲の上限値を指定します。

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

メモ

[スコアのデータ型、最大値] パラメーターが、score の実際の出力を飽和させたり、クリップしたりすることはありません。これを行うには、代わりに Saturation (Simulink) ブロックを使用してください。

プログラムでの使用

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

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

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

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

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

依存関係

このパラメーターを指定できるのは、[学習済み機械学習モデルを選択] で指定されたモデルで "none" (既定の設定で、"identity" と同じ) 以外のスコア変換が使用される場合だけです。

  • モデルでスコア変換が使用されない ("none" または "identity") 場合は、[スコアのデータ型] を使用してスコアのデータ型を指定できます。

  • モデルで "none" または "identity" 以外のスコア変換が使用される場合は、このパラメーターを使用して未変換の生スコアのデータ型を指定できます。変換されたスコアのデータ型を指定するには、[スコアのデータ型] を使用します。

スコア変換オプションを変更するには、学習時に名前と値の引数 ScoreTransform を指定するか、学習後に ScoreTransform プロパティを変更します。

プログラムでの使用

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

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

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

メモ

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

プログラムでの使用

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

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

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

メモ

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

プログラムでの使用

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

カーネル計算用のパラメーターのデータ型を指定します。型は直接指定するか、Simulink.NumericType のようにデータ型オブジェクトとして表現できます。

[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)を参照してください。

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

プログラムでの使用

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

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

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

メモ

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

プログラムでの使用

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

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

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

メモ

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

プログラムでの使用

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

ブロックの特性

データ型

Boolean | double | enumerated | fixed point | half | integer | single

直達

yes

多次元信号

no

可変サイズの信号

no

ゼロクロッシング検出

no

詳細

すべて展開する

ヒント

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

代替機能

MATLAB Function ブロックを SVM 分類オブジェクト (ClassificationSVM または CompactClassificationSVM) のオブジェクト関数 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 で導入

すべて展開する