Algorithm 查找最接近的匹配项

Algorithm 查找最接近的匹配项,algorithm,similarity,pattern-recognition,classification,Algorithm,Similarity,Pattern Recognition,Classification,我有一个具有一组参数的对象,如: var obj = new {Param1 = 100; Param2 = 212; Param3 = 311; param4 = 11; Param5 = 290;} 另一方面,我有一个对象列表: var obj1 = new {Param1 = 1221 ; Param2 = 212 ; Param3 = 311 ; param4 = 11 ; Param5 = 290 ; } var obj3 = new {Param1 = 35 ; Para

我有一个具有一组参数的对象,如:

var obj = new {Param1 = 100; Param2 = 212; Param3 = 311; param4 = 11; Param5 = 290;}
另一方面,我有一个对象列表:

var obj1  = new {Param1 = 1221 ; Param2 = 212 ; Param3 = 311 ; param4 = 11  ; Param5 = 290 ; }
var obj3  = new {Param1 = 35   ; Param2 = 11  ; Param3 = 319 ; param4 = 211 ; Param5 = 790 ; }
var obj4  = new {Param1 = 126  ; Param2 = 218 ; Param3 = 2   ; param4 = 6   ; Param5 = 190 ; }
var obj5  = new {Param1 = 213  ; Param2 = 121 ; Param3 = 61  ; param4 = 11  ; Param5 = 29  ; }
var obj7  = new {Param1 = 161  ; Param2 = 21  ; Param3 = 71  ; param4 = 51  ; Param5 = 232 ; }
var obj9  = new {Param1 = 891  ; Param2 = 58  ; Param3 = 311 ; param4 = 21  ; Param5 = 590 ; }
var obj11 = new {Param1 = 61   ; Param2 = 212 ; Param3 = 843 ; param4 = 89  ; Param5 = 210 ; }

为列出的对象中的第一个obj查找最接近匹配项的最佳(最简单)算法是什么?

您必须先定义术语最接近匹配项,然后才能尝试查找



1-许多人使用的一种方式是(或):

Abs(obj.Param1-obj1.Param1) + Abs(obj.Param2-obj1.Param2) + ..... // for obj1
Abs(obj.Param1-obj2.Param1) + Abs(obj.Param2-obj2.Param2) + ..... // for obj2
计算所有对象的均方误差:

Sqr(obj.Param1-obj1.Param1) + Sqr(obj.Param2-obj1.Param2) + ..... // for obj1
Sqr(obj.Param1-obj2.Param1) + Sqr(obj.Param2-obj2.Param2) + ..... // for obj2
然后选择一个最小值的



2-您也可以使用最小绝对误差:

Abs(obj.Param1-obj1.Param1) + Abs(obj.Param2-obj1.Param2) + ..... // for obj1
Abs(obj.Param1-obj2.Param1) + Abs(obj.Param2-obj2.Param2) + ..... // for obj2
然后选择一个最小值的



3-您也可以使用上面选择的任何标准申请



这一切都取决于这些参数的属性

更多阅读请参考

您也可以使用


基本上,你假设每个物体都是5维空间中的一个点,然后寻找距离最近的点(即距离最短的点)。

我想这取决于具体情况。我想到了几种可能性:

  • SAD:计算每对参数(你测试的参数和每个候选参数)的绝对差值,并将它们相加。最低的数字是最接近的
  • L2范数:计算每对参数的差值,求平方,求和,取平方根
  • 余弦:将每个参数与另一个参数相乘,求和。将结果除以两个对象的长度乘积(L2范数)

当然,还有上千种可能性,因此你必须具体说明,你到底想要什么

如何定义最接近的匹配?最小平方误差?最小误差?精确参数匹配的最大数量(具有可选的连接断路器规则)?相关:相关: