主要内容

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

ExhaustiveSearcher

网罗的最近傍探索モデルの作成

説明

ExhaustiveSearcherモデルオブジェクトには,网罗的最近傍探索の学习データ,距离计量,および距离计量のパラメーター値が格纳されます。网罗的探索アルゴリズムでは,学习データに含まれているÑ个の観测値すべてについて,各クエリ観测値からの距离を求めます。距离は,正行ķ列の数値行列になります。

ExhaustiveSearcherモデルオブジェクトを作成したら,knnsearchによる最近傍探索またはrangesearchによる半径探索を実行して,クエリデータに対する学習データの近傍点を探索します。網羅的探索アルゴリズムは,Kが大きい場合(K > 10)にKd木アルゴリズムより効率的です。また,距離計量の選択に関してKd木アルゴリズムより柔軟です。また,ExhaustiveSearcherモデルオブジェクトはスパースなデータにも対応しています。

作成

関数creatensまたは关数ExhaustiveSearcher(ここで说明)を使用して,ExhaustiveSearcherオブジェクトを作成します。どちらの関数も同じ構文を使用しますが,関数creatensには名前と値のペアの引数'NSMethod'があります。これは,最近傍探索法を選択するために使用されます。関数creatensKDTreeSearcherオブジェクトも作成します。ExhaustiveSearcherオブジェクトを作成するには“NSMethod”、“详尽”を指定します。K > 10であるか,学習データがスパースであるか,距離計量がユークリッド,市街地,チェビシェフ,ミンコフスキーのいずれでもない場合,既定値は“详尽”です。

説明

Mdl= ExhaustiveSearcher (Xは,学習データ(X)のÑ行ķ列の数値行列を使用して,网罗的最近傍探索オブジェクト(Mdl)を作成します。

Mdl= ExhaustiveSearcher (X名称,值では1つ以上の名前と値のペアの引数を使用して追加オプションを指定します。距離計量を指定し,距離計量のパラメーター(DistParameterプロパティ)を設定できます。たとえば,ExhaustiveSearcher(X, '距离', '切比雪夫')はチェビシェフ距离を使用する网罗的最近傍探索オブジェクトを作成します。DistParameterを指定するには,名前と値のペアの引数Pまたは规模を使用します。

入力引数

すべて展开する

网罗的探索アルゴリズムを准备する学习データ。数値行列を指定します。Xには,それぞれが観测値(インスタンスまたは事例)に対応するÑ个の行と,それぞれが予测子(特徴量)に対応するķ个の列を含めます。

データ型:单身的|双倍的

名前と値のペアの引数

オプションの名称,值引数のコンマ区切りペアを指定します。姓名は引数名で,价值は対応する値です。姓名は引用符で囲まなければなりません。名1,值1,...,NameN,值Nのように,複数の名前と値のペアの引数を,任意の順番で指定できます。

例:“距离”、“mahalanobis’,‘x’,眼睛(3)は,最近傍を探索するときにマハラノビス距离を使用し,マハラノビス距离计量の共分散行列に3行3列の単位行列を使用するよう指定します。

以後のクエリ点について最近傍を探索するためにknnsearchまたはrangesearchを呼び出すときに使用する距離計量。“距离”と文字ベクトル,弦スカラーまたは関数ハンドルから構成されるコンマ区切りのペアとして指定します。

文字ベクトルまたは字符串スカラーとして指定される距離計量を次の表で説明します。

説明
“chebychev” チェビシェフ距离(最大座标差)。
“cityblock” 市街地距離。
'相关性' 1から,一连の値として扱われる観测间の标本线形相关系数を引きます。
的余弦 (行ベクトルとして扱われる)観測値間の夾角の余弦を1から減算します。
“欧几里得” ユークリッド距离。
“汉明” 异なる座标の比率を示すハミング距离。
“捷卡” 1から,ジャカード係数(異なる非ゼロ座標の比率)を引いた値。
闵可夫斯基的 ミンコフスキー距離。既定の指数は2です。別の指数を指定するには,“P”名前と値のペアの引数を使用します。
“马氏 正定値共分散行列を使用して计算されるマハラノビス距离。共分散行列の値を変更するには,名前と値のペアの引数“冠状病毒”を使用します。
“seuclidean” 标准化されたユークリッド距离。Mdl。Xの行とクエリ行列の行の間の各座標差は,Mdl。Xから计算される,対応する标准偏差の要素で除算することによりスケーリングされます。他のスケーリングを指定するには,名前と値のペアの引数“规模”を使用します。
“枪兵” 1から,観测値间の标本スピアマンの顺位相关(値の系列として扱われる)を引いた値。

详细は,距离计量を参照してください。

@distfunのようにを使用すると,カスタム距離計量用の関数ハンドルを指定できます。カスタムな距離関数は,次のようになっていなければなりません。

  • 函数D2 = distfun(ZI, ZJ)という形式になっている。

  • 次の引数を受け入れる。

    • Xまたはクエリ点Yの1行が含まれている1行K列のベクトルZI.KはXの列数です。

    • XまたはYの複数行が含まれているm行K列の行列ZJ.。mは正の整数です。

  • m行1列の距離のベクトルD2を返す。D2 (jは,観测値ZIZJ(j:)の间の距离です。

ExhaustiveSearcherモデルオブジェクトの作成には距离计量が使用されないので,オブジェクトの作成后にドット表记を使用して距离计量を変更できます。

例:“距离”,“马氏

マハラノビス距離計量の共分散行列。“冠状病毒”とķ行ķ列の正定値行列から构成されるコンマ区切りのペアとして指定します.KはXの列数です。この引数は,“距离”“马氏である場合のみ有効です。

例:'冠状病毒',眼睛(3)

データ型:单身的|双倍的

ミンコフスキー距离计量の指数。“P”と正のスカラー値をコンマで区切って指定します。この引数は,“距离”闵可夫斯基的である場合のみ有効です。

例:“P”3

データ型:单身的|双倍的

标准化されたユークリッド距离计量のスケールパラメーター値。“规模”と长さķの非负の数値ベクトルから构成されるコンマ区切りのペアとして指定します.KはXの列数です。学习データとクエリデータの间の距离は,対応する规模の要素を使用してスケーリングされます。この引数は,“距离”“seuclidean”である場合のみ有効です。

例:“规模”,分位数(0.75 X)——分位数(0.25 X))

データ型:单身的|双倍的

プロパティ

すべて展开する

このプロパティは読み取り専用です。

网罗的探索アルゴリズムを准备する学习データ。数値行列を指定します。Xには,それぞれが観测値(インスタンスまたは事例)に対応するÑ个の行と,それぞれが予测子(特徴量)に対応するķ个の列を含めます。

このプロパティの設定は,creatensまたはExhaustiveSearcherの入力引数Xで行います。

データ型:单身的|双倍的

以後のクエリ点について最近傍を探索するためにknnsearchまたはrangesearchを呼び出すときに使用する距離計量。文字ベクトルまたは串スカラー(“chebychev”“cityblock”'相关性'的余弦“欧几里得”“汉明”“捷卡”闵可夫斯基的“马氏“seuclidean”“枪兵”),または关数ハンドルを指定します。

このプロパティの設定は,creatensまたはExhaustiveSearcherの名前と値のペアの引数“距离”で行います。

距離計量はExhaustiveSearcherモデルオブジェクトの作成に使用されないので,ドット表記を使用して変更できます。

距离计量のパラメーター値。空([])または正のスカラーを指定します。

サポートされる距離計量の距離パラメーターを次の表で説明します。

距离计量 パラメーターの说明
“马氏

マハラノビス距離の計算に使用する共分散行列を表す正定値行列。既定では,浸(Mdl.X omitrows)を使用して共分散が设定されます。

このプロパティの設定は,creatensまたはExhaustiveSearcherの名前と値のペアの引数“冠状病毒”で行います。

Mdl.DistParameter= CovNewのようにドット表記を使用してDistParameterを変更できます。CovNewはķ行ķ列の正定数値行列です。

闵可夫斯基的

ミンコフスキー距離の指数を表す正のスカラー。既定の指数は2です。

このプロパティの設定は,creatensまたはExhaustiveSearcherの名前と値のペアの引数“P”で行います。

Mdl.DistParameter= PNewのようにドット表記を使用してDistParameterを変更できます。PNEWは正のスカラーです。

“seuclidean”

標準化されたユークリッド距離を計算するときに予測子のスケーリングに使用する値を表す正の数値ベクトル。既定の設定では,次の処理が行われます。

  1. 规模=性病(Mdl.X omitnan)を使用してXの各予测子(列)の标准偏差を推定する。

  2. 対応する规模の要素で除算して,Xとクエリ行列の行间の座标差をスケーリングする。

このプロパティの設定は,creatensまたはExhaustiveSearcherの名前と値のペアの引数“规模”で行います。

Mdl.DistParameter = sNewのようにドット表記を使用してDistParameterを変更できます。sNewはK次元の正の数値ベクトルです。

Mdl。距离がこの表に记载されているパラメーターのいずれにも该当しない场合,Mdl.DistParameter[]にします。これは,指定した距離計量の式にパラメーターがないことを意味します。

データ型:单身的|双倍的

オブジェクト関数

knnsearch 探索モデルオブジェクトを使用してķ最近傍を探索
rangesearch 探索モデルオブジェクトを使用して指定距离内の近傍をすべて探索

すべて折りたたむ

フィッシャーのアヤメのデータセットを読み込みます。

负载fisheririsX = MEAS;[N,K] =尺寸(X)
n = 150
k = 4

X150年には個の観測値と4つの予測子があります。

データセット全体を学習データとして使用して,網羅的最近傍探索モデルを準備します。

Mdl1 = ExhaustiveSearcher(X)
Mdl1 = exptivesearcher with properties: Distance: 'euclidean' DistParameter: [] X: [150x4 double]

Mdl1ExhaustiveSearcherモデルオブジェクトで,プロパティがコマンドウィンドウに表示されます。このオブジェクトには,距离计量など,学习済みアルゴリズムに关する情报が格纳されています。プロパティの値は,ドット表记を使用して変更できます。

または,creatensを使用し,探索法として“详尽”を指定することによっても,網羅的最近傍探索モデルを準備できます。

MDL2 = createns(X,'NSMethod'“详尽”
Mdl2 = exptivesearcher with properties: Distance: 'euclidean' DistParameter: [] X: [150x4 double]

Mdl2ExhaustiveSearcherモデルオブジェクトでもあり,Mdl1と等価です。

一连のクエリデータに対する最近傍をXから探索するには,ExhaustiveSearcherモデルオブジェクトとクエリデータをknnsearchまたはrangesearchに渡します。

フィッシャーのアヤメのデータセットを読み込みます。花弁の寸法に焦点を当てます。

负载fisheririsX = meas(:,[3 4]);%预测因素

網羅的最近傍探索モデルを準備します。マハラノビス距離計量を指定します。

Mdl = createns (X,“距离”“马氏
Mdl = exptivesearcher with properties: Distance: 'mahalanobis' DistParameter: [2x2 double] X: [150x2 double]

距離計量がマハラノビスであるため,creatensは既定ではExhaustiveSearcherモデルオブジェクトを作成します。

ドット表记を使用してMdlのプロパティにアクセスします。たとえば,マハラノビス共分散パラメーターにアクセスするには、Mdl.DistParameterを使用します。

Mdl.DistParameter
ans =2×23.1163 1.2956 1.2956 0.5810

クエリデータとMdlは,次の关数に渡すことができます。

  • 最近傍のインデックスと距离を求めるためのknnsearch

  • 指定距離内にある最近傍のインデックスをすべて求めるためのrangesearch

ドット表記を使用して,ExhaustiveSearcherモデルオブジェクトを作成し,距离プロパティを変更します。

フィッシャーのアヤメのデータセットを読み込みます。

负载fisheririsX = MEAS;

データセット全体を学習データとして使用して,既定の網羅的探索アルゴリズムを学習させます。

MDL = ExhaustiveSearcher(X)
MDL = ExhaustiveSearcher具有属性:距离: '欧几里得' DistParameter:[] X:[150x4双]

近傍探索モデルでマハラノビス尺度を使用して学習データとクエリデータの間の距離を計算するように指定します。

Mdl。距离=“马氏
MDL = ExhaustiveSearcher具有属性:距离:“马氏DistParameter:[4×4双] X:[150x4双]

Mdlとクエリデータをknnsearchまたはrangesearchのいずれかに渡すと,マハラノビス距離に基づいてクエリデータ内の点に対する最近傍を求めることができます。

関数creatensを使用して,网罗的探索モデルオブジェクトを作成します。k最近傍を探索するため,オブジェクトとクエリデータを関数knnsearchに渡します。

フィッシャーのアヤメのデータセットを読み込みます。

负载fisheriris

クエリセットとして使用するため,5つのアヤメのデータを无作为に予测子データから抽出します。

RNG('默认');%用于重现1) n =大小(量;%样本大小qIdx = randsample (n, 5);%查询数据索引X =量(~ ismember (1: n, qIdx):);: Y =量(qIdx);

学習データを使用して網羅的最近傍探索モデルを準備します。最近傍の探索にマハラノビス距離を指定します。

Mdl = createns (X,“距离”“马氏
Mdl = exptivesearcher with properties: Distance: 'mahalanobis' DistParameter: [4x4 double] X: [145x4 double]

距離計量がマハラノビスであるため,creatensは既定ではExhaustiveSearcherモデルオブジェクトを作成します。

マハラノビス距離の計算には,学習データ内の予測子(列)の共分散行列が使用されます。この値を表示するには,Mdl.DistParameterを使用します。

Mdl.DistParameter
ans =4×40.6547 -0.0368 1.2320 0.5026 -0.0368 0.1914 -0.3227 -0.1193 1.2320 -0.3227 3.0671 1.2842 0.5026 -0.1193 1.2842 0.5800

求める学習データ(Mdl。X)のインデックスは,クエリデータ(Y2)の各点におけるつの最近傍です。

IdxNN = knnsearch (Mdl Y'K',2)
IdxNN =5×25 6 98 95 104 128 135 65 102 115

IdxNNの各行は,クエリデータの観测値に対応します。列の顺序は,距离の升顺で并べ替えた最近傍の顺序に対応します。たとえば,マハラノビス距离に基づくと,Y (3:)の2番目の最近傍はX(128年:)になります。

拡张机能

R2010aで導入