我有一个大数据集的大数据问题(例如,有5000万行和200列)。该数据集由大约100个数字列和100个分类列以及代表二进制类问题的响应列组成。每个分类列的基数小于50。
我想先验地知道我应该选择深度学习方法还是基于集成树的方法(例如,梯度增强,adaboost或随机森林)。是否有一些探索性的数据分析或其他一些技术可以帮助我确定一种方法而不是另一种方法?
我有一个大数据集的大数据问题(例如,有5000万行和200列)。该数据集由大约100个数字列和100个分类列以及代表二进制类问题的响应列组成。每个分类列的基数小于50。
我想先验地知道我应该选择深度学习方法还是基于集成树的方法(例如,梯度增强,adaboost或随机森林)。是否有一些探索性的数据分析或其他一些技术可以帮助我确定一种方法而不是另一种方法?
Answers:
为什么要限制自己使用这两种方法?因为他们很酷?我总是从简单的线性分类器\回归器开始。因此,在这种情况下,线性SVM或逻辑回归,最好使用算法实现,由于数据量大,可以利用稀疏性。在该数据集上运行DL算法将花费很长时间,而且我通常只会尝试对专家问题进行深度学习,这些专家问题包括数据中的某些层次结构,例如图像或文本。对于许多较简单的学习问题而言,这是矫kill过正,并且需要花费大量的时间和专业知识来学习,而且DL算法的训练非常缓慢。此外,仅因为您有5000万行,并不意味着您需要使用整个数据集才能获得良好的结果。根据数据,样本行数为100,000或数百万,您可能会获得良好的结果。我将从一个小样本和一个线性分类器开始,从简单开始,如果结果不令人满意,则从那里开始变得更加复杂。至少这样,您将获得基准。我们经常发现简单的线性模型可以在大多数任务上执行更复杂的模型,因此您希望始终从那里开始。
除了其他答案(注释中有一些很好的链接)之外,还取决于问题是什么或您想回答哪种问题。由于我只能根据自己的经验提出建议,因此在进行分类任务时,可能会基于数据集中的类平衡严重限制可能的方法。
一旦您遇到了大于1:10左右的班级失衡,那么大多数分类方法就会停止工作。您将获得基于随机森林和神经网络(尚未尝试)的方法。我使用的类平衡在1:500到1:1000的范围内工作,但发现下采样或上采样均无效。幸运的是,我的数据集只有200万个变量的600万观测值,我能够在合理的时间内对整个集合运行增强树。
因此,直接回答您的问题:
您应该提出一系列问题,如果要分类,请检查目标变量的类平衡。
您应该检查所有数据中缺失值的分布(不是数学意义),并记录发现的内容。一些ML方法可以使用缺少值的方法,而其他方法则可以,但是您需要研究数据插补(它具有自己的一套规则,准则和问题)。
当您拥有如此庞大的数据集时,您可以使用任何统计和机器学习建模技术,强烈建议您这样做。正如其他人所建议的那样,我也建议从数据中抽取几百万个随机样本进行处理。由于这是一个分类问题,因此我将首先采用简单的分类技术,然后再使用更复杂的分类技术。逻辑回归非常好。
我想补充一点,生成模型也必须试用。朴素贝叶斯分类器是最简单的概率分类器之一,它在许多任务上都优于许多复杂的方法,例如支持向量机。您可以查看NB的此简单实现以及用于比较NB与逻辑回归的this链接。
可以将朴素贝叶斯(NB)分类器构建为基线模型,然后再使用任何机器学习技术,例如支持向量机(SVM)或多层感知器(MLP)。这里需要权衡的是,NB在计算上比MLP便宜,因此需要MLP更好的性能。
来到您的确切查询:深度学习和梯度树增强是非常强大的技术,可以为数据中的任何类型的关系建模。但是,如果您的情况是简单的逻辑回归或NB可以提供所需的准确性,该怎么办。因此,最好先尝试简单的技术并获得基准性能。然后就可以使用复杂的模型并与基线进行比较。