メインコンテンツ

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=true)
t = 
Fit template for classification KNN.

       NumNeighbors: 5
           NSMethod: ''
           Distance: ''
         BucketSize: []
        IncludeTies: []
     DistanceWeight: []
          BreakTies: ''
           Exponent: []
                Cov: []
              Scale: []
    StandardizeData: 1
          CacheSize: 1000
            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=true)
t = 
Fit template for classification KNN.

       NumNeighbors: 5
           NSMethod: ''
           Distance: ''
         BucketSize: []
        IncludeTies: []
     DistanceWeight: []
          BreakTies: ''
           Exponent: []
                Cov: []
              Scale: []
    StandardizeData: 1
          CacheSize: 1000
            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 は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

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

複数のクラスで最小コストが同じである場合に predict メソッドで使用されるタイブレーク アルゴリズム。次のいずれかとして指定します。

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

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

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

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

例: BreakTies="nearest"

Kd 木の葉ノードにおけるデータ点の最大数。正の整数値として指定します。この引数は、NSMethod"kdtree" の場合にのみ意味があります。

例: BucketSize=40

データ型: single | double

共分散行列。マハラノビス距離の計算時の共分散行列を表すスカラー値の正定値行列として指定します。この引数は、Distance"mahalanobis" の場合にのみ有効です。

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

データ型: single | double

距離計量。有効な距離計量の名前または関数ハンドルとして指定します。使用できる距離計量名は、近傍探索法の選択 (NSMethod を参照) によって決まります。

NSMethod の値距離計量名
"exhaustive"ExhaustiveSearcher の任意の距離計量
"kdtree""cityblock""chebychev""euclidean"、または "minkowski"

この table には、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,:) の間の距離です。

fitcensemble または fitcecoc を呼び出すときに、LearnerstemplateKNN オブジェクト、CategoricalPredictors"all" として指定すると、既定の距離計量は "hamming" になります。それ以外の場合は、既定の距離計量は "euclidean" です。

Distance を変更するには、ドット表記 mdl.Distance = newDistance を使用します。

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

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

例: Distance="minkowski"

データ型: char | string | function_handle

距離重み付け関数。関数ハンドルまたは次の表の値のいずれかとして指定します。

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

例: DistanceWeight="inverse"

データ型: char | string | function_handle

ミンコフスキー距離指数。正のスカラー値として指定します。この引数は、Distance"minkowski" の場合にのみ有効です。

例: Exponent=3

データ型: single | double

同順位使用フラグ。距離の値が k 番目に小さい距離と等しい近傍点をすべて predict に含めるかどうかを示す logical 値として指定します。IncludeTiestrue の場合、predict はすべての近傍点を含みます。それ以外の場合、predict は正確に k の近傍点を使用します。

例: IncludeTies=true

データ型: logical

最近傍探索法。"kdtree" または "exhaustive" を指定します。

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

    • "euclidean"

    • "cityblock"

    • "minkowski"

    • "chebychev"

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

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

例: NSMethod="exhaustive"

予測時に各点を分類するために検出する X の最近傍の数。正の整数値として指定します。

例: NumNeighbors=3

データ型: single | double

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

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

データ型: single | double

予測子を標準化するフラグ。true (1) または false (0) として指定します。

Standardize=true を設定すると、予測子データの各列 (X) がそれぞれ列の平均と標準偏差でセンタリングおよびスケーリングされます。

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

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

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

例: Standardize=true

データ型: logical

出力引数

すべて折りたたむ

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

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

バージョン履歴

R2014a で導入