随时间更新逻辑回归中的分类概率

机器算法验证 时间序列 机器学习 物流
2022-02-05 13:08:16

我正在建立一个预测模型来预测学生在学期结束时的成功概率。我对学生是成功还是失败特别感兴趣,成功通常被定义为完成课程并在可能的总分中获得 70% 或更多分。

当我部署模型时,随着更多信息的可用,成功概率的估计需要随着时间的推移而更新 - 理想情况下是在发生某些事情后立即进行,例如当学生提交作业或获得成绩时。这种更新对我来说听起来有点贝叶斯,但考虑到我在教育统计方面的训练,这有点超出我的舒适区。

到目前为止,我一直在使用逻辑回归(实际上是套索)和包含基于周的快照的历史数据集。该数据集具有相关的观察值,因为每个学生都有观察值;一名学生的观察结果是相关的。我并没有专门对特定学生每周观察中的相关性进行建模。我相信我只需要在推理环境中考虑这一点,因为标准错误太小了。我认为 - 但不确定这一点 - 相关观察引起的唯一问题是,当我交叉验证以将聚类观察保留在数据的一个子集中时,我需要小心,这样我就不会得到基于对模型已经见过的人的预测,人为地降低样本外错误率。TermLength/7

我正在使用R 的 glmnet 包做一个带有逻辑模型的套索,以生成成功/失败的概率,并自动选择特定课程的预测变量。我一直使用周变量作为一个因素,与所有其他预测变量相互作用。我认为这通常与仅估计单个基于周的模型没有什么不同,只是它提供了一些概念,即在整个学期中可能存在一些通用模型,该模型在不同周通过各种风险调整因素进行调整。

我的主要问题是:有没有更好的方法来随着时间的推移更新分类概率,而不是仅仅将数据集划分为每周(或其他基于间隔)的快照,引入与其他所有特征交互的时间段因子变量,以及使用累积功能(累积积分、累积上课天数等)?

我的第二个问题是:我在这里是否遗漏了一些关于具有相关观察的预测建模的关键信息?

我的第三个问题是:鉴于我正在做每周快照,我如何将其推广到实时更新?我打算只为当前的每周间隔插入变量,但这对我来说似乎很笨拙。

仅供参考,我接受过应用教育统计方面的培训,但很久以前就有数学统计方面的背景。如果有意义的话,我可以做一些更复杂的事情,但我需要用相对容易理解的术语来解释它。

2个回答

你不能从这里到达那里。您需要从不同的模型开始。我会保留每周的快照,并围绕每个学生的状态变量中的转换建立一个随机模型。假设有 10 周,给出 11 个“决定”点, t_n。t_i处的状态,其中为 1 或 0,取决于学生是否注册; 并且是该点的分数(迄今为止的测试和家庭作业分数的总和)。初始值为。您需要担心两个转换:的分布。t0,t1,,tnti(Zi,Si)ZiSi(1,0)Prob(zi=0|si1)Si

辍学概率不是固定的,因为您将在最终的无惩罚辍学日期之前获得大量辍学。但是你可以从过去的数据中估计这些。你也可以根据当前(惨淡的)表现来估计辍学的概率。

分数是对二项式结果的随机游走(例如,在 n 个项目的测试中正确答案的数量您可能可以假设条件独立——假设每个学生都有一个潜在的“天赋”参数,并且以该值为条件,每个新分数都与当前表现无关。你可以根据你的历史数据来检验这个假设……失败的学生会改变他们的学习习惯并取得胜利吗?但是大多数学生的行为都是真实的……所以一个有条件的独立模型应该可以正常工作。Sn

因此,基本上,如果分数转变为 0,或者分数未能超过 70% 及格阈值,学生就会失败。ZS

让我们更仔细地看一下过程。为了简化模型,假设评估涉及从每周从 10 个测试项目中获得的总共 100 个可能的分数中获得 70 分或更多分。S

在基线上,学生的通过概率就是上一课的通过率。

在时间 1,学生已获得分(或辍学)。如果他能在 90 分中获得至少分,他就通过了。这是一个二项式问题,如果我知道学生成功的概率,我可以很容易地计算出这个问题。这将不再是“班级平均水平”;我需要根据学生迄今为止的成功进行调整。我会使用过去经验中的表格,但您可以对整体课程成功率和学生的个人成功进行加权平均。贝叶斯法则在这里应该有所帮助。S170S1

作为奖励,您可以计算一系列概率,随着学期的进行,该范围应该会缩小。事实上,优秀的学生会在学期结束前突破 70% 的大关,届时他们的成功将是确定无疑的。对于弱势学生来说,失败也将在结束前成为必然。

RE:问题3。你应该去连续时间吗?我不会,因为这使人处于连续时间随机过程的领域,并且所涉及的数学高于我的工资等级。不仅如此,您不太可能得到截然不同的结果。

升级我所概述的模型的最佳方法不是去连续时间,而是根据先前的经验调整转换概率。也许弱学生比独立模型预测的更落后。结合非同质性将比从离散时间变为连续时间更能改进模型。

当我为类似类型的部署训练预测模型时,我会确保我的数据集有某种 Term_End_Date,这样我就可以推算到学期结束的剩余时间长度。这可能最终会成为您模型中的重要预测因素。

关于相关观察的问题,我认为您拥有的数据存储库有多大很重要。如果可能的话,我会为每个学生随机选择 1 个观察值,按 [直到学期结束的周数] 分层。如果可能的话,我也会从旧条款中获取信息。如果您没有足够的数据来执行此操作,也许您可​​以尝试像 bootstrap 这样的重新采样方法。

我认为如果你有一个小数据集,最重要的是保留足够的数据作为保留,以确保你的最终模型是稳定的。

我想当你们都完成了,并且有了一个评分公式,它就会很容易实现。但是,是的,您仍然应该插入计算分数所需的每周 x 变量——但这听起来更像是一个数据收集问题,而不是关于模型实现的问题。