opencv 高度な 04 - K 隣接アルゴリズムとは何かを理解する

機械学習アルゴリズムとは、データから生成されるモデル、すなわち学習用のアルゴリズム(以下、アルゴリズムともいう)である。アルゴリズムに経験を提供し、経験データに基づいてモデルを生成できます。新しい状況に直面したとき、モデルは判断(予測)結果を与えてくれます。例えば、私たちは「背が高く、足が長く、体重が軽い」という基準で、スポーツ選手に適しているかどうかを判断します。これらのデータを数値化してコンピュータに与えると、コンピュータはそれに基づいてモデルを生成し、新たな状況(他の子供がアスリートになれるかどうかの判断)に直面したときに、モデルが対応する判断を下します。

データの特性

たとえば、子供のグループをテストするには、まずこの子供のグループの基本データを取得する必要があります。このデータには、身長、足の長さ、体重などのデータが含まれており、物体(または事象)の性能や性質をある側面で反映するものを属性または特性と呼びます。身長を反映する「188cm」などの具体的な値が特徴量または属性値である。この「(身長=188cm、足の長さ=56cm、体重=46kg)、...、(身長=189cm、足の長さ=55cm、体重=48kg)」というデータの集合をと呼びます。データセット。各子のデータはサンプルと呼ばれます。

データからモデルを学習するプロセスは、学習またはトレーニングと呼ばれます。トレーニング プロセスで使用されるデータはトレーニング データと呼ばれ、その中の各サンプルはトレーニング サンプルと呼ばれ、トレーニング サンプルのセットはトレーニング セットと呼ばれます。

もちろん、モデルを取得したい場合は、データに加えて、サンプルに対応するラベルを付ける必要もあります。たとえば、「(((背が高く、足が長く、体重が軽い)、いい男)」)。ここでの「良いシード」とはラベルであり、通常、ラベルが付いているサンプルを「サンプル」と呼びます。

モデルを学習した後、モデルの効果をテストするには、モデルをテストする必要があります。テストされたサンプルはテスト サンプルと呼ばれます。テストサンプルを入力する際、テストサンプルのラベル(対象カテゴリ)は提供されませんが、サンプルのラベル(どのカテゴリに属する​​か)はモデルによって決定されます。テストサンプルの予測ラベルと実際のサンプルラベルの差を比較することで、モデルの精度を計算できます。

ほとんどの機械学習アルゴリズムは、日常の実践から得られます。K 最近傍アルゴリズムは、最も単純な機械学習アルゴリズムの 1 つで、主にオブジェクトを既知のクラスに分割するために使用され、日常生活で広く使用されています。たとえば、コーチが長距離ランナーのグループを選択したい場合、どのように選択すればよいでしょうか? K 近傍アルゴリズムを使用している可能性があり、身長が高く、脚が長く、体重が軽く、膝と足首の周囲が小さく、アキレス腱が明らかで、土踏まずが
大きい候補者を選択します。このような子どもたちはアスリートの可能性を秘めている、あるいは、この子どもたちの特徴はアスリートの特徴に非常に近いと感じるでしょう。

K 最近傍アルゴリズムの基本的な考え方

K 最近傍アルゴリズムの本質は、既知の に従って指定されたオブジェクトを割り当てることです特征值分类たとえば、父親と息子を見たとき、通常の状況では、年齢を判断することで、どちらが父親でどちらが息子であるかがすぐにわかります。これは age 属性を介して行われます特征值来划分

上の例は、単一の特徴次元に基づく最も単純な分類ですが、実際のシナリオでは、複数の特徴次元が存在するため、状況はさらに複雑になる可能性があります。たとえば、スポーツ ビデオを分類するには、そのビデオが卓球の試合なのかフットボールの試合なのかを判断します。

分類を決定するには、特徴を定義する必要があります。ここでは 2 つの特徴が定義されています。1 つはアスリートの「手を振る」アクション、もう 1 つはアスリートの「キック」アクションです。もちろん、「手を振る」アクションを見るだけでビデオを「ピンポン ゲーム」として分類することはできません。サッカー選手の中には、スポーツ場でチームメイトとコミュニケーションをとるために手を振ることに慣れている人もいることがわかっているからです。同様に、一部の卓球選手は感情を表現するために「キック」を使用するため、「キック」だけを見てビデオを「サッカーの試合」として分類することはできません。

一定時間内の動画内で「手を振る」「蹴る」動作の回数を数えたところ、以下の法則が分かりました。

  • 卓球の試合の映像では、「蹴り」よりも「波」の方が圧倒的に多いです。
  • サッカーの試合のビデオには、「波」よりも「キック」の方がはるかに多く表示されます。

一連のビデオを分析すると、表 20-1 に示すデータが得られます。

ここに画像の説明を挿入

観察しやすいように、図 20-1 に示すように、上記のデータは散布図として描かれています。

ここに画像の説明を挿入

ここに画像の説明を挿入

図 20-1 からわかるように、データ ポイントはクラスタリング特性を示します。

  • 卓球試合映像のデータ点は、x 軸の座標が [3000, 5000]、y 軸の座標が [1,500] の領域に集まっています。
  • サッカーの試合ビデオ内のデータ ポイントは、y 軸の座標が [3000, 5000]、x 軸の座標が [1,500] の領域に集中しています。

現時点ではビデオテストがあり、「手を振る」アクションが2000回、「蹴る」アクションが100回あるという統計がある。図 20-1 でその位置がマークされていれば、ビデオ Test の位置の最近傍が卓球の試合のビデオであることがわかり、そのビデオは卓球の試合のビデオであると判断できます。

上記の例は白黒という極端な例ですが、実際の分類データはパラメータが多い場合が多く、そう単純に判断できるものではありません。
したがって、アルゴリズムの信頼性を向上させるために、実装中にk 個の近傍点が選択され、これらの k 点のうちどのクラスに属するかが多く、識別される現在の点がどのクラスに分割されます。判断の便宜上、
kの値は通常奇数であるが、これは明確な投票結果を得るために取締役の配置が通常奇数であるのと同じである。

たとえば、有名な双子のアーティスト A と B は非常によく似ていることが知られていますが、画像 T に写っている人物がアーティスト A であるかアーティスト B であるかを判断したい場合、K 近傍法を使用してそれを実装する具体的な手順は次のとおりです。近隣アルゴリズムは次のとおりです。

(1) アーティストAとアーティストBの写真を100枚ずつ集めます。
(2) 人物を識別するためのいくつかの重要な特徴を決定し、これらの特徴を使用してアーティスト A と B の写真にラベルを付けます。

たとえば、ある 4 つの特徴に従って、各写真は [156, 34, 890, 457] (つまりサンプル点) として表現できます。以上の方法により、
アーティストAの写真100枚からなるデータセットFAとアーティストBの写真100枚からなるデータセットFBが得られる。このとき、データセットFA、FBの要素は
上述の固有値の形となっており、各セットには100個の固有値が存在する。つまり、写真を数値で表現し、
アーティストAの数値特徴セット(データセット)FAとアーティストBの数値特徴セットFBを取得します。

(3)認識対象となる画像Tの特徴を計算し、その特徴量を用いて画像Tを表現する。例えば、画像Tの特徴量TFは、
[257、896、236、639]であってもよい。
(4) 画像 T の固有値 TF と FA および FB の各固有値との距離を計算します。

(5) k 個の最短距離を生成するサンプル点を見つけます (T に k 個の最近傍点を見つけます)。k 個のサンプル点のうち FA と FB に属するサンプル点の数を数え、どちらのデータ セットがより多くのサンプル点を持っているかを決定します。 Tはどのアーティストのイメージですか?

たとえば、最も近い 11 点を見つけ、これら 11 点のうち、FA に属するサンプル点が 7 つ、FB に属するサンプル点が 4 つある場合、この画像 T のアーティストは A であると判断されます。そうでない場合は、これら 11 点の中に点、6 サンプル ポイントが FB に属し、5 サンプル ポイントが FA に属する場合、この画像 T のアーティストは B であると決定されます。
以上がK最近傍アルゴリズムの基本的な考え方です。

計算的思考

コンピュータの「感覚」は論理計算や数値計算によって実現されます。そのため、多くの場合、処理対象をコンピュータで数値処理し、その後の処理のために特定の値に定量化する必要があります。

各サンプルの固有値を取得した後、K 最近傍アルゴリズムは、識別されるサンプルの固有値と各既知の分類サンプルの固有値の間の距離を計算し、k 個の最近傍サンプルを見つけます。 k 個の最近傍サンプルに基づいて、最も高い割合を持つサンプルの分類が、識別されるサンプルの分類を決定します。

01. 正規化

単純な場合には、固有値から距離 (ギャップ) を直接計算するだけで十分です。

例えば、ある映画やテレビドラマでは、容疑者の身長が186cm、被害者の身長が172cmであることが技術的に判明しています。警察の前で、AもBも被害者であると主張した。

この時点で、2 人の身長を測定することで、誰が本当の犠牲者であるかを判断できます。

  • Aの身長は185cm、容疑者の身長との距離=186-185=1cm、被害者の身長との距離=185-172=7cmです。Aの身長が容疑者に近いため、Aが容疑者と確定する。
  • Bの身長は173cm、容疑者の身長との距離=186-173=13cm、被害者の身長との距離=173-172=1cmです。Bの身長は被害者の身長に近いため、Bが被害者であると特定される。

上記の例は、非常に単純な特殊なケースです。実際のシナリオでは、判断のためにさらに多くのパラメータが必要になる場合があります。

たとえば、外国の映画やテレビドラマでは、警察は容疑者が身長 180 cm で指が 1 本欠損していること、被害者は身長 173 cm で 10 本の指がすべて無傷であることを技術的な手段で把握しました。この時、投降に来たAさんとBさんは、ともに被害者であると主張した。
パラメータが複数ある場合、それらのパラメータをリスト(配列)にして総合的に判断するのが一般的です。この例では、(身長、指の数)を特徴量として使用する。

したがって、容疑者は (180, 9) の固有値を持ち、被害者は (173, 10) の固有値を持ちます。

この時点で、両者については次のような判断が可能です。

  • A は身長 175 cm で指がありません。A の固有値は (175, 9) です。
  • A と容疑者の特性値の間の距離 = (180-175) + (9-9) = 5
  • A と被害者の特性値の間の距離 = (175-173) + (10-9) = 3

このとき、Aの固有値が被害者に近いため、Aが被害者であると判断されます。

  • B の身長は 178 cm、10 本の指は健全で、B の固有値は (178, 10) です。
  • B と容疑者の特性値との距離 = (180-178) + (10-9) = 3
  • B と被害者の特性値の間の距離 = (178-173) + (10-10) = 5

このとき、Bと容疑者の固有値が近いため、Bが容疑者であると結論付けられます。

もちろん、上記の結果が間違っていることはわかっています身長と指の数は次元(重み)が異なるため、特徴量から距離を計算する際には、異なるパラメータ間の重みを十分に考慮する必要があります。通常、各パラメータの次元が一致しないなどの理由により、すべてのパラメータの重みが同じになるようにパラメータを処理する必要があります。

一般に、パラメータを正規化するだけで十分です。正規化する場合、固有値は通常、すべての固有値の最大値 (または最大値と最小値の差) で除算されます

例えば、上記の例では、身長を最大身長180(cm)で除算し、各人物の指の数を最大指数10(10本)で除算して新たな特徴量を求める。計算方法は次のとおりです。

正規化された特徴 = (各人の身長/最大身長 180、指の数/長手指数 10)

したがって、正規化後は次のようになります。

  • 容疑者の特徴量は (180/180, 9/10) = (1, 0.9) です。
  • 被害者の特性値は (173/180, 10/10) = (0.96, 1) です。

この時点で、2 つは正規化された固有値に基づいて判断できます。

  • A の特性値は (175/180, 9/10)=(0.97, 0.9) です。
  • A と容疑者の特性値との距離 = (1-0.97) + (0.9-0.9) = 0.03
  • A と被害者の特性値の間の距離 = (0.97-0.96) + (1-0.9) = 0.11

このとき、Aと容疑者の固有値が近いため、Aが容疑者であると結論付けられます。

  • B の特性値は (178/180, 10/10)=(0.99, 1) です。

  • B と容疑者の間の固有値距離 = (1-0.99) + (1-0.9) = 0.11

  • B と被害者間の固有値距離 = (0.99-0.96) + (1-1) = 0.03

このとき、Bと被害者の固有値が近いため、Bが被害者であると結論付けられます。

02. 距離計算

前の説明では、距離を数回計算しました。使用される方法は、最初に固有値の対応する要素を減算し、次にそれらを合計することです。

例えば、(身長、体重)の形で固有値A(185, 75)とB(175, 86)があり、C(170, 80)と固有値Aと固有値Bの間の距離は以下のように判定されます。 :

  • C と A の間の距離 = (185-170) + (75-80) = 15+(-5) =10
  • C から B までの距離 = (175-170) + (86-80) = 5+6 = 11

計算上、CとAの距離が近いため、CはAが属するカテゴリに分類されます。

もちろん、 C と A の間の距離を計算するときに負の数が存在し、正の数の一部が相殺されるため、上記の判断が間違っていることはわかります。したがって、この種の正と負のオフセットを回避するために、通常は絶対値の合計を計算します

  • C と A の間の距離 = |185-170|+|75-80| = 15+5 = 20
  • C と B の間の距離 = |175-170|+|86-80| = 5+6 = 11

絶対値を求めて合計すると、C と B の間の距離が近いと計算され、C は B が属するカテゴリとして分類されます。この絶対値の和で表される距離を といいます曼哈顿距离

基本的にはこのように距離を計算するだけで十分ですが、もっと良い方法があります。たとえば、二乗和を計算する方法を導入できます。この時の計算方法は以下の通りです。

ここに画像の説明を挿入
より一般的な形式は、二乗和の平方根を計算することです。この距離は広く使用されているユークリッド距離です。その計算方法は次のとおりです。

ここに画像の説明を挿入

これを読んだ後、その地域の K 近傍アルゴリズムについて自分なりの理解を深めてみてください。コメント エリアでお会いしましょう!

おすすめ

転載: blog.csdn.net/hai411741962/article/details/132298394