开源在线机器学习Online Learning/Incremental Learning库-creme介绍
最近在學(xué)習(xí)實(shí)時(shí)機(jī)器學(xué)習(xí)或者說(shuō)增量學(xué)習(xí)相關(guān)的內(nèi)容,目前中文資料相關(guān)的介紹非常少,今天借著creme這個(gè)庫(kù)介紹下Online Learning的原理,以及Online Learning和Batch Learning的一些區(qū)別。
1 Online Learning和Batch Learning的區(qū)別
Batch就是目前常用的計(jì)算模式,需要離線數(shù)據(jù),離線訓(xùn)練,離線評(píng)估,然后上線。
離線的好處就是比較穩(wěn)定,可以用大的數(shù)據(jù)量去訓(xùn)練和評(píng)估,如果模型效果不好也方便替換。
OnlineLearning更多地是一個(gè)實(shí)時(shí)運(yùn)行的體系,實(shí)時(shí)有樣本產(chǎn)生,實(shí)時(shí)提取特征并且和目標(biāo)列拼接成樣本,實(shí)時(shí)評(píng)估和訓(xùn)練。
Online Learning需要具備下述的幾個(gè)特點(diǎn):
-
數(shù)據(jù)從流式數(shù)據(jù)源獲取,比如Kafka、MQ
-
可以對(duì)Mini Batch甚至單樣本訓(xùn)練并產(chǎn)生新模型
-
特征和目標(biāo)可以實(shí)時(shí)生成并實(shí)時(shí)拼接成樣本
2 Online Learning應(yīng)用場(chǎng)景和優(yōu)缺點(diǎn)
Online Learning優(yōu)點(diǎn)很明顯,就是可以對(duì)訓(xùn)練樣本做實(shí)時(shí)的反饋。所以應(yīng)用的場(chǎng)景也主要是互聯(lián)網(wǎng)領(lǐng)域,對(duì)實(shí)時(shí)性要求很高的場(chǎng)景。在推薦廣告領(lǐng)域,Online Learning后續(xù)非常有發(fā)揮的空間。
Online Learning的優(yōu)勢(shì)就是實(shí)時(shí)產(chǎn)出模型,數(shù)據(jù)的時(shí)效性強(qiáng)。之所以沒有大范圍普及,主要因?yàn)榱觿?shì)也很明顯,運(yùn)維成本會(huì)比較高。比如如何保證實(shí)時(shí)樣本拼接的準(zhǔn)確性、如何確保實(shí)時(shí)評(píng)估的準(zhǔn)確、線上模型出現(xiàn)問(wèn)題如何回滾等。所以,Online Learning還沒有非常好的開源解決方案,今天介紹的creme只能解決部分問(wèn)題。
3 creme介紹
項(xiàng)目地址:https://github.com/creme-ml/creme
可以通過(guò)pip安裝:pip install creme?
這是一個(gè)專注做Online Learning的庫(kù),目前還沒有集成tf、pytorch的能力,所以現(xiàn)在creme是自己實(shí)現(xiàn)一些單機(jī)可運(yùn)行的增量學(xué)習(xí)的算法,可以實(shí)現(xiàn)one sample粒度的訓(xùn)練。
一些數(shù)據(jù)量不大,或者是想了解Online Learning機(jī)制的同學(xué)比較推薦,如果是企業(yè)生產(chǎn)的化,還是要等基于TensorFlow或者其它成熟框架的mini batch這樣訓(xùn)練的能力。
creme的代碼可讀性很強(qiáng),
from creme import linear_modelfrom creme import streamX_y = stream.iter_csv('some/csv/file.csv')model = linear_model.LogisticRegression()for x, y in X_y:model.fit_one(x, y)有一個(gè)stream庫(kù)可以實(shí)現(xiàn)流式的IO,這里接Kafka也是可以的。單樣本訓(xùn)練直接可以用fit_one,這個(gè)命名滿直接的。
from creme import linear_modelfrom creme import metricsfrom creme import streamX_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)在評(píng)估的時(shí)候可以直接用metric.update函數(shù)去計(jì)算準(zhǔn)確率,評(píng)估指標(biāo)是通過(guò)真實(shí)的y值和預(yù)測(cè)出來(lái)的y_pred做對(duì)比。
下圖展示的是creme已經(jīng)支持的函數(shù)和算法:
總而言之,creme目前還是一個(gè)探索性的項(xiàng)目,在實(shí)際生產(chǎn)方面可能會(huì)有性能問(wèn)題,不過(guò)是一個(gè)很好地了解Online Learning的材料。
總結(jié)
以上是生活随笔為你收集整理的开源在线机器学习Online Learning/Incremental Learning库-creme介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 详解下一代神经网络-无监督对比学习框架S
- 下一篇: 微信公众号文章质量评分算法详解