質問が正しかったことを確認できますか?
テーブルは、groupIdによって識別されるベクトルを表します。すべてのベクトルの次元は100から50,000の間ですが、次元に順序は定義されていません。これは、テーブルからのベクトルが実際には同値類の代表であるということです。
ここで、2つの同値類の類似性を、最初の30次元の部分空間に対する同値類の任意の2つの代表の射影の最小ユークリッド距離として定義します。
2次元への投影の例:
A = <1, 2, 3, 4>
B = <5, 6, 7, 8, 9, 10>
Aは、次の同値類のベクトルを表します。
<1, 2, 3, 4> <2, 1, 2, 3> <3, 1, 2, 4> <4, 1, 2, 3>
<1, 2, 4, 4> <2, 1, 3, 2> <3, 1, 4, 2> <4, 1, 3, 2>
<1, 3, 2, 4> <2, 3, 1, 4> <3, 2, 1, 4> <4, 2, 1, 3>
<1, 3, 4, 2> <2, 3, 4, 1> <3, 2, 4, 1> <4, 2, 3, 1>
<1, 4, 2, 2> <2, 4, 1, 3> <3, 4, 1, 2> <4, 3, 1, 2>
<1, 4, 3, 2> <2, 4, 3, 1> <3, 4, 2, 1> <4, 3, 2, 1>
この同値類のすべての代表を最初の2次元に射影すると、次のようになります。
<1, 2> <1, 3> <1, 4>
<2, 1> <2, 3> <2, 4>
<3, 1> <3, 2> <3, 4>
<4, 1> <4, 2> <4, 3>
Bは、720個の要素を持つ同値類を表します。最初の2次元への投影により、30個の要素が生成されます。
< 5, 6> < 5, 7> < 5, 8> < 5, 9> < 5, 10>
< 6, 5> < 6, 7> < 6, 8> < 6, 9> < 6, 10>
< 7, 5> < 7, 6> < 7, 8> < 7, 9> < 7, 10>
< 8, 5> < 8, 6> < 8, 7> < 8, 9> < 8, 10>
< 9, 5> < 9, 6> < 9, 7> < 9, 8> < 9, 10>
<10, 5> <10, 6> <10, 7> <10, 8> <10, 9>
したがって、AとBの距離は8の平方根です。これは、投影からの2つのベクトルの最小距離だからです。たとえば、<3、4>と<5、6>はこの距離を生成します。
それで、私は問題の私の理解で正しいですか?
m個の成分を持つn個のベクトルの本当に単純なアルゴリズムは、それぞれ(n-1)の距離を計算する必要があります。距離ごとに、アルゴリズムはmの距離を計算します。/(m-30)!各ベクトルの射影。したがって、100次元(下限)の場合、ベクトルに対して2.65 * 10^32の可能な射影があります。これには、投影間の約7 * 10 ^ 64の距離を計算し、2つのベクトルの距離を見つけるための最小値を見つける必要があります。そして、これをn回繰り返します。
私はあなたを誤解したり、間違えたりしたことを願っています。そうでなければ、これは本当にやりがいのあることと実行不可能なことの間の何かに聞こえます。
私が考えたのは、ベクトルコンポーネントを並べ替えて、それらを一致させようとすることです。マンハッタン距離を使用すると(可能であれば)、ソリューションを簡素化するのに役立つ場合があります。