首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较计分算法

比较计分算法
EN

Stack Overflow用户
提问于 2010-12-08 13:29:14
回答 2查看 619关注 0票数 2

我在为同行评议的研究论文确定评分算法时遇到了棘手的问题。

以这个类为例:

代码语言:javascript
复制
public class ResearchPaper
{
    int StudentID;
    int PaperID;
    string Title;
    byte Grade;
}

Grade是从0到100 (F到A+)的分数,最初是由教师指定的。

在分配分数后,可以通过论文比较(间接)由同行的反馈进行修改。如果一个同龄人说论文B(75分)比论文A(80分)好,那么论文A会失去一分(新的79分),而论文B会获得一分(新的76分)。这可能会发生成千上万次,试卷B可能会比试卷A获得更好的分数(这很好)。

我的计划是,如果同行评审同意论文A实际上比论文B(老师给他们评分的方式)更好,或者论文A会在失控的过程中获得分数,直到达到100分(设置为最大分数),则不会更改分数。

这种算法的问题是,在大量同行评议的情况下,最终所有试卷都会通过相对不常见的成绩变化达到相同的成绩,这实际上会忽略老师最初分配的成绩。

对于这样的事情,有没有更好的算法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-08 13:51:34

我认为你有一个很好的系统,但我会让Grade成为sbyte,并将同行评审与初始评分分开。如果你有超过100篇论文,而没有一篇论文被选中获得赞成票,如果你不使用有符号的值,你将会遇到严重的班级士气问题。

代码语言:javascript
复制
public class ResearchPaper
{
    int StudentID;
    int PaperID;
    string Title;
    sbyte InitialGrade;
    sbyte PeerRating;

    public sbyte Grade
    {
        get
        {
            return (InitialGrade + PeerRating);
        }
    }
}

public class PaperGrader
{
    List<ResearchPaper> Papers;

    public PaperGrader(List<ResearchPaper> Papers)
    {
        this.Papers = Papers;
    }

    public void Vote(int Id)
    {
        foreach (ResearchPaper Paper in Papers)
        {
            if (Paper.PaperID == Id)
            {
                Paper.PeerRating++;
                continue;
            }
            else
            {
                Paper.PeerRating--;
            }
        }
    }
}

这段代码的一个有趣的副作用是,您可以决定学生最喜欢或最不喜欢的论文。在理想情况下,它会给出类似如下的结果:

票数 1
EN

Stack Overflow用户

发布于 2010-12-08 13:56:59

如果只在同行评审与原始成绩的比较方向相反的情况下调整成绩,那么大量同行评审的唯一可能结果是它们最终得到相同的成绩。

你是通过比较而不是通过评分来进行同行评审的吗?问题是,这样的系统也会对原始分数相差很远/非常接近的试卷产生偏见。

也许同行评议也可以是像正常评分一样的评分。将它们分开存储;如果一篇论文有足够的同行评分,它们可以与原始评分进行平均,但有效性要低得多;甚至可能是100:1。

我还认为,如果你要做这样的系统,你可能想要更高级别的评分精度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4384467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档