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

            Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

            SQL error code 1064 with creating Laravel foreign keysForeign key constraints: When to use ON UPDATE and ON DELETEDropping column with foreign key Laravel error: General error: 1025 Error on renameLaravel SQL Can't create tableLaravel Migration foreign key errorLaravel php artisan migrate:refresh giving a syntax errorSQLSTATE[42S01]: Base table or view already exists or Base table or view already exists: 1050 Tableerror in migrating laravel file to xampp serverSyntax error or access violation: 1064:syntax to use near 'unsigned not null, modelName varchar(191) not null, title varchar(191) not nLaravel cannot create new table field in mysqlLaravel 5.7:Last migration creates table but is not registered in the migration table

            은진 송씨 목차 역사 본관 분파 인물 조선 왕실과의 인척 관계 집성촌 항렬자 인구 같이 보기 각주 둘러보기 메뉴은진 송씨세종실록 149권, 지리지 충청도 공주목 은진현