如何通过重复观察在大数据上拟合层次模型

Posted

技术标签:

【中文标题】如何通过重复观察在大数据上拟合层次模型【英文标题】:How to fit hierarchical models on big data with repeated observations 【发布时间】:2020-07-22 21:28:02 【问题描述】:

我正在处理在线行为数据,其中每个用户都有多次伯努利试验。我熟悉在 R 中使用 lme4 拟合分层模型,但现在我的数据集有约 1MM 的唯一用户和 1-10 个观察值,lme4 模型在我的 Macbook Pro 上无休止地运行。我以前只为几千名用户拟合过这样的模型,而且运行时间是可控的。

library(lme4)
glmer(outcome ~ treatment + (1|user_id), family = 'binomial', data = mydata)

实际上我如何才能将分层模型拟合到如此大的数据集?

【问题讨论】:

【参考方案1】:

有几种方法可以加快glmer

尝试在glmer 调用中设置nAGQ = 0 尝试在glmerControl 中指定"nloptwrap" 作为优化器 尝试在glmerControl 中指定calc.derivs = F

More info here

# code example
glmer(
    outcome ~ condition + (1|user_id),
    family = "binomial", 
    data = mydata, 
    nAGQ = 0,
    control = glmerControl(optimizer = "nloptwrap", calc.derivs = FALSE)
)

【讨论】:

以上是关于如何通过重复观察在大数据上拟合层次模型的主要内容,如果未能解决你的问题,请参考以下文章

如何在大数据集上训练分词器?

在大数据量时,K-means算法和层次聚类算法谁更有优势

拟合贝叶斯线性回归并预测不可观察的值

Scikit 和 Pandas:拟合大数据

过拟合(overfitting)

是否会导致过度拟合/维度诅咒