我的计划建议-大量的学生和年级数据集,希望对最低2%的学生进行分类

问题描述 投票:2回答:1

我有一个数据集,其中包含全国学生及其成绩的社会经​​济指标。更具体地说,此数据集包含36个变量,其中约有3000万学生作为预测变量,然后学生的评分作为响应。

我的目标是能够预测学生是否会失败(即,就成绩而言,处于该国最底层的2%人口中)。我知道数据集不平衡(98%:2%)的分类会带来偏差。根据一些研究,我计划通过增加少数派类别中错误分类的成本来解决这一问题。

有人可以确认这是正确的方法吗(我认为没有更好的方法了吗?而且,鉴于此数据集的性质,有人可以帮助我选择一种机器学习算法来实现这一目标吗?

我正在Google Colab中使用TensorFlow 2.0。我已经使用熊猫将所有数据编译到一个.feather文件中。

python tensorflow machine-learning classification large-data
1个回答
0
投票

在数据集不平衡的情况下,使用加权类是最常见的方法,但是对于二进制分类问题,具有如此大的数据集(30M训练示例),代表第一类,而第二类则为98% ,我可以说很难防止使用加权类对模型进行unbiased对抗第一类,因为与减少训练集大小来保持平衡没有太大不同。

这里有一些模型准确性评估的步骤。


  1. 将数据集拆分为训练,评估和测试集。

  2. 对于评估指标,我建议使用这些替代方法。

    a。确保至少有+ 20%,代表两者的第二类评估和测试集。

    b。将评估指标设置为精度,并调出模型精度(而不是使用f1分数)。

    c。将评估指标设置为Cohen's kapp score(系数)。

    从我自己的角度,我更喜欢使用b


由于您正在使用张量流,所以我假设您熟悉深度学习。因此,使用深度学习而不是机器学习,无论如何,这使您能够有许多其他选择,这是机器学习和深度学习方法的一些步骤。

用于机器学习算法


  1. 决策树算法(尤其是随机森林)。
  2. 如果我的特征没有零相关性(即0.01),我将尝试多项式特征补全朴素贝叶斯分类器或Gaussian Naive Bayesweighted class用于continuous features
  3. 尝试一些nonparametric学习算法。您可能无法适应借助您,可以轻松地使用支持向量机(SVM)训练集具有某种程度的大数据集,但您可以尝试。
  4. 尝试无监督学习算法(这有时会为您提供更多generic模型)

用于深度学习算法


  1. Encoderdecoder体系结构或简单的生成对抗网络(GANs)。
  2. 暹罗网络
  3. 使用1D卷积层的训练模型。
  4. 使用加权类。
  5. 训练集的
  6. 平衡的批次,选择了[[随机。
您还有许多其他选择,以我个人的观点,我可能会尝试用1、3或5来获得它。

对于深度学习第五种方法有时效果很好,我建议尝试使用1、3。

© www.soinside.com 2019 - 2024. All rights reserved.