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;








1















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










share|improve this question
























  • 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

















1















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










share|improve this question
























  • 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













1












1








1








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










share|improve this question
















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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

















  • 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












1 Answer
1






active

oldest

votes


















0














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






share|improve this answer






















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



    );













    draft saved

    draft discarded


















    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









    0














    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






    share|improve this answer



























      0














      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






      share|improve this answer

























        0












        0








        0







        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






        share|improve this answer













        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







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Mar 25 at 15:13









        gbalduzzigbalduzzi

        2,7018 silver badges26 bronze badges




        2,7018 silver badges26 bronze badges


















            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.



















            draft saved

            draft discarded
















































            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.




            draft saved


            draft discarded














            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





















































            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







            Popular posts from this blog

            Obelisk of Theodosius Contents History Description Notes Bibliography Further reading External links Navigation menuAge of spirituality : late antique and early Christian art, third to seventh centuryOver 60 picturesObelisks of the World41°00′21.24″N 28°58′31.43″E / 41.0059000°N 28.9753972°E / 41.0059000; 28.97539727724550-7235741376235741376

            밀양 대씨 역사 각주 함께 보기 둘러보기 메뉴밀양 대씨

            1973년 목차 사건 문화 탄생 사망 노벨상 달력 둘러보기 메뉴