在數據採集器中用TensorFlow進行實時機器學習

摘要: 本文學習如何通過發佈的最新TensorFlow Evaluator版本使用TensorFlow(TF)模型進行預測和分類。

最新DataOps平臺的真正價值,只有在業務用戶和應用程序能夠從各種數據源來訪問原始數據和聚合數據,並且及時地產生數據驅動的認識時,才能夠實現。利用機器學習(Machine Learning),分析師和數據科學家可以利用歷史數據,以及實時地使用類似TensorFlow(TF)這樣的技術,以做出更好的數據驅動業務的線下決策。

在本文中,你將學習如何利用TensorFlow模型在StreamSets Data Collector3.5.0和StreamSets Data Collector Edge中最新發布的TensorFlow Evaluator*進行預測和分類。

在深入討論細節之前,我們來看一些基本概念。

機器學習(Machine Learning)

亞瑟·塞繆爾把它描述為:“不需要明確地編寫程序而使計算機有能力學習的研究領域。”隨著機器學習領域的最新發展,計算機現在有能力做出預測,甚至比人類做的還要好,並且感覺可以解決任何問題。讓我們先回顧一下機器學習都解決了什麼樣的問題吧。

通常來說,機器學習被分為兩大類:

監督學習(Supervised Learning)

“監督學習是學習一個函數的機器學習任務,該函數基於輸入-輸出的實例,將輸入映射到輸出。”—維基百科(Wikipedia)。

它涉及到構建一個精準的模型,當歷史數據被標記為一些結果的時候,模型就可以預測出結果了。

用監督學習解決的常見業務問題:

  • 二元分類(學習預測一個分類值)
  • - 顧客會購買一個特定產品嗎?
  • - 癌症是惡性的還是良性的?
  • 多級分類(學習預測一個分類值)
  • - 給定的一段文本是否帶有病毒、恐嚇或淫穢內容?
  • - 這是山鳶尾、藍旗鳶尾還是北美鳶尾的物種?
  • 迴歸(學習預測一個連續值)
  • - 一個代售房子的預測價格是多少?
  • - 明天舊金山的氣溫是多少?

無監督學習

無監督學習允許我們在知道很少,或是完全不知道輸出應該是什麼樣子的情況下處理問題。它涉及在之前數據上的標籤是不可用的情況下創建模型。在這類的問題中,通過對基於數據中變量之間的關係進行數據聚類來導出結構。

無監督學習的兩種常見方法是K-均值聚類(K-means clustering)和DBSCAN。

注意:Data Collector和Data Collector Edge中的TensorFlow Evaluator目前僅支持監督學習模型。

神經網絡與深度學習

神經網絡是機器學習算法的一種,可以學習和使用受人腦結構啟發而來的計算模型。與其它機器學習算法,如決策樹、邏輯迴歸等相比,神經網絡具有較高的準確性。

Andrew Ng在傳統人工神經網絡的背景下對深度學習進行了描述。在題為“深度學習、自我學習與無監督特徵學習”的演講中,他把深度學習的思想描述為:

“利用了大腦結構的模仿, 希望:

- 讓學習算法更好地、更容易地使用;

- 在機器學習和人工智能領域取得革命性的進展;

我相信這是我們朝著真正的人工智能前進的最好辦法。”

常見的神經網絡和深度學習應用包括:

  • 計算機視覺/圖像識別/目標檢測
  • 語言識別/自然語言處理(NLP)
  • 推薦系統(產品、婚介等)
  • 異常檢測(網絡安全等)

TensorFlow

TensorFlow是為深度神經網絡設計的開源機器學習框架,由Google Brain Team開發的。TensorFlow支持在Windows和Mac操作系統上的可伸縮和便攜式的訓練,包括CPU、GPU和TPU。迄今為止,它是GitHub上最流行的和最活躍的機器學習項目。

Data Collector中的TensorFlow

隨著TensorFlow Evaluator的引入,你現在能夠創建管道(pipelines),以獲取數據或特徵,並在一個可控的環境中生成預測結果或分類,而不必發起對作為Web服務而提供和公佈的機器學習模型的HTTP或REST API的調用。例如,Data Collector管道現在可以實時地檢測欺詐交易或在文本上執行自然語言處理,因為數據在被存儲到最終目的地之前,為了進一步的處理或做決策,正在經過各個階段。

另外,使用Data Collector Edge,你可以在Raspberry Pi和其它運行在所支持的平臺上的設備上運行已經啟用了的TensorFlow機器學習管道。例如,在高風險地區檢測洪水等自然災害發生的概率,以防止對人們財產的破壞。

乳腺癌分類

讓我們考慮將乳腺癌腫瘤分類成惡性還是良性的例子。乳腺癌是一個經典的數據集,可以作為scikit-learn的一部分。要了解如何在Python中使用該數據集訓練和導出一個簡單的TensorFlow模型,請查看我在GitHub上的代碼。正如你將要看到的那樣,模型創建和訓練被保持在最小範圍,並且非常簡單,只有幾個隱藏層。最需要注意的重要方面是如何使用TensorFlow SavedModelBuilder*來導出和保存模型。

*注意要在Data Collector或Data Collector Edge中使用TensorFlow模型,首先應該在你選擇支持的開發語言裡,如Python,和交互式環境中,如Jupiter Notebook,使用TensorFlow的SavedModelBuilder導出和保存模型。

一旦使用TensorFlow的SavedModelBuilder訓練並導出了模型,那麼在數據流管道中使用它進行預測或分類就非常簡單了 — 只要模型保存在Data Collector或Data Collector Edge可訪問的位置上即可。

管道概述

在深入瞭解細節之前,可以看下管道是什麼樣的:


在數據採集器中用TensorFlow進行實時機器學習


管道細節

  • 目錄源:
  • - 這將從.csv文件中加載乳腺癌的記錄數據(注意:這個輸入數據源可以非常簡單地替換為其它的來源,包括Kafka、AWS S3、MySQL等等);
  • 字段轉換器:
  • - 這個處理器將轉換供模型所使用的所有輸入的乳腺癌記錄特徵數據,從String類型轉換到Float類型(mean_radius,mean_texture,mean_perimeter,mean_area,mean_smoothness,mean_compactness,mean_concavity,mean_concave_points,mean_symmetry,mean_fractal_dimension,radius_error,texture_error,perimeter_error,area_error,smoothness_error,compactness_error,concavity_error,concave_points_error,symmetry_error,fractal_dimension_error,worst_radius,worst_texture,worst_perimeter,worst_area,worst_smoothness,worst_compactness,worst_concavity,worst_concave_points,worst_symmetry,worst_fractal_dimension)
  • TensorFlow Evaluator*:
  • - 模型的保存路徑:指定要使用的預訓練的TensorFlow模型的位置;
  • - 模型標籤:設置為“serve”,因為元圖(在我們導出的模型中)要用於服務中。有關詳細信息,請參見tag_constants.py和相關的TensorFlow API documentation;
  • - 輸入配置:指定在訓練和導出模型期間配置的輸入張量信息(請見Train model and save/export it using TensorFlow SavedModelBuilder部分);
  • - 輸出配置:指定在訓練和導出模型期間配置的輸出張量信息(請見Train model and save/export it using TensorFlow SavedModelBuilder部分);
  • - 輸出字段:我們想保存分類值的輸出記錄字段;
  • Expression Evaluator:
  • -該處理器評估模型輸出或分類值為0或1(存儲在輸出的字段TF_Model_Classification之中) ,並用BenignMalignantrespectively這兩個值創建一個新的記錄字段“Condition”;
  • Stream Selector:
  • - 該處理器評估癌症狀況(良性或惡性)併發送記錄到各自的Kafka生產者;
  • Kafka Producers:
  • - 輸入記錄以及模型的輸出或者分類值被有條件地發送給兩個Kafka生產者以獲得進一步地處理和分析;

*TensorFlow Evaluator配置

在數據採集器中用TensorFlow進行實時機器學習


注意:一旦TensorFlow Evaluator產生了模型輸出結果,本實例中採用的管道階段是可選的,並且可以根據用例的需要與其它處理器和目標進行互換。

管道執行


在數據採集器中用TensorFlow進行實時機器學習


在預覽管道上,乳腺癌數據記錄的輸入通過了上面所述的數據流管道過程,包括服務於我們的TensorFlow模型。發送給Kafka生產者的最終輸出記錄數據(如上所示)包括用於分類的模型所使用的乳腺癌特徵,在用戶定義的字段TF_Model_Classification中模型輸出值為0或1,以及由Expression Evaluator創建的Condition字段中表示相應的癌症狀況是良性或惡性。

總結

本文說明了在Data Collector 3.5.0中使用最新發布的TensorFlow Evaluator。一般來說,這個評估器將允許你提供預訓練的TensorFlow模型,用於生成預測結果和分類結果,而無需編寫任何自己的代碼。

阿里云云棲社區組織翻譯。

文章原標題《Real-Time Machine Learning With TensorFlow in Data Collector》

譯者:Mags,審校:袁虎。

作者:【方向】

相關推薦

推薦中...