在机器学习(ML)领域,批量学习和在线学习是两种处理日益爆炸性增长数据的主要方法。Twitter每天产生超过12TB的数据,Facebook每天产生超过25TB,而Google的数据量则更加庞大。这些数据的持续产生迫切要求我们开发出能够处理和分析大批量数据的工具。 批量学习是指按照固定时间间隔,如每周、每两周、每月或每季度等对模型进行训练的过程。在这种模式下,模型不能逐步学习,而是必须在每次训练时使用所有可用的数据。批量学习的特点是模型一旦经过训练,就无法持续地从新数据中学习,因此需要较长的时间和更多的计算资源来对整个数据集重新训练。批量学习又被称为离线学习,只有当新数据训练出的模型表现良好时,这些模型才会定期投入生产环境。
在线学习是一种随着数据的顺序到达而更新模型的方法,与一次性使用全部训练数据集的批量学习技术形成对比。在线学习在数据量巨大到无法一次性处理的情况下尤为常见,此时需要用到超核心算法(out-of-core algorithms)。在线学习还适用于需要算法动态适应数据新模式的场景,比如随时间变化的数据,例如股票价格预测。在线学习算法可能会遭遇灾难性干扰,但增量学习方法能够有效解决这一问题。 超核心学习(Out-of-core learning)是指机器学习算法处理无法一次性装入单个机器内存的数据,而是存储在本地硬盘或网络存储库中的情况。
例如:Netflix 训练模型并将模型从开发阶段转移到生产阶段以根据偏好预测电影。但在部署后的一个小时内,Netflix收到了很多新电影,而这些新电影并没有进行训练。在这种情况下,Netflix需要再次将模型带回开发阶段,重新训练它,并通过替换旧模型将其发送到生产环境。这就是批量学习的情况,在这种情况下,模型会失败。 因此,在这种情况下,只有在生产阶段频繁积累新数据时,才使用在线学习。 算法-随机梯度下降(Stochastic Gradient Descent),它与线性回归相同,但它可以遵循在线学习使用partial_fit函数。每当有新数据点累积时,你可以调用partial_fit函数。它比离线学习需要的时间少。 用于在线学习的另一个库是 River 和 Vowpal Wabbit。 在线学习的优缺点 优点: 1)如果数据频繁积累非常有用,例如股票交易所 2)成本效益高,因为它使用的资源较少。 3)快速 缺点: 1)使用起来比较棘手 2)有风险(如果黑客试图在线上放置有偏见的数据,防止这种情况 — 检测异常,将服务器回滚到旧状态) |
|