我很难确定评估算法,比如同行评审的研究论文。
上课:
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(这是被设置为最大值。
这个算法的问题在于,通过大量的同行评审,最终所有论文都会通过相对不常见的成绩变化接近同一年级,这有效地忽略了教师最初指定的成绩。
对于像这样的东西,有更好的算法吗?
答案 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--;
}
}
}
}
此代码的一个有趣的副作用是,您可以决定学生喜欢或不喜欢哪些论文。在理想世界中哪个会给你类似以下的结果:
答案 1 :(得分:0)
如果您只是在同行评审与原始评分相反的方向上调整成绩,那么大量同行评审的唯一可能结果是他们最终得到相同的评分。
您是否准备通过比较而不是成绩来进行同行评审?问题是这样的系统也会对原始等级相差很远/非常接近的论文产生偏见。
也许同行评审也可以像普通成绩一样成绩。分开存放;如果论文有足够的同等成绩,则可以将其与原始成绩进行平均,但是在多较低的有效性水平上;也许100:1甚至。
如果您打算使用任何类型的系统,我也认为您可能需要更高的等级精度。