对我的计划的建议——学生和成绩的大型数据集,希望对后 2% 的人进行分类
Advice for my plan - large dataset of students and grades, looking to classify bottom 2%
我有一个数据集,其中包括全国学生的社会经济指标及其成绩。更具体地说,这个数据集有 36 个变量,大约 3000 万学生作为预测变量,然后学生评分作为响应。
我的目标是能够预测学生是否会不及格(即在成绩方面处于全国倒数 2%)。我知道 class 不平衡数据集 (98% : 2%) 的化会引入偏差。根据一些研究,我计划通过增加少数 class 中错误 class 化的成本来解决这个问题 class.
有人可以确认这是正确的方法吗(没有更好的方法,我假设有)?而且,考虑到这个数据集的性质,有人可以帮我选择一个机器学习算法来完成这个吗?
我正在 Google Colab 中使用 TensorFlow 2.0。我使用 pandas 将所有数据一起编译成一个 .feather 文件。
在数据集不平衡的情况下,使用加权 class 是最常用的方法,但是对于二进制文件来说,有如此大的数据集(30M 训练示例) class化问题表示第一个 class 为 2%,第二个为 98%,我可以说很难防止模型 公正 反对第一个class 使用加权 class 因为它与减少训练集大小以达到平衡没有太大区别。
这里是模型精度评估的一些步骤。
将您的数据集拆分为训练集、评估集和测试集。
对于评估指标,我建议使用这些替代方案。
a. 确保至少有+20%,代表两者的第一个class
评估和测试集。
b. 将评估指标设置为精度和召回率以提高模型准确性
(而不是使用 f1 分数)。
c. 将评估指标设置为 Cohen 的 kapp 分数(系数)。
从我自己的角度来看,我更喜欢使用b。
既然你用的是tensorflow,我假设你对深度学习很熟悉。所以使用深度学习而不是机器学习,这使您能够拥有许多其他选择,无论如何,这里有一些机器学习和深度学习方法的步骤。
对于机器学习算法
- 决策树算法(尤其是随机森林)。
- 如果我的特征没有相关性,相关性接近于零(即0.01),
我将尝试 补充朴素贝叶斯 class 化器以获得 多项式特征
或 高斯朴素贝叶斯 使用 加权 class 用于 连续特征 。
- 尝试一些非参数学习算法。你可能不适合这个
使用支持向量机 (SVM) 的训练集很容易因为你
不知何故有大数据集,但你可以试试。
- 尝试无监督学习算法
(这有时会给你更多 generic 模型)
对于深度学习算法
- 编码器和解码器架构或简单的生成对抗
网络(GAN)。
- 连体网.
- 使用 1D 卷积 层训练模型。
- 使用加权 class.
- 训练集的平衡批次,随机选择。
你还有很多其他选择,从我自己的角度来看,我可能会努力尝试1、3或5。
对于深度学习,第 5 种方法有时效果很好,我建议尝试使用第 1、3 种方法。
我有一个数据集,其中包括全国学生的社会经济指标及其成绩。更具体地说,这个数据集有 36 个变量,大约 3000 万学生作为预测变量,然后学生评分作为响应。
我的目标是能够预测学生是否会不及格(即在成绩方面处于全国倒数 2%)。我知道 class 不平衡数据集 (98% : 2%) 的化会引入偏差。根据一些研究,我计划通过增加少数 class 中错误 class 化的成本来解决这个问题 class.
有人可以确认这是正确的方法吗(没有更好的方法,我假设有)?而且,考虑到这个数据集的性质,有人可以帮我选择一个机器学习算法来完成这个吗?
我正在 Google Colab 中使用 TensorFlow 2.0。我使用 pandas 将所有数据一起编译成一个 .feather 文件。
在数据集不平衡的情况下,使用加权 class 是最常用的方法,但是对于二进制文件来说,有如此大的数据集(30M 训练示例) class化问题表示第一个 class 为 2%,第二个为 98%,我可以说很难防止模型 公正 反对第一个class 使用加权 class 因为它与减少训练集大小以达到平衡没有太大区别。
这里是模型精度评估的一些步骤。
将您的数据集拆分为训练集、评估集和测试集。
对于评估指标,我建议使用这些替代方案。
a. 确保至少有+20%,代表两者的第一个class 评估和测试集。
b. 将评估指标设置为精度和召回率以提高模型准确性 (而不是使用 f1 分数)。
c. 将评估指标设置为 Cohen 的 kapp 分数(系数)。
从我自己的角度来看,我更喜欢使用b。
既然你用的是tensorflow,我假设你对深度学习很熟悉。所以使用深度学习而不是机器学习,这使您能够拥有许多其他选择,无论如何,这里有一些机器学习和深度学习方法的步骤。
对于机器学习算法
- 决策树算法(尤其是随机森林)。
- 如果我的特征没有相关性,相关性接近于零(即0.01), 我将尝试 补充朴素贝叶斯 class 化器以获得 多项式特征 或 高斯朴素贝叶斯 使用 加权 class 用于 连续特征 。
- 尝试一些非参数学习算法。你可能不适合这个 使用支持向量机 (SVM) 的训练集很容易因为你 不知何故有大数据集,但你可以试试。
- 尝试无监督学习算法 (这有时会给你更多 generic 模型)
对于深度学习算法
- 编码器和解码器架构或简单的生成对抗 网络(GAN)。
- 连体网.
- 使用 1D 卷积 层训练模型。
- 使用加权 class.
- 训练集的平衡批次,随机选择。
你还有很多其他选择,从我自己的角度来看,我可能会努力尝试1、3或5。
对于深度学习,第 5 种方法有时效果很好,我建议尝试使用第 1、3 种方法。