Question

Je dois trier une base de produits sur les cotes de l'utilisateur.

Supposons que nous ayons 3 produits { , b , c } et nous avons le dos d'alimentation de l'utilisateur sur ces produits. Il est pas important qui nous donne l'utilisateur feed-back (cette question est sur le filtrage corrélative si vous êtes familier avec elle - les intérêts des utilisateurs est pas le cas ici)

Chacune de ces lignes ci-dessous sont des utilisateurs alimentent le dos quand ils ont essayé de comparer les 3 produits:

a 150 points - b 0 points (cet utilisateur vient de nous dire ce qu'il pense de 2 produits a et b et par rapport a et b il cependant que si il donne un point 150 alors b vaut 0 points)

a 150 points - c 20 points

c 200 points - a 10 points (malgré le précédent cet utilisateur pense que c est mieux que a)

a 200 points - b 40 points - C 100 points d'

a 150 points - b 50 points

a 150 points - b 20 points

(Ces évaluations ne sont qu'un échantillon et le nombre du monde réel des produits et des évaluations sont beaucoup plus que cela)

Maintenant, je besoin d'un algorithme pour trouver le classement de produits basé sur les votes des utilisateurs. À mon point de vue, la meilleure façon de décrire ce problème avec un graphique de corrélation et connecter tous les produits à l'autre.

Toute aide ou des conseils est appréciée.

/ ******************************************* ************************************* /

vous ne pouvez pas ajouter des points et calculer la moyenne des points de ce produit Parce qu'il est important de voir comment il a obtenu ses points de supposer a obtenu 800 points contre b - puis c obtenir 10 points contre comme ceci:

a 200 - b 0

a 200 - b 0

a 200 - b 0

a 200 - b 0

c 10 - 0 (cela signifie que c est meilleure que a)

donc certainement est mieux que b , mais avec un petit 10 points c a obtenu un meilleur rang de

/ ********************************************** ********************************** /

Était-ce utile?

La solution

Vous avez des défis. Ajouter un classement c 0 -. B 20 et vous avez un cercle, où c

Et bien sûr, votre commande est non seulement pas transitif ( ), il est également pas totale (il pourrait y avoir des éléments que vous ne pouvez pas décider qui est mieux parce qu'aucun vote utilisateur a été fait, même par d'autres éléments.

Ce que vous obtenez est un déconnecté, dirigé, graphique fini. (En utilisant la direction des bords de dire quel élément (noeud est meilleure).

À partir d'un certain nœud que vous pouvez trouver de meilleurs nœuds défilent dans le graphique, peut-être trouver plusieurs solutions non comparables. Si vous visitez à nouveau le noeud de départ, arrêtez le traitement de ce chemin.

Peut-être que la théorie de l'ordre en mathématiques peut vous aider à: comparer la théorie de l'ordre de , ordre partiel, < a href = "http://en.wikipedia.org/wiki/Hasse_diagram" rel = "noreferrer"> diagramme de Hasse .

Pour le rendre plus pratique:

Utilisez un tableau à deux dimensions avec une ligne et une colonne pour chaque élément. Dans la cellule (a, b) calculer la somme des notes. A partir d'un certain élément a, suivre tous les positiv (> 0) connexions, jusqu'à ce que vous atteignez un noeud qui n'a pas de lien positiv ou revenir à un nœud que vous avez visité déjà. Ces noeuds sont vos solutions.

Autres conseils

baysean système de notation pourrait être votre meilleur pari - il prend en compte les votes et le nombre relatif des voix a un élément pour donner une note pondérée.

Je pense que vous devez raconter comment chaque personne a voté sur chaque produit - par exemple: 1 personne a voté: 100 pour a, 50 b pour et 0 pour c 2 0 personne a voté pour a, b et 200 pour 80 pour c
cela devrait être traduit en:
1 personne a voté pour 3 a, 2 b de c et -1 pour
personne 2 a voté -1 pour un, 3 pour b et 2 c pour

où j'utilise:
3 pour le vote le plus élevé
2 pour le deuxième plus haut
1 pour le plus bas
Et -1 s'ils ont voté 0 (indication qu'ils détestaient / ne-pas-considérer le produit)
ma pensée initiale sur toute façon

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top