4

I Have un objet avec un ensemble de paramètres tels que:Trouver la plus proche

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

De l'autre côté j'ai une liste d'objets:

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

Quel est le meilleur (le plus facile) algorithme pour trouver la correspondance la plus proche pour le premier obj dans les objets répertoriés?

+1

Comment définissez-vous la correspondance la plus proche? Erreur quadratique minimum? Erreur minimum? Le plus grand nombre de correspondances de paramètres exactes (avec des règles optionnelles de départage)? – Brian

+0

Connexe: http://stackoverflow.com/questions/2981743/ways-to-calculate-similarity/2981772#2981772 – Betamoo

+0

Connexe: http://stackoverflow.com/questions/2887541/similarity-in-data-mining – Betamoo

Répondre

4

Vous devez définir le terme correspondant le plus proche avant d'essayer de le trouver !!



1- Une façon beaucoup de gens utilisent est Mean Squared Error (ou Euclidean Distance):

Calculer l'erreur quadratique moyenne pour tous les objets:

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

et choisissez celui avec le minimum valeur ...



2- Vous pouvez également utiliser l'erreur absolue minimum:

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

et choisissez celui avec la valeur minimale ...



3- Vous pouvez également appliquer k-nearest neighbour avec tout critères que vous avez choisis ci-dessus



Tout dépend des propriétés de ces paramètres ...

Pour plus de lecture vous pouvez regarder List of Classification algorithms

1

Vous pouvez également utiliser la Euclidean Distance. Essentiellement, vous prétendez que chaque objet est un point en 5 dimensions et recherchez le point le plus proche (c'est-à-dire la distance la plus courte).

0

Cela dépend, je suppose. Plusieurs possibilités me viennent à l'esprit:

  • SAD: calculez la différence absolue de chaque paire de paramètres (celle que vous testez et chacun de vos candidats) et résumez-les. Le plus petit numéro est le plus proche
  • Norme L2: Calculez la différence de chaque paire de paramètres, placez-les, additionnez-les, prenez la racine carrée
  • Cosinus: Multipliez chaque paramètre par l'autre paramètre, additionnez. Diviser le résultat par le produit de la longueur (Norme L2) des deux objets

Bien sûr, il y a mille autres possibilités, donc vous devez spécifier, ce que vous voulez exactement!

Questions connexes