比较评分算法

时间:2010-12-08 05:29:14

标签: c# algorithm

我很难确定评估算法,比如同行评审的研究论文。

上课:

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(这是被设置为最大值。

这个算法的问题在于,通过大量的同行评审,最终所有论文都会通过相对不常见的成绩变化接近同一年级,这有效地忽略了教师最初指定的成绩。

对于像这样的东西,有更好的算法吗?

2 个答案:

答案 0 :(得分:1)

我认为你有一个非常好的系统,但我会Grade一个sbyte并将同行评审与初始评分分开。如果你有超过100篇论文,并且没有选择一篇论文作为upvote,如果你不使用签名值,你将会遇到严重的课堂士气问题。

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

此代码的一个有趣的副作用是,您可以决定学生喜欢或不喜欢哪些论文。在理想世界中哪个会给你类似以下的结果: Ideal Results

答案 1 :(得分:0)

如果您只是在同行评审与原始评分相反的方向上调整成绩,那么大量同行评审的唯一可能结果是他们最终得到相同的评分。

您是否准备通过比较而不是成绩来进行同行评审?问题是这样的系统也会对原始等级相差很远/非常接近的论文产生偏见。

也许同行评审也可以像普通成绩一样成绩。分开存放;如果论文有足够的同等成绩,则可以将其与原始成绩进行平均,但是在较低的有效性水平上;也许100:1甚至。

如果您打算使用任何类型的系统,我也认为您可能需要更高的等级精度。