views:

81

answers:

3

I Have an object with a set of parameters like:

var obj = new {Param1 = 100; Param2 = 212; Param3 = 311; param4 = 11; Param5 = 290;}

On the other side i have a list of object:

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;}

What is the best (easiest) algorithm to find the closest match for the first obj in the listed objects?

+4  A: 

You must define the term closest match before trying to find it!!



1- One way many people use is Mean Squared Error (or Euclidean Distance) :

Calculate mean square error for all objects:

Sqr(obj.Param1-obj1.Param1) + Sqr(obj.Param2-obj1.Param2) + ..... // for obj1
Sqr(obj.Param1-obj2.Param1) + Sqr(obj.Param2-obj2.Param2) + ..... // for obj2

and choose the one with the minimum value...



2- You may also use Minimum absolute error :

Abs(obj.Param1-obj1.Param1) + Abs(obj.Param2-obj1.Param2) + ..... // for obj1
Abs(obj.Param1-obj2.Param1) + Abs(obj.Param2-obj2.Param2) + ..... // for obj2

and choose the one with the minimum value...



3- Also you can apply k-nearest neighbour with any criteria you have chosen above



It all depends on the properties of these parameters...

For more reading you may look at List of Classification algorithms

Betamoo
+1  A: 

You could also use the Euclidean Distance.

Essentially you pretend each object is a point in 5 dimensions and look for the point that's closest (i.e.: has the shortest distance).

Ben S
+1  A: 

Depends, i guess. Several possibilities come to my mind:

  • SAD: calculate the absolute difference of each pair of parameters (the one you test and each of your candidates) and sum them up. Lowest number is closest
  • L2-Norm: Calculate the difference of each pair of parameters, square them, sum them up, take square root
  • Cosine: Multiply each parameter with the other parameter, sum up. Divide result by product of length (L2-Norm) of both objects

of course, there are thousand more possibilities, therefore you have to specify, what you want exactly!

zerm