Skip to content

Feature Request: Support for Incremental / Online Updates in pyBKT #55

@keikurono7

Description

@keikurono7

Problem: pyBKT is Batch-Oriented and Lacks Incremental Update Support

The current pyBKT architecture is fundamentally optimized for batch processing (Expectation-Maximization) using full, historical sequences of observation data. This design pattern severely limits the library's utility in real-time adaptive systems, live analytics, and any environment where model states must be updated sequentially based on streaming data.

Limitation: No Simple API for Updating State per Observation

The requirement to provide a full dataset for training and inference makes it inefficient or impractical for event-driven applications. Specifically, pyBKT does not offer a native mechanism to efficiently update an entity's latent state (e.g., knowledge, proficiency) after a single new observation. This forces developers to manually re-implement core BKT logic to handle incremental updates, reducing the core benefit of leveraging pyBKT's robust parameter fitting.

Why Incremental BKT Matters

The Bayesian Knowledge Tracing (BKT) algorithm is applicable across sequential tracking domains, including user modeling, performance tracking, and adaptive decision engines (beyond educational systems). Supporting an incremental or online BKT mode would transform pyBKT into a more general-purpose, scalable solution for any sequential Bayesian tracking task.

Proposed API Addition

I propose introducing a simple API method that updates an entity’s belief state using one new binary observation, effectively applying the BKT update equations using the pre-fitted model parameters (P(G), P(S), P(T)).

Example of Desired Functionality:

new_state = model.update_single_step(
    skill="Process_A_Mastery",
    prior_state_prob=0.65,
    observation_success=True
)

Expected Outcome: This feature would enable robust, real-time belief tracking and significantly enhance pyBKT's compatibility with modern data streams and adaptive production environments.

I would like to work on this feature under the tag of Hacktoberfest

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions