9300个案例并不多,这甚至不属于大数据领域或任何你必须应用特殊技术的领域。
此外,考虑到更受限制的功能集,除非您在实际的砖块或 Atari 上工作,否则几乎不会遇到计算问题。作为一个基准测试示例,我能够在不到 10 分钟的时间内在我的 16gb 笔记本电脑上为 >4M 案例拟合具有多达 20-30 个功能(有些具有约 40 个级别)的模型。
因此,让我们关注真正的问题,即数据的复杂性,即可用功能/功能级别的数量以及最重要的高效代码。
假设您没有资源简单地在这个问题上投入一些云处理能力并收工,我们必须限制复杂性。
请注意,这并不意味着“对数据进行采样”,这表明仅使用案例的子集,正如开头所说,这不是您的问题。
相反,让我们讨论减少计算要求的方法:
1.优化你的代码
这听起来很简单,但要研究并确保您使用最适合这项工作的软件包,正确调整参数并减少代码中的脂肪。这是一项艰苦的工作,但这是必要的,也是值得的。
例如,您是否检查过所有代码是否尽可能多地并行化并在所有 CPU 上运行?
2.优化你的数据结构
从计算上讲,因子水平通常不是问题,但即使如此,>100 的水平也可能难以理解。尝试通过例如将某些因子级别组合在一起来转换您的数据。还可以尝试将部分数据进行透视,例如从宽数据到长数据。
3. 使用你的领域知识
您肯定了解您的业务和这个问题。不要只是把所有的数据都扔给它!想一想,删除不必要的或重复的列。
4. 向上工作
ML 建模有一个简单的衡量标准,如果经过验证的预测质量很好,那么您的模型就是好的。如果你设法用两个变量做到这一点,没人会在意。
因此,从一个包含所有案例的基本数据集开始(这里仍然要记住拆分样本验证),但只有 2-3 个最简单、最相关的预测变量(基于领域知识)以及因变量。
安装一个模型并检查它的质量,它是否足够好?是的,你完成了!如果不包括下一轮变量...
5. 模块化你的 EDA 并有耐心
我不能过分强调你的数据集真的没有那么大或复杂,所以首先优化你的代码。但是,如果需要基本 EDA 来找到最佳功能仍然需要很长时间,请执行以下操作:
通过例如仅对列的块进行PCA(再次使用所有情况,但仅使用变量的子集)来构建和模块化您的代码。
让它一个接一个地运行,如果代码运行一个小时,请耐心等待,有时就是这样。
查看结果,比较并决定如何合并结果。
6. 和你的老板谈谈
是的,我说我假设你没有资源来投入更多的力量,但如果这是一个重要的业务问题,那么应该有用于云计算的资源。在 AWS 上拟合模型非常便宜,只需几秒钟,所以实际上我们在这里讨论的是 <100 美元来训练多个模型。
如果您没有老板为这些东西付费或他不想付费,请尝试免费资源。有很多基于云的服务提供足够的免费 GPU 或 CPU 时间,您应该能够适应模型。