Main Content

templateKNN

k 最近傍分類器テンプレート

説明

t = templateKNN() は学習アンサンブルあるいは ECOC (誤り訂正出力符号) マルチクラス モデルの学習に適した KNN (k 最近傍) 学習テンプレートを返します。

既定のテンプレートを指定する場合、学習中のすべての入力引数には既定値が使用されます。

tfitcensemble または fitcecoc の学習器として指定します。

t = templateKNN(Name,Value) は、1 つ以上の名前と値のペアの引数で指定された追加オプションによりテンプレートを作成します。

たとえば、最近傍探索の方法、検索する最近傍点の数、距離計量などを指定できます。

コマンド ウィンドウに t を表示する場合、すべてのオプションは、名前と値のペア引数を使用して指定する場合を除き、空 ([]) で表示されます。学習中、空のオプションに既定値が使用されます。

すべて折りたたむ

関数 fitcensemble で使用するために、既定の設定以外の k 最近傍テンプレートを作成します。

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

load fisheriris

5 つの最近傍探索のテンプレートを作成し、予測子の標準化を指定をします。

t = templateKNN('NumNeighbors',5,'Standardize',1)
t = 
Fit template for classification KNN.

       NumNeighbors: 5
           NSMethod: ''
           Distance: ''
         BucketSize: ''
        IncludeTies: []
     DistanceWeight: []
          BreakTies: []
           Exponent: []
                Cov: []
              Scale: []
    StandardizeData: 1
            Version: 1
             Method: 'KNN'
               Type: 'classification'

NumNeighborsMethodStandardizeData および Type を除き、テンプレート オブジェクトのすべてのプロパティは空です。t を学習器として指定する場合、空のプロパティはそれぞれの既定値で入力されます。

t をアンサンブル分類の弱学習器として指定します。

Mdl = fitcensemble(meas,species,'Method','Subspace','Learners',t);

標本内 (再代入) 誤分類誤差を表示します。

L = resubLoss(Mdl)
L = 0.0600

関数 fitcecoc で使用するために、既定の設定以外の k 最近傍テンプレートを作成します。

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

load fisheriris

5 つの最近傍探索のテンプレートを作成し、予測子の標準化を指定をします。

t = templateKNN('NumNeighbors',5,'Standardize',1)
t = 
Fit template for classification KNN.

       NumNeighbors: 5
           NSMethod: ''
           Distance: ''
         BucketSize: ''
        IncludeTies: []
     DistanceWeight: []
          BreakTies: []
           Exponent: []
                Cov: []
              Scale: []
    StandardizeData: 1
            Version: 1
             Method: 'KNN'
               Type: 'classification'

NumNeighborsMethodStandardizeData および Type を除き、テンプレート オブジェクトのすべてのプロパティは空です。t を学習器として指定する場合、空のプロパティはそれぞれの既定値で入力されます。

t を ECOC マルチクラス モデルのバイナリ学習器として指定します。

Mdl = fitcecoc(meas,species,'Learners',t);

既定の設定では、Mdl は、1 対 1 の符号化設計を使用の学習が実行されます。

標本内 (再代入) 誤分類誤差を表示します。

L = resubLoss(Mdl,'LossFun','classiferror')
L = 0.0467

入力引数

すべて折りたたむ

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: 'NumNeighbors',4,'Distance','minkowski' は、ミンコフスキー距離計量を使用して、4 最近傍分類器テンプレートを指定します。

複数のクラスで最小コストが同じである場合に predict メソッドで使用されるタイブレーク アルゴリズム。'BreakTies' と以下のいずれかで構成されるコンマ区切りのペアとして指定します。

  • 'smallest' — 同順位グループの中で最小インデックスを使用します。

  • 'nearest' — 同順位グループの中で最近傍のあるクラスを使用します。

  • 'random' — 同順位グループの中でランダムなタイブレーカーを使用します。

既定では、同順位は k 最近傍の中で同じ数の最近傍点を複数のクラスがもつときに発生します。

例: 'BreakTies','nearest'

Kd 木の葉ノードにおけるデータ点の最大数。'BucketSize' と正の整数値で構成されるコンマ区切りのペアとして指定します。この引数は、NSMethod'kdtree' の場合にのみ意味があります。

例: 'BucketSize',40

データ型: single | double

共分散行列。'Cov' と、マハラノビス距離の計算時の共分散行列を表すスカラー値の正定値行列で構成される、コンマ区切りのペアとして指定します。この引数は、'Distance''mahalanobis' の場合にのみ有効です。

'Standardize' および 'Scale' または 'Cov' のいずれかを同時に指定できません。

データ型: single | double

距離計量。'Distance' と有効な距離計量名または関数ハンドルから構成されるコンマ区切りのペアとして指定します。使用できる距離計量名は、近傍探索法の選択 (NSMethod を参照) によって決まります。

NSMethod距離計量名
exhaustiveExhaustiveSearcher の任意の距離計量
kdtree'cityblock''chebychev''euclidean'、または 'minkowski'

このテーブルには、ExhaustiveSearcher の有効な距離計量が含まれます。

距離計量名説明
'cityblock'市街地距離。
'chebychev'チェビシェフ距離 (最大座標差)。
'correlation'1 から、一連の値として扱われる観測間の標本線形相関係数を引きます。
'cosine'1 から、ベクトルとして扱われる観測間の夾角の余弦を引きます。
'euclidean'ユークリッド距離。
'hamming'異なる座標のパーセンテージとなるハミング距離。
'jaccard'1 から、ジャカード係数 (異なる非ゼロ座標の比率) を引いた値。
'mahalanobis'正定値共分散行列 C を使用して計算される、マハラノビス距離。C の既定値は X の標本共分散行列であり、cov(X,'omitrows') によって計算されます。C に別の値を指定するには、'Cov' 名前と値のペアの引数を使用します。
'minkowski'ミンコフスキー距離。既定の指数は 2 です。別の指数を指定するには、'Exponent' 名前と値のペアの引数を使用します。
'seuclidean'標準化されたユークリッド距離。X と各クエリ点の間の各座標差分がスケーリングされます。つまり、スケール値 S で除算されます。S の既定値は X から計算される標準偏差で、S = std(X,'omitnan') です。S に別の値を指定するには、Scale 名前と値のペアの引数を使用します。
'spearman'1 から、観測値間の標本スピアマンの順位相関 (値の系列として扱われる) を引いた値。
@distfun

距離関数ハンドル。distfun は次の形式です

function D2 = distfun(ZI,ZJ)
% calculation of  distance
...
ここで、

  • ZI は 1 行の X または Y を含む 1N 列のベクトルです。

  • ZJ は複数行の X または Y を含む M2N 列の行列です。

  • D2M21 列の距離のベクトルであり、D2(k) は観測値 ZIZJ(k,:) の間の距離です。

CategoricalPredictors'all' に指定した場合、既定の距離計量は 'hamming' となります。それ以外の場合は、既定の距離計量は 'euclidean' です。

ドット表記を使用して Distance を変更します。mdl.Distance = newDistance

NSMethod'kdtree' である場合、ドット表記を使用して Distance を変更できる距離計量は、'cityblock''chebychev''euclidean' および 'minkowski' のみです。

定義については距離計量を参照してください。

例: 'Distance','minkowski'

データ型: char | string | function_handle

距離重み付け関数。'DistanceWeight' と関数ハンドルまたは次の表のいずれかの値から構成されるコンマ区切りのペアとして指定します。

説明
'equal'重み付けなし
'inverse'重みは 1/距離です
'squaredinverse'重みは 1/距離2 です
@fcnfcn は、非負の距離の行列を受け入れる関数であり、非負の距離重み付けを含む同じサイズの行列を返します。たとえば、'squaredinverse'@(d)d.^(-2) と同じです。

例: 'DistanceWeight','inverse'

データ型: char | string | function_handle

ミンコフスキー距離指数。'Exponent' と正のスカラー値で構成されるコンマ区切りのペアとして指定します。この引数は、'Distance''minkowski' の場合にのみ有効です。

例: 'Exponent',3

データ型: single | double

同順位使用フラグ。'IncludeTies' と、距離の値が k 番目に小さい距離と等しい近傍点をすべて predict に含めるかどうかを表す論理値で構成される、コンマ区切りのペアとして指定します。IncludeTiestrue の場合、predict はすべての近傍点を含みます。それ以外の場合、predict は正確に k の近傍点を使用します。

例: 'IncludeTies',true

データ型: logical

最近傍探索法。'NSMethod''exhaustive' または 'kdtree' で構成されるコンマ区切りのペアとして指定します。

  • 'kdtree'Kd 木を作成および使用して最近傍を探索します。'kdtree' は距離計量が次のいずれかである場合に有効です。

    • 'euclidean'

    • 'cityblock'

    • 'minkowski'

    • 'chebychev'

  • 'exhaustive' — 網羅的探索アルゴリズムを使用します。新しい点 xnew のクラスを予測するときに、X 内のすべての点から xnew までの距離を計算して最近傍を探索します。

既定値は、X の列数が 10 以下で、X がスパースでないか gpuArray で、距離計量が 'kdtree' 型の場合は 'kdtree'、それ以外の場合は 'exhaustive' です。

例: 'NSMethod','exhaustive'

予測時に各点を分類するために検出する X の最近傍の数。'NumNeighbors' と正の整数値で構成されるコンマ区切りのペアとして指定します。

例: 'NumNeighbors',3

データ型: single | double

距離スケール。'Scale' と、X の列数と同じ長さの非負のスカラー値を含むベクトルで構成される、コンマ区切りのペアとして指定します。X とクエリ点の間の各座標差分は、Scale の対応する要素でスケーリングされます。この引数は、'Distance''seuclidean' の場合にのみ有効です。

'Standardize' および 'Scale' または 'Cov' のいずれかを同時に指定できません。

データ型: single | double

予測子を標準化するためのフラグ。'Standardize' と、true (1) または false (0) のいずれかで構成される、コンマ区切りのペアとして指定します。

'Standardize',true を設定すると、予測子データ (X) の各列のセンタリングとスケーリングを、それぞれ列の平均値と標準偏差を使用して行います。

すべての予測子がカテゴリカルの場合、カテゴリカル予測子は標準化されずエラーがスローされます。

'Standardize',1 および 'Scale' または 'Cov' のいずれかを同時に指定できません。

予測子データの標準化をお勧めします。

例: 'Standardize',true

データ型: logical

出力引数

すべて折りたたむ

学習アンサンブルまたは ECOC (誤り訂正出力符号) マルチクラス モデルを学習させるのに適した k NN 分類テンプレート。テンプレート オブジェクトとして返します。tfitcensemble または fitcecoc に渡し、アンサンブルまたは ECOC モデルそれぞれの KNN を作成する方法を指定します。

コマンド ウィンドウに t を表示する場合、すべての未指定のオプションは空 ([]) で表示されます。しかし、空のオプションは学習中に対応する既定値に置き換えられます。

バージョン履歴

R2014a で導入