Code Monkey home page Code Monkey logo

bm_model's Introduction

Bayesian Measurement Models for Online Sparse Settings

The rise of popular mobile education applications produced data where a large number of students answers a small subset of items in a large question bank. Traditional linking approaches from the education measurement literature cannot scale to this context.

We propose and evaluate a set of models designed to overcome traditional limitations. The models take advantage of factorization techniques and Bayesian variational inference to meet the needs of this context.

Author:

Zhaolei (Henry) Shi -- [email protected]

Introduction

Our code base leverage Pyro's infrastructure for Bayesian stochastic variational inference.

We implement the following models, Y_ij = 1 denotes that student i responded correctly to question j:

  1. 2param model: p( Y_ij = 1 | theta_i, alpha_i, beta_j) = 1 / (1 + exp(- alpha_j * (theta_i - beta_j))
  2. Factorization model: p(Y_ij = 1 | theta_i, delta_j, beta_j) = 1 / (1 + exp(- (inner_prod(theta_i, delta_j) - beta_j))
  3. Hierarchical model: similar to the factorization model, but now delta_j is replaced with the concatenation of 1) a vector of trainable parameters, 2) one or more matmul(H, X_j), the matrix transformations of observed question characteristics. H is a matrix of trainable parameters.

Code structure

  • pyro_model.py implements the models and the likelihood functions.
  • holder.py wraps models in Model classes to allow for easy training and prediction, also contains classes for data loaders.
  • dataset.py implements functions to parse the dataset and return the appropriate data loader.
  • experiment.py implements the experiment classes to automate training, auto-stop after convergence, and evaluation.
  • custom_tvt.py implements customized ways to divide the dataset into training, validation, and test sets (e.g. ensuring any question will show up in all three sets).
  • make_prediction.py creates predictions for learning curve analysis.
  • run_experiment.py creates models and data loaders and runs training and prediction.

Running an example

You can run the model on a small dataset using the following line in a terminal:

python run_experiment.py

Reading through run_experiment.py will give you a good sense of how the different pieces fit together.

Learning Pyro

To get a better sense of how Pyro works, you can follow the examples in pyro_tutorial (copied from Pyro's documentation). Also, consider reading through a minimal implementation of Pyro. This was instrumental for my own understanding of Pyro.

bm_model's People

Contributors

henrishi avatar

Stargazers

 avatar  avatar

bm_model's Issues

dissertation submission -- Henry's paper 3

This issue tracks the readying of paper 3 for Henry's dissertation submission:

  • revamp literature review with a survey of recent models and the competition
  • compare compuational performance against emIRT and VIBO
  • compare overall predictive performance against emIRT and VIBO
  • compare by knowledge label predictive performance against emIRT and VIBO

Workplan toward publication-ready draft

Workplan (pending ideation session with Susan on 06.21)

Ideas for further development of paper

  1. I propose a customized ELBO to make my models run even faster -- make the paper about computational gains with superior predictive performance
  2. Do more interpreting of the latents like we discussed in the defense -- make the paper about balancing prediction and interpretation.
  3. More fancy modeling, e.g. modeling teachers' effects as transformation matrix on the student latents -- make the paper to be about innovative modeling
  4. Wait on experimental results from smart-homework and publish together as one paper -- make this paper about ML + real-world experiment (maybe something similar to https://academic.oup.com/qje/article-abstract/133/1/237/4095198)

Predictive performance in Smart Homework application [Paper iteration]

@susanathey

Following in the applied direction for this paper. I investigated the predictive performance of the model used in the Smart Homework application (two-parameter model).

This application updated the model parameter on a weekly basis. This allows us to define a different test set than the previous sections. We're now using data from production in the week after each training as the test set, which better mirrors how other real-world applications would work.

This is the updated version of the paper, the new section is from pages 23 - 29. I'm primarily looking for some high-level feedback on whether this is a useful addition to keep in the paper before trying to refine it further.

Shi_bayesian_student_model_20211208.pdf

Next steps:

  1. Smart Homework used the two-parameter model, but I replicate the training scheme with other models to compare predictive performance using the same test set.
  2. Explore "elasticity" between different knowledge points using the best performing factorization model

Also tagging @shanjukta-nath on this. She has been graciously meeting with me to discuss ideas and results for the past months.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.