iT邦幫忙

2021 iThome 鐵人賽

DAY 25
0

如同前幾天所說
「估計戰力」是可以依照想看的不同能力去做的
例如我們把題目先依照章節進行分類
再去看看學生在不同章節下的能力
就可以用這個方法去做


學生戰力資料庫

可以先創建一個試算表的分頁
並依喜好命名,此分頁的工作就是當作學生戰力的資料庫

基本欄位就是
UID、學生姓名、能力欄位(對我而言,即章節名稱)
如果是第一次測驗
可以取初始值為0


更新學生戰力

若不選擇使用答對率作為題目戰力的估計
可以把題目的初始值也設為0

const K = 10; // 更新Elo時的敏感參數,太小則不好收斂,太大則不夠穩定

function correctProb(elo, ques_diff, choice_num){
  var guess; // 猜測度
  if (choice_num!=0){
    guess = 1/choice_num;
  } else{
    guess = 0;
  };
  return guess + (1-guess)/(1+Math.exp(-(elo - ques_diff)));
}

function refreshElo(correct, elo, ques_diff, choice_num){
  var prob = correctProb(elo, ques_diff, choice_num);
  return K*(correct - prob);
}

其中,elo : 學生戰力,ques_diff : 題目難度,choice_num : 選項數
最後回傳的 K*(correct - prob) 就是要更新的幅度
學生為 elo := elo + K*(correct - prob)
題目難度為 ques_diff := ques_diff + K*(correct - prob)


除了用章節當作能力外
也可以考慮用知識、了解、評鑑什麼的六個指標(我已經忘了哪些了~XD)
不過要用這些指標的話
同時在自己的題目中也要標籤出這些指標
對我來說太麻煩所以我只對章節進行能力估計~


上一篇
[DAY 24] Elo Rating II
下一篇
[DAY 26] 用google sheet 做簡易UI介面(1/3)
系列文
一份考卷不夠你可以出兩份!用 google apps script 出線上考題30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言