Need help with a schema for a simple “Paired Comparison” tool

Can someone recommend what a schema for running a “Paired Comparison” would look like?

Here is a hypothetical scenario:

There will be a list of ideas. Ideas:

*A

*B

*C

*D

*E

There will be a group of users.

Each user is to compare each of the 5 ideas against each other - choosing which idea of the 2 is better and give it a rating of 1 to 5. 1 being just a little better and 5 being a lot better.

Any help you can offer to get me started on this would be very helpful.

Thank you.

I’m going to take a shot in the dark. Let me know if I’m totally wrong.

Person -(HAS_IDEA)-> Idea

Vertex: Person
Attribute:

  • ID (STRING)
  • Name (STRING)
  • attr3

Edge: HAS_IDEA
Attribute:

  • date_time (TIMESTAMP)

Vertex: Idea
Attribute:

  • ID (STRING)
  • title (STRING)
  • body (STRING)

Now, if you want to get fancy you could do some NLP entity extraction and semantically link the ideas based on the content in the body and title.

@gpadvorac Thoughts?

Thanks Jon,

No person has any ideas. There will be a fixed list of the same ideas given to all users, say 5 for example. Then each idea is to be compared against the other 4 and apply a rating each time:

A to B: Choose A, rating 2
A to C: Choose C, rating 4
A to D: Choose A, rating 1
A to E: Choose E, rating 5

B to C: Choose B, rating 3
B to D: Choose B, rating 2
B to E: Choose E, rating 1

C to D: Choose C: rating 3
C to E: Choose E, rating 1

D to E: Choose E, rating 5

Does this change your thoughts on the schema?
Thank you.

Users have Ideas? Users rate ideas? Or is it Just Idea to Idea?

Idea -(HAS_RATING)-> Idea

A -(HAS_RATING) -> B

HAS_RATING:

  • date_time: 2020-04-04 12:33:42
  • rating: 2

Can you @gpadvorac share some of the data? That would make it easier for me to help you with the schema modeling.

I don’t have sample data other than what was provided above. I have done this in the past with a relational DB, and it wasn’t pretty or query friendly.

The sample data above shows a fixed list of 5 ideas which results in a total of 10 comparisons. Each of the 5 users will make their own set of paired comparison resulting in a total of 50 comparison for all 5 users. So I think your last suggesting is getting close.

A –(Chosen_Idea = A, Rating = 3) ->B

The goal ( I should had stated this at the beginning) will be go aggregate all 50 comparisons and show all 5 ideas and a value for thier final score/rating.

Looking at the sample data above “A” was chosen only 2 times with ratings 2,1. We would sum this and divide by the total number of ideas.
“A” gets a rating of 0.6
“E” gets a rating of 2.4

Does this help?

1 Like

You can easily do sum, averages, comparisons, whatever algorithmic action easily and rebalance the weights or ratings. Reminds me a bit of movies and user reviews.

Thank you Jon. Really appreciate it!

1 Like

@gpadvorac anytime, glad to have been of some help!