開源在線機器學習Online Learning/Incremental Learning庫-creme介紹

2021-02-17 凡人機器學習

最近在學習實時機器學習或者說增量學習相關的內容,目前中文資料相關的介紹非常少,今天借著creme這個庫介紹下Online Learning的原理,以及Online Learning和Batch Learning的一些區別。

Online Learning和Batch Learning的區別

Batch就是目前常用的計算模式,需要離線數據,離線訓練,離線評估,然後上線。

離線的好處就是比較穩定,可以用大的數據量去訓練和評估,如果模型效果不好也方便替換。

OnlineLearning更多地是一個實時運行的體系,實時有樣本產生,實時提取特徵並且和目標列拼接成樣本,實時評估和訓練。

Online Learning需要具備下述的幾個特點:

Online Learning優點很明顯,就是可以對訓練樣本做實時的反饋。所以應用的場景也主要是網際網路領域,對實時性要求很高的場景。在推薦廣告領域,Online Learning後續非常有發揮的空間。

Online Learning的優勢就是實時產出模型,數據的時效性強。之所以沒有大範圍普及,主要因為劣勢也很明顯,運維成本會比較高。比如如何保證實時樣本拼接的準確性、如何確保實時評估的準確、線上模型出現問題如何回滾等。所以,Online Learning還沒有非常好的開源解決方案,今天介紹的creme只能解決部分問題。

項目地址:https://github.com/creme-ml/creme

可以通過pip安裝:pip install creme

這是一個專注做Online Learning的庫,目前還沒有集成tf、pytorch的能力,所以現在creme是自己實現一些單機可運行的增量學習的算法,可以實現one sample粒度的訓練。

一些數據量不大,或者是想了解Online Learning機制的同學比較推薦,如果是企業生產的話,還是要等基於TensorFlow或者其它成熟框架的mini batch這樣訓練的能力。

creme的代碼可讀性很強,

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)

有一個stream庫可以實現流式的IO,這裡接Kafka也是可以的。單樣本訓練直接可以用fit_one,這個命名滿直接的。

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)

在評估的時候可以直接用metric.update函數去計算準確率,評估指標是通過真實的y值和預測出來的y_pred做對比。

下圖展示的是creme已經支持的函數和算法:

總而言之,creme目前還是一個探索性的項目,在實際生產方面可能會有性能問題,不過是一個很好地了解Online Learning的材料。

相關焦點

  • 離線學習、增量學習、在線機器學習的區別
    通常算法工程師在做構建算法模型,都是以離線批量的方式在訓練模型,本篇就來介紹機器學習在時間維和數據維度上的區別。
  • 增量學習(Incremental Learning)小綜述
    1.2 為什麼要增量學習在機器學習領域,增量學習致力於解決模型訓練的一個普遍缺陷:「災難性遺忘(catastrophic forgetting)」 ,也就是說,一般的機器學習模型(尤其是基於反向傳播的深度學習方法)在新任務上訓練時,在舊任務上的表現通常會顯著下降。
  • 開源!《Python 機器學習》-Python Machine Learning(附電子版 pdf)
    全書共16章,除了簡要介紹機器學習及Python在機器學習中的應用,還系統講述了數據分類、數據預處理、模型優化、集成學習、回歸、聚類、神經網絡、深度學習等內容。本書將機器學習背後的基本理論與應用實踐聯繫起來,通過這種方式讓讀者聚焦於如何正確地提出問題、解決問題。本書講解了如何使用Python的核心元素以及強大的機器學習庫,同時還展示了如何正確使用一系列統計模型。
  • 開源《Python 機器學習》-Python Machine Learning第一版+第二版(附電子版 pdf)
    全書共16章,除了簡要介紹機器學習及Python在機器學習中的應用,還系統講述了數據分類、數據預處理、模型優化、集成學習、回歸、聚類、神經網絡、深度學習等內容。本書將機器學習背後的基本理論與應用實踐聯繫起來,通過這種方式讓讀者聚焦於如何正確地提出問題、解決問題。本書講解了如何使用Python的核心元素以及強大的機器學習庫,同時還展示了如何正確使用一系列統計模型。
  • 開源!《Python 機器學習》-Python Machine Learning第一版+第二版(附電子版 pdf)
    全書共16章,除了簡要介紹機器學習及Python在機器學習中的應用,還系統講述了數據分類、數據預處理、模型優化、集成學習、回歸、聚類、神經網絡、深度學習等內容。本書將機器學習背後的基本理論與應用實踐聯繫起來,通過這種方式讓讀者聚焦於如何正確地提出問題、解決問題。本書講解了如何使用Python的核心元素以及強大的機器學習庫,同時還展示了如何正確使用一系列統計模型。
  • 機器學習(Machine Learning)&深度學習(Deep Learning)資料(之一)
    《Awesome Machine Learning》 介紹:一個超級完整的機器學習開源庫總結,如果你認為這個碉堡了,那後面這個列表會更讓你驚訝:【Awesome Awesomeness】,國內已經有熱心的朋友進行了翻譯中文介紹,機器學習數據挖掘免費電子書 36.斯坦福《自然語言處理》課程視頻 介紹:ACL候任主席、史丹福大學計算機系Chris Manning
  • ​機器學習(Machine Learning)&深度學習(Deep Learning)資料(之二精選161-315網址)
    《Caffe》介紹:Caffe是一個開源的深度學習框架,作者目前在google工作,作者主頁Yangqing Jia(賈揚清)173.《GoogLeNet深度學習模型的Caffe復現》介紹:2014 ImageNet冠軍GoogLeNet深度學習模型的Caffe復現模型,GoogleNet論文.174.
  • ...Java工程師轉型AI的秘密法寶——深度學習框架Deeplearning4j...
    目前研究人員使用的深度學習框架有 TensorFlow、Torch 、Caffe、Theano、Deeplearning4j等,而Deeplearning4j是為數不多以Java/JVM為基礎,能與Apache Spark無縫結合,支持CPU/GPU集群分布式計算的開源框架。本文就來為大家詳細介紹一下深度學習框架Deeplearning4j的重要組件,不同環境下的操作用法及實例分享。
  • 6月29日發售 | Deep Reinforcement Learning
    小編第一時間帶來新書介紹。深度強化學習是實現智能決策的關鍵技術之一,對人工智慧、機器人、認知科學、金融、資源調配等重大應用需求和研究方向有重要的意義。深度學習是基於深度神經網絡的機器學習方法。深度強化學習是強化學習和深度學習的結合體,隨著近幾十年來深度學習發展的熱潮,深度強化學習作為一個新的重要學科分支吸引了越來越多的科研和產業人員的關注。
  • 新書推薦 | Deep Reinforcement Learning
    深度學習是基於深度神經網絡的機器學習方法。深度強化學習是強化學習和深度學習的結合體,隨著近幾十年來深度學習發展的熱潮,深度強化學習作為一個新的重要學科分支吸引了越來越多的科研和產業人員的關注。本書從基本強化學習理論,到深度強化學習算法,再到實際應用與實踐,給讀者帶來相對全面且實用的深度強化學習知識,便於讀者學習和開展日後研究工作。
  • 從Few-shot Learning再次認識機器學習
    (以下分析適用於包括分類和回歸在內的FSL監督學習,也可以為理解FSL強化學習提供見解。)在機器通常情況,machine learning我們只需要準備好某個任務的訓練集和測試集就可以,meta-learning我們也需要準備一個訓練集和測試集,但是這裡的訓練集和測試集都是由一個個的task組成,且每個task都有各自的訓練集(Support set)和測試集(Query set),因為machine learning的目的是讓機器學習學習的能力,因此我們的測試集應該是一個新的task,而這個
  • 初一年級英語作文:Online Learning
    So, learning is not noly in school, it is also on line! It called "online learning"!   Before do everything, we must get ready for it, and "online learning" also need many preparation.   Now, let's dicuss how to get ready for "online learning"!
  • Auto Machine Learning 自動化機器學習筆記
    在機器學習中的分類模型中:常規 ML framework 如下圖灰色部分:導入數據-數據清洗-特徵工程-分類器-輸出預測值auto部分如下圖綠色方框:在ML framework 左邊新增 meta-learning,在右邊新增 build-ensemble,對於調超參數,用的是貝葉斯優化
  • Spark與深度學習框架——H2O、deeplearning4j、SparkNet
    與其他已有的機器學習算法相比,深度學習需要大量參數及訓練數據。這也是我們介紹能在Spark上運行的深度學習框架的原因。要想在企業環境中穩定地進行深度學習的訓練,必須要有一個可靠而快速的分布式引擎。Spark被視為目前最適合運行深度學習算法的平臺,是因為:本文我們將介紹一些Spark能用的深度學習框架。這些框架和深度學習一樣,都是比較新的庫。
  • 資訊 | 你可能正需要的在線學習平臺推薦 Top Recommended Online Learning Resources
    https://oyc.yale.edu/Open Yale Courses are free, open access, non-credit introductory courses recorded in Yale College's classroom and available online
  • 《Deep Learning》中文印前版開放下載
    這本書適合於各類讀者,尤其是學習機器學習的本科或研究生、深度學習和人工智慧的研究者、或沒有機器學習與統計背景的軟體工程師。項目地址:https://github.com/exacity/deeplearningbook-chinese在線閱讀地址:https://exacity.github.io/deeplearningbook-chinese/下載地址:https://github.com/
  • 25個Java機器學習工具&庫
    2.Massive Online Analysis(MOA)是一個面向數據流挖掘的流行開源框架,有著非常活躍的成長社區。它包括一系列的機器學習算法(分類、回歸、聚類、異常檢測、概念漂移檢測和推薦系統)和評估工具。關聯了WEKA項目,MOA也是用Java編寫的,其擴展性更強。3.MEKA項目提供了一個面向多標籤學習和評價方法的開源實現。
  • 技術乾貨:人工智慧和機器學習領域中有趣的開源項目
    本文簡要介紹了10款 Quora上網友推薦的 人工智慧和機器學習領域方面的開源項目。
  • awesome-adversarial-machine-learning資源列表
    發現一個不錯的awesome-adversarial-machine-learning的資源列表,有需要的同學可以查看訪問:
  • 盤點:為 Java 開發者量身定製的五款機器學習庫
    鑑於此前有關 Python 的參考資料已經很多,而鮮見 Java 的,因此,今天我們在這裡推薦五個業內頂尖的 Java 機器學習庫。原文載於 jaxenter.com 網站,雷鋒網編譯。毫無疑問,Weka 是目前首選的 Java 機器學習庫。它由紐西蘭懷卡託大學(University of Waikato)的機器學習項目組研發。