Rating System with Elo, better alternatives?How to implement this recommendation algorithm?PHP Facemash ELO Rating Class/FunctionHelp on Elo System specifics for large group competitionsWhat's a good algorithm to calculate puzzle game time(s)?Best practices for overall rating calculationImplementation of ELO algorithm for ratingElo rating system without order of game playedELO rating - mysql designElo rating system looking for good resource
What European countries have secret voting within the Legislature?
Quantum jump/leap, exist or not, and instantaneous or not (for electrons)?
Word ending in "-ine" for rat-like
pgfmath does not work
Ways to get SMD resistors from a strip
What game is this character in the Pixels movie from?
How to stop the sales department from selling functionalities that don't exist
Bin Packing with Relational Penalization
Who voices the character "Finger" in The Fifth Element?
Sharing referee/AE report online to point out a grievous error in refereeing
How did they film the Invisible Man being invisible, in 1933?
Security Patch SUPEE-11155 - Possible issues?
When casting a spell with a long casting time, what happens if you don't spend your action on a turn to continue casting?
Why did the Apple //e make a hideous noise if you inserted the disk upside down?
Sentence editor
When was this photo of Mission Dolores *actually* taken?
Why wasn't EBCDIC designed with contiguous alphanumeric characters?
If I were to build a J3 cub twice the size of the original using the same CG would it fly?
if a USA citizen marries a foreign citizen who has kid from previous marriage
List Manipulation : a,b,c,d,e,f,g,h into a,b,c,d,e,f,g,h
Copy group of files (Filename*) to backup (Filename*.bak)
Fully submerged water bath for stove top baking?
Color Specified Vertices in LayeredGraphPlot
Could you fall off a planet if it was being accelerated by engines?
Rating System with Elo, better alternatives?
How to implement this recommendation algorithm?PHP Facemash ELO Rating Class/FunctionHelp on Elo System specifics for large group competitionsWhat's a good algorithm to calculate puzzle game time(s)?Best practices for overall rating calculationImplementation of ELO algorithm for ratingElo rating system without order of game playedELO rating - mysql designElo rating system looking for good resource
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I'm working on a rating algorithm. I have a set of exercises. They are all categorized in levels (1 = easiest, 5 = hardest).
Users get shown two exercises and should decide which one is harder or if both are equal. Based on user ratings, the levels should get adjusted.
What I've done:
I experimented with the Elo rating.
My Questions:
Are there any better algorithms for doing this use case? (found nothing so far)
Thanks in advance and cheers.
Toby
algorithm rating
add a comment |
I'm working on a rating algorithm. I have a set of exercises. They are all categorized in levels (1 = easiest, 5 = hardest).
Users get shown two exercises and should decide which one is harder or if both are equal. Based on user ratings, the levels should get adjusted.
What I've done:
I experimented with the Elo rating.
My Questions:
Are there any better algorithms for doing this use case? (found nothing so far)
Thanks in advance and cheers.
Toby
algorithm rating
This looks fun, but open-ended. I would suggest an Elo rating where you cycle through the comparisons multiple times, each time making the Elo adjustment smaller. That removes the effects of the order of the vote.
– btilly
Mar 25 at 15:15
add a comment |
I'm working on a rating algorithm. I have a set of exercises. They are all categorized in levels (1 = easiest, 5 = hardest).
Users get shown two exercises and should decide which one is harder or if both are equal. Based on user ratings, the levels should get adjusted.
What I've done:
I experimented with the Elo rating.
My Questions:
Are there any better algorithms for doing this use case? (found nothing so far)
Thanks in advance and cheers.
Toby
algorithm rating
I'm working on a rating algorithm. I have a set of exercises. They are all categorized in levels (1 = easiest, 5 = hardest).
Users get shown two exercises and should decide which one is harder or if both are equal. Based on user ratings, the levels should get adjusted.
What I've done:
I experimented with the Elo rating.
My Questions:
Are there any better algorithms for doing this use case? (found nothing so far)
Thanks in advance and cheers.
Toby
algorithm rating
algorithm rating
edited Mar 25 at 15:07
toby
asked Mar 25 at 14:51
tobytoby
83 bronze badges
83 bronze badges
This looks fun, but open-ended. I would suggest an Elo rating where you cycle through the comparisons multiple times, each time making the Elo adjustment smaller. That removes the effects of the order of the vote.
– btilly
Mar 25 at 15:15
add a comment |
This looks fun, but open-ended. I would suggest an Elo rating where you cycle through the comparisons multiple times, each time making the Elo adjustment smaller. That removes the effects of the order of the vote.
– btilly
Mar 25 at 15:15
This looks fun, but open-ended. I would suggest an Elo rating where you cycle through the comparisons multiple times, each time making the Elo adjustment smaller. That removes the effects of the order of the vote.
– btilly
Mar 25 at 15:15
This looks fun, but open-ended. I would suggest an Elo rating where you cycle through the comparisons multiple times, each time making the Elo adjustment smaller. That removes the effects of the order of the vote.
– btilly
Mar 25 at 15:15
add a comment |
1 Answer
1
active
oldest
votes
I would try to solve the problem in a simple yet (I hope) effective way.
First, you only update an exercise rating when the vote is different that what the system actually expects. From now on, I will only considers the cases where the user output differs from what the system actually expects.
Second, I would give more weight to the votes where the two levels have a big difference. A wrong expectation on two esercises with rating 2 and 3 should have less impact than a wrong expectation on two exercises with rating 1 and 5.
That said, my algorithm would be along the lines of:
1- A constant percentage is set, let's call it increment
. It establishes the percentage of impact that a vote has, and can be modified along the way based on the number of users.
2- For an "unexpected" vote, I would calculate the difference between the original levels (minimum of 1).
diff = max(1, abs(ex1.level - ex2.level))
3- I would update each exercise rating by a percentage, based on the multiplication of increment
and diff
.
if (ex1 level expected bigger)
ex1.rating = ex1.rating + diff*increment;
else
ex1.rating = ex1.rating - diff*increment;
Rating would be a float, and level would be the rounding of rating
:
ex1.level = round(ex1.rating)
Example:
let's set increment = 0.1
. exA
, with a rating of 2.0 and level 2 is compared with exB
, rating of 3.0 and level 3.
The first user selects exB
as the hardest. Nothing changes, because it is the result expected by the system.
The second user selects exA
. It is not the expected result. The difference between the two exercises is 1, so the rating is modified by a factor 1*0.1 = 0.1,
resulting in a exA.rating = 2.1
for exB.rating = 2.9
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55340554%2frating-system-with-elo-better-alternatives%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I would try to solve the problem in a simple yet (I hope) effective way.
First, you only update an exercise rating when the vote is different that what the system actually expects. From now on, I will only considers the cases where the user output differs from what the system actually expects.
Second, I would give more weight to the votes where the two levels have a big difference. A wrong expectation on two esercises with rating 2 and 3 should have less impact than a wrong expectation on two exercises with rating 1 and 5.
That said, my algorithm would be along the lines of:
1- A constant percentage is set, let's call it increment
. It establishes the percentage of impact that a vote has, and can be modified along the way based on the number of users.
2- For an "unexpected" vote, I would calculate the difference between the original levels (minimum of 1).
diff = max(1, abs(ex1.level - ex2.level))
3- I would update each exercise rating by a percentage, based on the multiplication of increment
and diff
.
if (ex1 level expected bigger)
ex1.rating = ex1.rating + diff*increment;
else
ex1.rating = ex1.rating - diff*increment;
Rating would be a float, and level would be the rounding of rating
:
ex1.level = round(ex1.rating)
Example:
let's set increment = 0.1
. exA
, with a rating of 2.0 and level 2 is compared with exB
, rating of 3.0 and level 3.
The first user selects exB
as the hardest. Nothing changes, because it is the result expected by the system.
The second user selects exA
. It is not the expected result. The difference between the two exercises is 1, so the rating is modified by a factor 1*0.1 = 0.1,
resulting in a exA.rating = 2.1
for exB.rating = 2.9
add a comment |
I would try to solve the problem in a simple yet (I hope) effective way.
First, you only update an exercise rating when the vote is different that what the system actually expects. From now on, I will only considers the cases where the user output differs from what the system actually expects.
Second, I would give more weight to the votes where the two levels have a big difference. A wrong expectation on two esercises with rating 2 and 3 should have less impact than a wrong expectation on two exercises with rating 1 and 5.
That said, my algorithm would be along the lines of:
1- A constant percentage is set, let's call it increment
. It establishes the percentage of impact that a vote has, and can be modified along the way based on the number of users.
2- For an "unexpected" vote, I would calculate the difference between the original levels (minimum of 1).
diff = max(1, abs(ex1.level - ex2.level))
3- I would update each exercise rating by a percentage, based on the multiplication of increment
and diff
.
if (ex1 level expected bigger)
ex1.rating = ex1.rating + diff*increment;
else
ex1.rating = ex1.rating - diff*increment;
Rating would be a float, and level would be the rounding of rating
:
ex1.level = round(ex1.rating)
Example:
let's set increment = 0.1
. exA
, with a rating of 2.0 and level 2 is compared with exB
, rating of 3.0 and level 3.
The first user selects exB
as the hardest. Nothing changes, because it is the result expected by the system.
The second user selects exA
. It is not the expected result. The difference between the two exercises is 1, so the rating is modified by a factor 1*0.1 = 0.1,
resulting in a exA.rating = 2.1
for exB.rating = 2.9
add a comment |
I would try to solve the problem in a simple yet (I hope) effective way.
First, you only update an exercise rating when the vote is different that what the system actually expects. From now on, I will only considers the cases where the user output differs from what the system actually expects.
Second, I would give more weight to the votes where the two levels have a big difference. A wrong expectation on two esercises with rating 2 and 3 should have less impact than a wrong expectation on two exercises with rating 1 and 5.
That said, my algorithm would be along the lines of:
1- A constant percentage is set, let's call it increment
. It establishes the percentage of impact that a vote has, and can be modified along the way based on the number of users.
2- For an "unexpected" vote, I would calculate the difference between the original levels (minimum of 1).
diff = max(1, abs(ex1.level - ex2.level))
3- I would update each exercise rating by a percentage, based on the multiplication of increment
and diff
.
if (ex1 level expected bigger)
ex1.rating = ex1.rating + diff*increment;
else
ex1.rating = ex1.rating - diff*increment;
Rating would be a float, and level would be the rounding of rating
:
ex1.level = round(ex1.rating)
Example:
let's set increment = 0.1
. exA
, with a rating of 2.0 and level 2 is compared with exB
, rating of 3.0 and level 3.
The first user selects exB
as the hardest. Nothing changes, because it is the result expected by the system.
The second user selects exA
. It is not the expected result. The difference between the two exercises is 1, so the rating is modified by a factor 1*0.1 = 0.1,
resulting in a exA.rating = 2.1
for exB.rating = 2.9
I would try to solve the problem in a simple yet (I hope) effective way.
First, you only update an exercise rating when the vote is different that what the system actually expects. From now on, I will only considers the cases where the user output differs from what the system actually expects.
Second, I would give more weight to the votes where the two levels have a big difference. A wrong expectation on two esercises with rating 2 and 3 should have less impact than a wrong expectation on two exercises with rating 1 and 5.
That said, my algorithm would be along the lines of:
1- A constant percentage is set, let's call it increment
. It establishes the percentage of impact that a vote has, and can be modified along the way based on the number of users.
2- For an "unexpected" vote, I would calculate the difference between the original levels (minimum of 1).
diff = max(1, abs(ex1.level - ex2.level))
3- I would update each exercise rating by a percentage, based on the multiplication of increment
and diff
.
if (ex1 level expected bigger)
ex1.rating = ex1.rating + diff*increment;
else
ex1.rating = ex1.rating - diff*increment;
Rating would be a float, and level would be the rounding of rating
:
ex1.level = round(ex1.rating)
Example:
let's set increment = 0.1
. exA
, with a rating of 2.0 and level 2 is compared with exB
, rating of 3.0 and level 3.
The first user selects exB
as the hardest. Nothing changes, because it is the result expected by the system.
The second user selects exA
. It is not the expected result. The difference between the two exercises is 1, so the rating is modified by a factor 1*0.1 = 0.1,
resulting in a exA.rating = 2.1
for exB.rating = 2.9
answered Mar 25 at 15:13
gbalduzzigbalduzzi
2,7018 silver badges26 bronze badges
2,7018 silver badges26 bronze badges
add a comment |
add a comment |
Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.
Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55340554%2frating-system-with-elo-better-alternatives%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
This looks fun, but open-ended. I would suggest an Elo rating where you cycle through the comparisons multiple times, each time making the Elo adjustment smaller. That removes the effects of the order of the vote.
– btilly
Mar 25 at 15:15