メインコンテンツ

KNN Search

探索モデル オブジェクトを使用して k 最近傍を探索

R2023b 以降

  • KNN Search Block Icon

ライブラリ:
Statistics and Machine Learning Toolbox / Neighborhood Searcher

説明

KNN Search ブロックは、最近傍探索モデル オブジェクト (ExhaustiveSearcher または KDTreeSearcher) を使用して、クエリ点に対する最近傍をデータ内で探索します。

オブジェクトを含むワークスペース変数の名前を指定することにより、観測データを含む学習済みの探索モデル オブジェクトをブロックにインポートします。入力端子 x でクエリ点を受け取り、出力端子 Idx でデータ内の k 最近傍点のインデックスを返します。オプションの出力端子 D は、クエリ点と最近傍点の間の距離を返します。

端子

入力

すべて展開する

クエリ点。行ベクトルとして指定します。x の列数は、[最近傍探索モデルの選択] で指定される searcher オブジェクト内の予測子変数の数と同じでなければなりません。x の列の順序は searcher オブジェクトと同じでなければなりません。

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

出力

すべて展開する

データ内の最近傍のインデックス。数値行ベクトルまたは 1 行 1 列の cell 配列として返されます。

  • [ブロック パラメーター] ダイアログ ボックスの [メイン] タブで [同順位を含める] を選択していない場合、ブロックは 1 行 k 列の数値行ベクトルを返します。ここで、k は探索対象の最近傍の数です。行ベクトルの各列に、データ内の最近傍点のインデックスが格納されます。インデックスはクエリ点 x までの距離の昇順になります。

  • [ブロック パラメーター] ダイアログ ボックスの [メイン] タブで [同順位を含める] を選択している場合、ブロックは 1 行 1 列の cell 配列を可変サイズの信号として返します。この配列に、クエリ点 x に最も近いデータ内の観測値のインデックスを少なくとも k 個含む数値行ベクトルが格納されます。ベクトルの列はクエリ点までの距離の昇順になります。

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

クエリ点に対する最近傍の距離。数値行ベクトルまたは 1 行 1 列の cell 配列として返されます。

  • [ブロック パラメーター] ダイアログ ボックスの [メイン] タブで [同順位を含める] を選択していない場合、ブロックは 1 行 k 列の数値行ベクトルを返します。ここで、k は探索対象の最近傍の数です。行ベクトルの各列に、データ内の最近傍点からクエリ点 x までの距離計量による距離が格納されます。行ベクトルの列はクエリ点までの距離の昇順になります。

  • [ブロック パラメーター] ダイアログ ボックスの [メイン] タブで [同順位を含める] を選択している場合、ブロックは 1 行 1 列の cell 配列を可変サイズの信号として返します。この配列に、クエリ点 x に最も近いデータ内の観測値の距離を少なくとも k 個含む数値行ベクトルが格納されます。ベクトルの列はクエリ点までの距離の昇順になります。

依存関係

この端子を有効にするには、KNN Search ブロックで [最近傍距離の出力端子を追加する] を選択します。

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

パラメーター

すべて展開する

メイン

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

メモ

[ブロック パラメーター] ダイアログ ボックスで指定できるすべてのパラメーターに既定の設定が使用されます。ダイアログ ボックスのパラメーターは探索モデル オブジェクトの内容をオーバーライドします。

プログラムでの使用

ブロック パラメーター: NeighborhoodSearcher
型: ワークスペース変数
値: ExhaustiveSearcher オブジェクト | KDTreeSearcher オブジェクト
既定の設定: "searcher"

チェック ボックスをオンにすると、KNN Search ブロックに 2 番目の出力端子 D が追加されます。

プログラムでの使用

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

クエリ点についてデータ内で探索する最近傍の数を指定します。

プログラムでの使用

ブロック パラメーター: NumNeighbors
型: 正の整数
値: single | double
既定の設定: 1

[ブロック パラメーター] ダイアログ ボックスの [メイン] タブで [同順位を含める] を選択しない場合、ブロックはクエリ点から同じ距離にある観測値の中でインデックスが最も小さいものを選択します。

[同順位を含める] を選択すると次のようになります。

  • ブロックは、k 番目に短い距離と等しい距離をもつすべての最近傍を出力引数に含めます。k 番目に短い距離と等しい距離をもつ最近傍が 5 つを超える場合は、インデックスが最も小さいものから最初の 5 つの最近傍のみがブロック出力に含まれます。

  • ブロック出力の IdxD は 1 行 1 列の cell 配列になり、それぞれ少なくとも k 個のインデックスと距離のベクトルが各 cell に格納されます。ベクトルの列はクエリ点までの距離の昇順になります。

プログラムでの使用

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

クエリ点に対するデータ内での最近傍の探索に使用する距離計量を指定します。

ExhaustiveSearcher オブジェクトと KDTreeSearcher オブジェクトの両方について、ブロックは次の距離計量をサポートします。

説明
"chebychev"チェビシェフ距離 (最大座標差)
"cityblock"市街地距離
"euclidean"ユークリッド距離
"minkowski"ミンコフスキー距離。既定の指数は 2 です。別の指数を [ブロック パラメーター] ダイアログ ボックスで指定できます。

ExhaustiveSearcher オブジェクトについては、ブロックは次の距離計量もサポートします。

説明
"correlation"1 から、観測値間の標本線形相関を減算 (値の系列として処理)
"cosine"(行ベクトルとして扱われる) 観測値間の夾角の余弦を 1 から減算
"hamming"ハミング距離 (異なる座標の比率)
"jaccard"1 からジャカード係数 (異なる非ゼロ座標の比率) を減算
"mahalanobis"正定値共分散行列を使用して計算されるマハラノビス距離。既定では、ブロックは searcher オブジェクトのデータから共分散行列を計算します。カスタマイズした共分散行列を [ブロック パラメーター] ダイアログ ボックスで指定できます。
"seuclidean"標準化されたユークリッド距離。クエリ点 x とデータの間の各座標差は、データから算出される標準偏差の対応する要素で除算することによりスケーリングされます。別のスケーリング方法を [ブロック パラメーター] ダイアログ ボックスで指定できます。
"spearman"1 から観測値間の標本スピアマン順位相関係数を減算 (値の系列として処理)

メモ

  • 距離計量の設定は、指定された searcher オブジェクトの Distance プロパティをオーバーライドします。

  • KNN Search ブロックは、"fasteuclidean" または "fastseuclidean" の距離計量はサポートしていません (距離計量を参照)。

プログラムでの使用

ブロック パラメーター: DistanceMetric
型: 文字ベクトル
値: "euclidean" | "chebychev" | "cityblock" | "minkowski" | "correlation" | "cosine" | "hamming" | "jaccard" | "mahalanobis" | "seuclidean" | "spearman"
既定の設定: "euclidean"

既定では、ブロックは searcher オブジェクトのデータから共分散行列を計算します。[Customized] を選択して [カスタマイズされた行列] ボックスに正定値行列を入力することで、カスタマイズした共分散行列を指定できます。

メモ

この設定は、指定された searcher オブジェクトの DistParameter プロパティをオーバーライドします。

プログラムでの使用

ブロック パラメーター: CovarianceMatrix
型: 正定値行列
値: "Computed using data in searcher" | "Customized"
既定の設定: "Computed using data in searcher"

依存関係

このパラメーターを有効にするには、[距離計量]"mahalanobis" に設定します。

既定では、ブロックは searcher オブジェクトのデータからスケール パラメーター値を計算します。[Customized] を選択して [カスタマイズされたスケール] テキスト ボックスに非負の数値行ベクトルを入力することで、カスタマイズしたスケール パラメーター値を指定できます。行ベクトルの列数は、searcher オブジェクト内の予測子変数の数と同じでなければなりません。標準化されたユークリッド距離をブロックで計算するときに、データの各座標とクエリ点が Scale の対応する要素によってスケーリングされます。

メモ

この設定は、指定された searcher オブジェクトの DistParameter プロパティをオーバーライドします。

プログラムでの使用

ブロック パラメーター: Scale
型: 非負の数値行ベクトル
値: "Standard deviation of data in searcher" | "Customized"
既定の設定: "Standard deviation of data in searcher"

依存関係

このパラメーターを有効にするには、[距離計量]"seuclidean" に設定します。

ミンコフスキー距離計量の指数を指定します。P = 2 という既定のケースでは、ミンコフスキー距離はユークリッド距離を与えます。P = 1 という特殊なケースでは、ミンコフスキー距離は市街地距離を与えます。P = ∞ という特殊なケースでは、ミンコフスキー距離はチェビシェフ距離を与えます。

メモ

この設定は、指定された searcher オブジェクトの DistParameter プロパティをオーバーライドします。

プログラムでの使用

ブロック パラメーター: MinkExp
型: 正の整数
値: positive integer
既定の設定: 2

依存関係

このパラメーターを有効にするには、[距離計量]"minkowski" に設定します。

データ型

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

固定小数点演算の丸めモードを指定します。詳細は、丸めモード (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"

データ型

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

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

プログラムでの使用

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

Simulink® がチェックする Idx 出力範囲の最小値を指定します。

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

メモ

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

プログラムでの使用

ブロック パラメーター: IndicesOutMin
: スカラー
: "[]" | スカラー
既定の設定: "[]"

Simulink がチェックする Idx 出力範囲の最大値を指定します。

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

メモ

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

プログラムでの使用

ブロック パラメーター: IndicesOutMax
: スカラー
: "[]" | スカラー
既定の設定: "[]"

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

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

プログラムでの使用

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

メモ

スピアマン距離計量に対しては、固定小数点データ型はサポートされません。

依存関係

このパラメーターを有効にするには、[ブロック パラメーター] ダイアログ ボックスの [メイン] タブで [最近傍距離の出力端子を追加する] を選択します。

Simulink がチェックする距離 (D) 出力範囲の最小値を指定します。

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

メモ

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

プログラムでの使用

ブロック パラメーター: DistanceOutMin
: スカラー
: "[]" | スカラー
既定の設定: "[]"

依存関係

このパラメーターを有効にするには、[ブロック パラメーター] ダイアログ ボックスの [メイン] タブで [最近傍距離の出力端子を追加する] を選択します。

Simulink がチェックする距離 (D) 出力範囲の最大値を指定します。

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

メモ

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

プログラムでの使用

ブロック パラメーター: DistanceOutMax
: スカラー
: "[]" | スカラー
既定の設定: "[]"

依存関係

このパラメーターを有効にするには、[ブロック パラメーター] ダイアログ ボックスの [メイン] タブで [最近傍距離の出力端子を追加する] を選択します。

ブロックの特性

データ型

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

直達

yes

多次元信号

no

可変サイズの信号

yes

ゼロクロッシング検出

no

詳細

すべて展開する

代替機能

MATLAB Function ブロックを最近傍探索モデル オブジェクト (ExhaustiveSearcher または KDTreeSearcher) の knnsearch オブジェクト関数と共に使用できます。たとえば、MATLAB Function ブロックの使用によるクラス ラベルの予測を参照してください。

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

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

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

拡張機能

すべて展開する

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

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

バージョン履歴

R2023b で導入