您能确认我理解问题的正确性吗?
您的表格表示由groupId标识的向量。每个向量具有100到50,000之间的某个维度,但没有定义维度顺序。这意味着来自表中的向量实际上是等价类的代表。
现在,您将两个等价类的相似度定义为任意两个等价类的代表的投影到前30个维度的子空间的最小欧几里得距离。
投影至两个维度的示例:
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>
这个等价类的所有代表的投影到前两个维度得到。
<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个元素的等价类。对前两个维度的投影得到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的平方根。例如<3,4>和<5,6>产生了这个距离。
那么,我的理解是否正确?
一个非常简单的算法对于n个具有m个分量的向量需要计算(n-1)个距离。对于每个距离,该算法会计算每个向量的m! / (m - 30)! 投影的距离。因此,对于100维(您的下限),每个向量都有2.65 * 10 ^ 32个可能的投影。这需要计算大约7 * 10 ^ 64次投影之间的距离并找到最小值来找到两个向量之间的距离。然后重复这个过程n次。
我希望我误解了您或犯了一个错误。否则,这听起来像是非常具有挑战性和不可行的事情之间的某种东西。
我想到的一个解决方案是对向量组件进行排序并尝试匹配它们。如果可能的话,使用曼哈顿距离可以帮助简化解决方案。