经常看到在线算法(online algorithm)这个词,比如说“XXX的另一个优点是它是在线算法”,但是我理解得比较模糊,在线是不是就是计算比较快的意思?有准确一点、具体一点的定义吗?
2个回答
离线算法是需要输入全部数据之后再开始训练模型。比如说一开始你有1万行数据,你用这个数据训练出了一个模型,当你又有了1千行新数据后,你需要把这1千行和原来的1万行数据合并起来,再重新训练模型。
在线算法则不需要重新训练,在线算法可以按批次接收数据、改进模型。比如说一开始你有1万行数据,你用这个数据训练出了一个模型,当你又有了1百行新数据,你不需要把这些新数据与原数据合并,你可以只利用这100行数据对原先的模型进行调整(不是从头重新训练),再来1百行数据,又可以利用新的数据对模型进行调整。
在线算法的一个巨大优势是节约空间。当数据量特别大的时候,我们可以一部分一部分的训练,而不是直接在整个数据集上训练。
比如说蓄水池算法就是online algorithm
-
小嘿
2017-04-12 11:31
从机器学习的角度来说,offline(或者说batch)learning就是用所有的数据进行训练模型,当有新训练数据进来的,需要把新数据和旧数据合并起来,重新训练模型,原来的模型就没有用了。
online learning就是当新训练数据进来,我们不需要放弃原来的模型,也不需要把新数据和旧数据合并成训练集,我们可以在原来的模型的基础之上,用新的数据集对老模型进行一些修改更新。
总体来说,online learning更省事,更符合有流数据需求的场景。
附上一张网图,供大家欣赏。