在 Kaggle 中竞争时避免硬件限制?

数据挖掘 scikit-学习 卡格尔
2021-10-01 19:59:44

我通过教科书和示例学习了机器学习,但没有深入研究处理像 Kaggle 这样的“大”数据所面临的工程挑战。

作为一个具体的例子,我正在研究纽约出租车旅行挑战这是一项针对约 200 万行和 20 列的回归任务。

我的 4GB-RAM 笔记本电脑几乎无法在 Jupyter Notebook 中pandas执行EDA。matplotlib但是,当我尝试用 1000 棵树构建一个随机森林时,它会挂起(例如 Jupyter Notebook 中的内核重启错误)。

为了解决这个问题,我设置了一个 16GB-RAM 的桌面。然后我 ssh 进入,启动一个无浏览器的 Jupyter Notebook 内核,并将我的本地 Notebook 连接到该内核但是,我仍然最大限度地使用那台机器。

此时,我猜测我需要将模型训练代码作为脚本运行。

  • 这对我的机器悬挂有帮助吗?
  • 存储模型结果并稍后用于预测的工作流程是什么?您是否使用 Makefile 来保持此可重现性?
  • 这样做也会牺牲 Jupyter Notebook 的交互性——是否有保持交互性的工作流程?

我目前的工具包是 RStudio、Jupyter Notebook、Emacs,但我愿意学习新东西。

1个回答
  • 是的 - Python 脚本的开销将低于 Jupyter Notebook
  • Pickle 是存储 scikit-learn 模型的标准方法,请参阅模型持久性文档
  • 扩展 Jupyter Notebooks 的两种主要方法是垂直(在云服务提供商处租用更大的机器)或水平(启动集群)。