Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pyBKT: An Accessible Python Library of Bayesian Knowledge Tracing Models, Bardrinath+, EDM'20 #460

Open
AkihikoWatanabe opened this issue Jul 27, 2022 · 2 comments

Comments

@AkihikoWatanabe
Copy link
Owner

AkihikoWatanabe commented Jul 27, 2022

paper: https://arxiv.org/pdf/2105.00385.pdf
github: https://github.com/CAHLR/pyBKT

@AkihikoWatanabe
Copy link
Owner Author

pythonによるBKTの実装。scikit-learnベースドなinterfaceを持っているので使いやすそう。

@AkihikoWatanabe
Copy link
Owner Author

AkihikoWatanabe commented Aug 16, 2022

モチベーション

BKTの研究は古くから行われており、研究コミュニティで人気が高まっているにもかかわらず、アクセス可能で使いやすいモデルの実装と、さまざまな文献で提案されている多くの変種は、理解しにくいものとなっている。そこで、モダンなpythonベースドな実装としてpyBKTを実装し、研究コミュニティがBKT研究にアクセスしやすいようにした。ライブラリのインターフェースと基礎となるデータ表現は、過去の BKTの変種を再現するのに十分な表現力があり、新しいモデルの提案を可能にする。 また、既存モデルとstate-of-the-artの比較評価も容易にできるように設計されている。

BKTとは

BKTの説明は #461 あたりを参照のこと。
BKTはHidden Markov Model (HMM) であり、ある時刻tにおける観測変数(問題に対する正誤)と隠れ変数(学習者のknowledge stateを表す)によって構成される。パラメータは prior(生徒が事前にスキルを知っている確率), learn (transition probability; 生徒がスキルを学習することでスキルに習熟する確率), slip, guess (emission probability; スキルに習熟しているのに問題に正解する確率, スキルに習熟していないのに問題に正解する確率)の4種類のパラメータをEMアルゴリズムで学習する。
image
ここで、P(L_t)が時刻tで学習者がスキルtに習熟している確率を表す。BKTでは、P(L_t)を観測された正解/不正解のデータに基づいてP(L_t)をアップデートし、下記式で事後確率を計算する
image
また、時刻t+1の事前確率は下記式で計算される。
image
一般的なBKTモデルではforgettingは生じないようになっている。
image

Corbett and Andersonが提案している初期のBKTだけでなく、さまざまなBKTの変種も実装している。

サポートしているモデル

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant