同じ長さの2つのベクトル間の距離を計算する方法はいくつかあります。ユークリッド、マンハッタン、ハミングなどです。
異なる長さのベクトル間の距離を計算する方法については疑問に思っています。
ユークリッド距離の公式は、ユークリッド空間の任意の2点間の距離を求めます。
ユークリッド空間の点は、ユークリッドベクトルとも呼ばれます。
ユークリッド距離の式を使用して、2つの異なる長さのベクトル間の距離を計算できます。
異なる次元のベクトルの場合、同じ原理が適用されます。
低次元のベクトルが高次元空間にも存在するとします。次に、下の次元のベクトルで不足しているすべてのコンポーネントを0に設定して、両方のベクトルが同じ次元になるようにします。次に、前述の距離の式のいずれかを使用して距離を計算します。
たとえば、コンポーネントR²
を含む(a1,a2)
の2次元ベクトルA
と、コンポーネントR³
を含む(b1,b2,b3)
の3次元ベクトルB
について考えてみます。
R³
でA
を表現するには、そのコンポーネントを(a1,a2,0)
に設定します。次に、次の式を使用して、ユークリッド距離d
とA
とB
の間の距離を求めることができます。
d² = (b1 - a1)² + (b2 - a2)² + (b3 - 0)²
d = sqrt((b1 - a1)² + (b2 - a2)² + b3²)
特定のケースでは、コンポーネントは0
または1
のいずれかになるため、すべての違いは-1
、0
、または1
になります。平方差は、0
または1
のみになります。
コンポーネントを表すために整数または個々のビットを使用している場合、算術の代わりに単純なビットごとの演算を使用できます(^
はXOR
またはexclusive or
を意味します)。
d = sqrt(b1 ^ a1 + b2 ^ a2 + ... + b(n-1) ^ a(n-1) + b(n) ^ a(n))
また、A
の末尾のコンポーネントは0
であると想定しているため、最終的な式は次のようになります。
d = sqrt(b1 ^ a1 + b2 ^ a2 + ... + b(n-1) + b(n))
異なる長さのベクトル間の距離を直接計算することはできません。
ここでの提案はすべて、長さが短いベクトルを長さが長いベクトルにマップする関数から始まり、通常どおり計算を行います。
使用できる関数はたくさんあります(実際には無限にあります)。
距離計算の結果は、短いベクトルを長いベクトルに変換する関数に強く依存するため、どの関数を使用するかを誰もが明確にする必要があります。フィールドの誰もが1つの関数だけが意味をなすことに同意しているため、または変換で使用される関数が書き留められているためです。
長いサイズの配列と同じ長さになるように、短いサイズの配列にゼロを埋め込むという考えは、「一般に」正しい考えではないようです。
たとえば、異なる時点で行われた同じパラメーター(温度、速度、またはオン/オフスイッチのステータスとしてのバイナリパラメーターなど)の測定値の2つのセット(配列、ベクトルなど)がある場合。最初のセットA1が瞬間T1のセットで行われたN回の測定で構成され、2番目のセットA2が瞬間T2のセットで行われたM回の測定(M〜= N)で構成されると仮定します。
T2の分布はT1の分布と任意に異なることに注意してください。したがって、ここでゼロを埋めることは意味がありません。
この場合は、次のようにTと言って、一般的な時刻のセットを使用して補間を使用することをお勧めします。
A1_new =補間(T1、A1、T);
A2_new =補間(T2、A2、T);
ここで、interpolate(x、y、xq)は、変数x、関数y(x)、およびクエリポイントxqとして入力を受け入れます。'interpolate '関数は、補間された出力y(xqを返します。 )。
これで、同じサイズのセットA1_newとA2_newを任意の適切なメジャーで比較できます。ユークリッド距離。
次元nおよびm(n〜= m)の2つのベクトルpおよびq間の平均最小距離を計算することができます。
d = 1/n * sum_i=1:n ( min_j=1:m (p(i) - q(j))) + 1/m * sum_j=1:m (min_i=1:n (p(i) - q(j)))