機械学習シリーズ--Knnのkdツリーアルゴリズムは、詳細な

KNNアルゴリズムは、距離を表すことができ、前記実施例2と同様に新しいトレーニング入力例及び実施例、特徴空間における類似度との間の距離を計算するための特徴空間の分割方法に関する。一般的に、私たちはそれぞれの新しい入力インスタンスは、すべての学習例で計算し、距離を発注する必要があることを意味ユークリッド距離を、使用しています。トレーニングセットが非常に大きい場合、計算は、アルゴリズムの低減効率が得られ、非常に時間がかかり、メモリ消費量です。これらは、KNNアルゴリズムの簡単な理解です。

kdツリー(k次元の木)は、
それらクイック検索を記憶するK次元空間の点の二分木構造の一例です。kdツリー検索を使用すると、このようにして検索する演算量を減少させる、ほとんどのデータポイントを省略することができます。

kdツリーの各ノードは、各ノードが超平面を表し、現在の軸寸法に超平面を垂直に分割され、空間の次元の2つの部分に分割されたk次元の二分木データポイントでありますその左部分木の部分、その右部分木の別の部分。現在のノードが寸法dを分割した場合、すなわち、その左の部分木の全ての点は、d次元の値が現在の値に等しいより大きい座標内のすべての点の右サブツリーにおけるd次元座標値の現在の値よりも小さい、この定義そのすべての子ノードが確立されています。

セット(2,3)、(5,4)、(9,6)、(4,7)、(8,1)、(7,2)。セット(2,3)、(5,4)、(9,6)、(4,7)、(8,1)、(7,2)。
ルートノードの構築、この時間スライス寸法x、寸法の昇順(2,3)の点の上記集合中のX、(4,7)、(5,4)、(7,2)、( 8,1)、(9,6)、前記の値(7,2)。(注:数学的な計算に使用される2,4,5,7,8,9値が、アルゴリズムは、セットポイント以内でなければならない、中央値(5 + 7)/ 2 = 6、 lenのれる(点)// 2 = 3 、ポイント[3] =(7,2))

(7,2)ノードに連結された左の部分木ノード(7,2)に連結された(2,3)、(4,7)、(5,4)、(8,1)、(9,6)右のサブツリー。

ノードの左の部分木、寸法Y、(5,4)の値をスライスこの時点(2,3)、(4,7)、(5,4)の組の構成(7,2)として分割面は、その左の部分木に連結された(2,3)、(4,7)の右の部分木で連結します。

(分割面として(9,6)がyにこの時間スライス寸法、(9,6)の値でも、8ノードの右サブツリー(7,2)、点(8,1)の組を構築する場合、1)その左部分木にぶら下がっ。この時点で、ツリーのビルドをkdは。

上記の手順に従えば、KDツリーは、それを示すために、2次元空間を分割します:

ここに画像を挿入説明

Kdはツリーを構築する方法?

kdツリー左または右サブツリーサブツリーに分割されているものに基づいているK次元データであり、左サブツリー及び右サブツリーを分割する方法を決定するために、バイナリツリー、我々最初の必要性。

BST次元ツリーを構築する際に、ルートノードの結果、ツリーの中間ノードを有する一次元データが同様に左または右のサブツリーに分割されているサブツリーの大きさを決定するために比較され、我々はこれに従うことができます次いで、方法、kdツリーのルートと比較の中間ノードとK次元データが、K次元データ比較の全体ではない、むしろ一つの寸法Diが選択し、二次元Kを比較大小関係ディ寸法で、すなわちA寸法ディプレーンすべての2つの片側に分割されているK次元データ空間の次元Diと直交超平面に対応し、分割されているK次元データのそれぞれを選択します対応した寸法値よりも小さな平面寸法の他方側のK次元データDiのすべてのK次元データ値。言い換えれば、K次元データ空間の分割として選択された各寸法は、我々は分裂上記これら二つのサブK次元空間を継続している場合、新しい部分空間を取得する、二つの部分に分割されます各部分空間は、もはや分割することが可能になるまで、新しいスペースのサブ部門を続け、プロセスが繰り返されます。KD-ツリーは、上記のプロセスを構築することで、上記のプロセスは、2つの重要な問題が含まれます。

1、サブ空間の分割は、どの寸法を決定する方法で分割された各時間。
寸法この寸法にして得られた2つのサブセットに分割の数ができるだけ等しいことを確認する方法に分かれ2は、サブツリーのノードの数、すなわち、左と右のサブツリーができるだけ等しくなります。

最初の問題を解決します

最も簡単な方法は、選択されたデータが、i番目の次元に分割されている場合、すなわち、年丸めることで、次回は、第J(JI)次元に分割されること
木の分布場合と同様のK次元データセット長い木製バー寸法にK次元データを示すことよりオープン、数学的に言えば、寸法(不変)上のデータの分散は、換言すれば、比較的大きくされたこれらのデータの散乱分布の方向を表しますデータ比較は、開口寸法に分散させたので、私たちはこの次元で開くように簡単にそれらを分割するため、別のアプローチには、このリードは、我々が選択した寸法:バリマックス(最大invarince)、である、我々は分割寸法に選択するたびに最大の分散をもつ寸法があります。

第二の問題を解決します

我々は、この場合、我々はK次元データIをディメンションする必要があり、バリマックス寸法に応じて、I S K次元のデータセットを分割するために選択された電流は、Sが2つの部分集合AとB、部分集合Aに分割されて設定されているものとデータ値は、サブセットB内の次元Iよりも小さいです 最初の分割の最も簡単な方法を検討し、すなわち、比較対象として最初に選択された数(すなわち、分割軸、ピボット)、ピボットが計画よりも小さい場合寸法Iに比べて残りのピボットに関連する他の全てのS K次元データ、集合は、集合Bが含まより大きい。もちろん、木のバランスを取ることを試みることが望ましい場合、AセットとBセットは、左右のサブツリーのノード数が異なる、すなわち、我々は二分木を構築し、左サブツリー及び右サブツリーとみなされます少し。彼らはコレクションに分割することに対応するピボットと比較した後であるため、データセットとBの数が明らかとピボットに関する値を設定します。さて、問題は今、ピボットを決定することです。アレイが与えられると、どの要素の数は、ほぼ二つの配列を含有しているサブ配列要素の値は、それの他のサブアレイ未満であり、2つのサブアレイを取得しますか?この方法は、配列内の要素のすべての値は、2つのサブアレイを得ることができると比較して、その後で、中央値(メジアン即ち、中央値)の配列を見つけることは非常に簡単です。同様に、iは分割されているディメンションに、すべてのピボットの値iは、データのサブセットの数は、このように基本的に同じ2つの得られた次元のデータを選択します。

KDツリー構築アルゴリズムは次のようになります。

(1)最大分散次元kを有するK次元のデータセットを選択し、ピボット・データ・セット上の寸法でmの値を選択する2つのサブセットを取得するために分割され、ツリーノードノードを作成しながら、ためストレージ;

(2)すべてのサブセットがもはや分割できなくなるまで、2つのサブセットのステップの手順(1)を繰り返す。サブセットに細分されていない場合、データのサブセットは、リーフノードに格納されている(リーフノード)。

Kdは木のクエリを見つけるために、最近傍アルゴリズム・ステップを使用して行います

比較結果Qリーフノードに達するまで下方kdツリーの各ノードのアクセスに係るルートノードQの開始からクエリデータ(1)、。

比較手段と、ノードQは、ノードQに対応した寸法でのK mの値は、IF Q(K)<M、その後、左サブツリーのアクセス、またはアクセス権サブツリー、比較されます。リーフノードはQ、達し、記憶されたデータは、最小距離点に対応する記録されたデータが、現在の「最近傍」PCURおよび最小距離データDcurと呼ばれるリーフノードとの間の距離を算出します。

より最近のQ見つけることである(2)バックトラック(後戻り)オペレーション、「最近傍を。」すなわち、アクセスされていない分岐が近い地点Qからありますかどうかが決定される、それらの間の距離は、データDcur未満です。

データDcurより低い親ノードQの枝と小さいとの間の距離がアクセスされていない場合、このブランチの存在があれば、(1)同一のステップ検索処理のために、ノードに入る、Pからのより最近のデータがあると考えられますより最近のデータポイントが現在の「最近傍」PCUR、更新データDcurに更新されて見つけます。

Qブランチ間の距離は、アクセス・ノードではなく、その親がデータDcur経由よりも大きい場合には、より近い点Qへの分岐に存在しません

参考文献:
https://www.jianshu.com/p/abcaaf754f92

リリース5元の記事 ウォンの賞賛0 ビュー268

おすすめ

転載: blog.csdn.net/Nick_Dizzy/article/details/105269324