使用TensorFlow,Kafka和MemSQL進行實時機器學習
----如何構建一個簡單的機器學習通道,進行流式處理分類,並支持SQL查詢
TensorFlow已經成為領先的機器學習庫之一,與運行資料庫相結合,為快速構建複雜的機器學習工作流提供基礎。
在這篇文章中,我們將探索一個使用數據集的機器學習工作流。總體目標是通過機器比較建議,一個人通過查看不同的人的配置文件直接選擇與自己匹配的人。數據集來自Kaggle實驗。
作為工作流的一部分,我們將詳細介紹如何使用MemSQLPipelines將來自Kafka的數據實時傳輸到資料庫中。在攝取數據後,使用TensorFlow內置的TensorFlow演算法來分類數據。最後,將看到機器如何確定匹配。
這個總體架構為使用新數據集創建更複雜的機器學習工作流程提供了一個模板。
帶有TensorFlow的機器學習工作流程
下面的架構是由通過Kafka流式傳輸的訓練和分類數據組成,並存儲在持久的可查詢的資料庫中。在這種情況下,將使用MemSQL並利用Pipelines功能在流中在保留TensorFlow操作之前,將其保留到資料庫中。
在Kafka方面,我們設置了兩個Kafka主題、分類和培訓。原始培訓和分類數據從這些Kafka主題流入MemSQL管道。在資料庫方面,我們創建了一個名為speed_dating_matches的資料庫,並在該資料庫中創建了兩個表,即dating_training和dating_results。
dating_training是一個單行表,我們把訓練評估的輸出放在訓練中
dating_results是一個包含所有關於潛在日期的數據的表格,以及確定這個日期是否匹配。
isMatch= 1表示日期匹配
isMatch= 0表示日期不匹配
接下來,我們將創建兩條管道:
speed_dating_training和speed_dating_results
它們將來自Kafka主題的數據進行流式處理,使用該數據進行訓練或分類,並將最終結果放在相應的表格中。
應用機器學習來預測匹配
速度約會信息包括在六個特徵中分配100個優先點:吸引力,智力,趣味,共同興趣,誠意和抱負。
它還包括家鄉的傳記和興趣信息、學習興趣(數據來自大學生)、愛好電影、瑜伽、旅遊和電子遊戲等。
訓練數據是一組預定匹配,並且分類數據預測匹配的可能性。有了這些信息,我們可以看到在訓練數據中匹配的人,並用我們自己的問題的答案看看我們可能匹配誰。
從那裡,我們可以提出更詳細的問題,比如一般人在約會屬性和興趣方面尋找什麼,以及一般人和我匹配的人有什麼不同?
我們也可以查詢整個數據集,或查詢被確定為匹配的數據集的子集。
使用內置的TensorFlow模型
TensorFlow附帶了許多可供選擇的內置模型。這包括:
DNNClassifer
DNNRegressor
DNNLinearCombinedClassifier
DNNLinearCombinedRegressor
LinearClassifier
LinearRegressor
為了演示,將選擇線性分類器,並將模型輸入建立在以下數據類型的組合上。
CSV欄位名稱。CSV欄位名稱是將CSV讀入Pandas數據框時將使用的名稱。
TensorFlow分類特徵列。分類要素列是不能由離散數字表示的項目。諸如居住國、職業或母校等特徵都是分類特徵欄的例子。TensorFlow的一個重要功能是你不需要知道給定的類別有多少不同的值,它將為你創建向量。請參閱TensorFlow文檔中TensorFlow線性模型教程的「基本分類特徵列」部分。
TensorFlow連續特徵列。連續特徵是可以用數字表示的任何東西。像年齡,工資和最高運行速度等特徵都是可以使用連續特徵欄來表示的事例。更多信息,請參閱TensorFlow線性模型教程的「基本連續特徵列」部分。
培訓和分類數據工作
在這個例子中,速度約會數據對象被表示為由他們如何排列特徵,完成傳記信息和列出的興趣組成的向量:
Person
訓練數據表示為
其中,最終值是0或1,即不匹配或匹配。
分類數據通過as傳遞
基於預測的匹配,結果是0或1。
在下圖中,我們可以看到,訓練數據被傳遞來訓練線性分類器模型,分類數據通過TensorFlow模型,根據匹配的可能性輸出0或1。
用TensorFlow和MemSQL預測愛情
有了這些基礎設施,可以將自己的信息添加到組合中。在這種情況下,將個人的約會信息輸入到分類工作流程中,並預測匹配的可能性。為了評估有效性,可以看看這些匹配是否有直接選擇的項目。
這個整體架構有許多優點。它支持通過Kafka簡單地傳輸新數據,使用開箱即用的TensorFlow模型,並以一種可以用SQL輕鬆查詢的格式保存數據。從根本上提供了將數據流式傳輸到MemSQL,並同時進行分類的功能。更多信息,請參閱TensorFlow文檔中關於提供TensorFlow模型的文檔。
譯者:
劉志紅(Alice Liu).16年IT從業經驗。曾在NTT DATA, Oracle,中鈔造幣集團,中國電信雲計算分公司從事雲計算等關聯IT工作。擁有軟體著作權1件。
※攻防最前線:黑客利用機器學習發動攻擊的6種方式
※Facebook如何運用機器學習進行十億級用戶數據處理
TAG:機器學習 |