使用 ML 对纵向数据进行分类预测

Posted

技术标签:

【中文标题】使用 ML 对纵向数据进行分类预测【英文标题】:Classification prediction with ML for longitudinal data 【发布时间】:2020-06-29 22:58:01 【问题描述】:

我有一个正在处理的项目,我不允许给出实际示例,所以我将使用代理示例。

我们拥有数月以来许多驾驶学生的数据。

对于每次观察(学生和月份),我们记录了许多变量,例如学习时间、智商、家庭收入等,以及一个虚拟变量,如果学生在该月通过考试,则为真,如果通过,则为假不是。

我想使用所有这些数据来预测未来几个月学生在该月通过的可能性。

例如,对于接下来的 6 个月,我们应该知道在任何给定月份,任何给定学生通过考试的可能性有多大。

我最初的研究表明 LSTM 可能是最好的方法。我希望使用 Python,有人可以为我指明一些第一步或指导的方向吗?

其他注意事项:

学生可以随时开始学习 通过测试的学生将不再被记录

【问题讨论】:

你在建模之前有没有花一些时间做数据分析?你真的觉得需要从你的样本中“顺序”理解(因此建议使用 LSTM)来预测这种可能性吗?我可以看到你有多种特征,一些是连续的(每月时间戳),而另一些应该在整个期间保持不变(智商,家庭收入):我弄错了吗? @Arnaud 我做了,是的,有一些相当明显的趋势,其中一些指标尤其是连续指标。收入或智商等其他因素也包括在内,因为我认为可能存在一些互动效应。 【参考方案1】:

这是一个非常广泛的问题。这是我对此的分析。

问题设置

监督分类问题是Xs 和y 的问题。在你的情况下,如果我理解得很好,这里有一个Xy 的例子:

X 包含给定用户的所有可用静态和顺序数据:
X = [iq, income, time_spent_m-2, time_spent_m-1, time_spent_m]
     - static -  -------------------- sequential -------------

/!\ 不同的用户会有不同的历史数据。请记住,您必须决定无论如何都要使用的固定向量大小(例如 M=15),并练习 填充

y 是未来 6 个月的概率分布,试图找出学生何时通过考试:
y = [0.1, 0.1, 0.4, 0.2, 0.1, 0.1]  # should sum to 1?

--> X 的大小是可变的,而y 的大小是固定的。

训练数据

您可以利用所有通过和未通过测试的用户作为训练数据。而且,每个月都会翻译。如果您通常从用户那里收集数据超过六个月,通常会有很多 ys,因此是 [0, 0, 0, 0, 0, 0],这意味着 您的最后一层不能像我之前假设的那样总和为一个。注意,训练数据可能有点不平衡(很多零,很少零)。

型号 LSTMs 确实是一个适合序列到序列关系的模型。网上有很多教程可以根据您选择的框架开始使用它们。 Python 中用于深度学习的著名框架是 Keras(在 TensorFlow 之上)和 PyTorch。

希望对您有所帮助。

【讨论】:

以上是关于使用 ML 对纵向数据进行分类预测的主要内容,如果未能解决你的问题,请参考以下文章

SPARK ML,朴素贝叶斯分类器:一类的高概率预测

我如何在ML中对评论进行分类?

如何在 2 列上训练 ML 模型以解决分类问题?

如何将实体主键映射到 Spark ML 预测?

如何为包含大量异常值的 ML 分类任务准备 IOT 数据?

在 spark ML 2.2.0 中使用 sklearn-python 模型进行预测