我在为同行评议的研究论文确定评分算法时遇到了棘手的问题。
以这个类为例:
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分(设置为最大分数),则不会更改分数。
这种算法的问题是,在大量同行评议的情况下,最终所有试卷都会通过相对不常见的成绩变化达到相同的成绩,这实际上会忽略老师最初分配的成绩。
对于这样的事情,有没有更好的算法?
发布于 2010-12-08 13:51:34
我认为你有一个很好的系统,但我会让Grade成为sbyte,并将同行评审与初始评分分开。如果你有超过100篇论文,而没有一篇论文被选中获得赞成票,如果你不使用有符号的值,你将会遇到严重的班级士气问题。
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--;
}
}
}
}这段代码的一个有趣的副作用是,您可以决定学生最喜欢或最不喜欢的论文。在理想情况下,它会给出类似如下的结果:

发布于 2010-12-08 13:56:59
如果只在同行评审与原始成绩的比较方向相反的情况下调整成绩,那么大量同行评审的唯一可能结果是它们最终得到相同的成绩。
你是通过比较而不是通过评分来进行同行评审的吗?问题是,这样的系统也会对原始分数相差很远/非常接近的试卷产生偏见。
也许同行评议也可以是像正常评分一样的评分。将它们分开存储;如果一篇论文有足够的同行评分,它们可以与原始评分进行平均,但有效性要低得多;甚至可能是100:1。
我还认为,如果你要做这样的系统,你可能想要更高级别的评分精度。
https://stackoverflow.com/questions/4384467
复制相似问题