Python机器学习--在线学习(Online learning)与离线学习(Offline\Batch learning)区别

前言

机器学习领域中,可将机器学习算法分为在线学习和离线学习。最近在学习实时机器学习或者说增量学习相关的内容,今天使用creme这个库介绍下Online Learning的原理,以及Online Learning和Batch Learning的一些区别。

Online Learning和Batch Learning的区别

Batch就是目前常用的计算模式,需要离线数据,离线训练,离线评估,然后上线。也就是我们说的离线学习也通常称为批学习

离线学习的好处就是比较稳定,可以用大量数据集去训练和评估,如果模型效果不好也方便替换。

OnlineLearning更多地是一个实时运行的体系,实时有样本产生,实时提取特征并且和目标列拼接成样本,实时评估和训练。

 

Online Learning需要具备下述的几个特点:

  • 数据从流式数据源获取,比如Kafka、MQ

  • 可以对Mini Batch甚至单样本训练并产生新模型

  • 特征和目标可以实时生成并实时拼接成样本

Online Learning应用场景和优缺点

Online Learning优点很明显,就是可以对训练样本做实时的反馈。所以应用的场景也主要是互联网领域,对实时性要求很高的场景。在推荐广告领域,Online Learning后续非常有发挥的空间。

 Online Learning的优势就是实时产出模型,数据的时效性强。之所以没有大范围普及,主要因为劣势也很明显,运维成本会比较高。比如如何保证实时样本拼接的准确性、如何确保实时评估的准确、线上模型出现问题如何回滚等。所以,Online Learning还没有非常好的开源解决方案,今天介绍的creme只能解决部分问题。

 creme介绍

可以通过pip安装:pip install creme 

这是一个专注做Online Learning的库,目前还没有集成tf、pytorch的能力,所以现在creme是自己实现一些单机可运行的增量学习的算法,可以实现one sample粒度的训练。

一些数据量不大,或者是想了解Online Learning机制的同学比较推荐,如果是企业生产的化,还是要等基于TensorFlow或者其它成熟框架的mini batch这样训练的能力。

creme的代码可读性很强

from creme import linear_model
 
from creme import stream
 
X_y = stream.iter_csv('some/csv/file.csv')
 
model = linear_model.LogisticRegression()
 
for x, y in X_y:
 
  model.fit_one(x, y)
 

有一个stream库可以实现流式的IO,这里接Kafka也是可以的。单样本训练直接可以用fit_one,这个命名满直接的。

from creme import linear_model
 
from creme import metrics
 
from creme import stream
 
X_y = stream.iter_csv('some/csv/file.csv')
 
model = linear_model.LogisticRegression()
 
metric = metrics.Accuracy()
 
for x, y in X_y:
 
   y_pred = model.predict_one(x)
 
   model.fit_one(x, y)
 
   metric.update(y, y_pred)
 
   print(metric)

在评估的时候可以直接用metric.update函数去计算准确率,评估指标是通过真实的y值和预测出来的y_pred做对比。

下图展示的是creme已经支持的函数和算法:

总而言之,creme目前还是一个探索性的项目,在实际生产方面可能会有性能问题,不过是一个很好地了解Online Learning的材料。 

参考文献

1.刘成昊.在线学习算法研究与应用.浙江大学博士学位论文,2017.
2.潘志松等.在线学习算法综述,数据采集与处理,2016.

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轻窕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值