機器學習有很多流程,包含數據預處理、特徵工程、模型訓練、模型評估和預測。今天所有做機器學習服務的人,無論是雲上服務還是開源軟件,大家都在嘗試通過某種方式將如此靈活的流程串聯起來。今天給大家介紹一種方式,適用所有人都瞭解的SQL語言。sqlflow,一種基於sql語言的機器學習實現方案
01 概述
sqlflow是一種基於sql的描述語言,用戶可以基於sql的方式實現機器學習模型訓練和預測。目前sqlflow已經開源,並且支持了keras、tensorflow、xgboost等算法框架。
sqlflow的地址:https://github.com/sql-machine-learning/sqlflow
作者看法:sql描述語言可能是貫穿機器學習流程的一種解法,但是因爲算法流程串聯需要極大的靈活性,接下來就看下如何安裝並運行。
02 安裝流程
1.安裝Docker平臺工具
sqlflow官方提供了一種基於Docker的安裝方式,可以減少配置環境的過程,安裝docker可以參考:https://docs.docker.com/install/
安裝成功後啓動工具,可以在terminal中使用docker命令:
2.Pull docker鏡像
有了docker工具後可以通過docker pull命令拉取sqlflow最新的鏡像:
docker pull sqlflow/sqlflow
拉取過程中比較慢,需要接近半小時時間
3.啓動Docker
docker run --rm -it -p 8888:8888 sqlflow/sqlflow
啓動後,可以通過瀏覽器打開localhost8888,
http://localhost:8888/notebooks
03 使用流程
接下來介紹下sqlflow怎麼使用,這裏用一個官方例子,如何使用sqlflow基於iris數據,使用DNN實現一個分類模型。
1.首先看下訓練數據
2.模型訓練
* 通過TRAIN參數選擇使用的分類算法,可以選擇xgboost、DNN等
* model.n_classes和hidden_units設置模型相關的參數
* train.epoch設置模型迭代的次數
* COLUMN參數設置訓練特徵
* LABEL設置目標列
* INTO參數設置保存的模型
3.模型預測
使用USING參數調用保存好的模型進行預測
04 我的體感
根據我做了4年多機器學習平臺的經驗,我也一直在探索有哪種標準化的模型是可以覆蓋機器學習全部流程。目前看SQL可能是一種解法,大家通過本文也看出整個使用是比較順暢。但是如果涉及到很複雜的數據上下文的處理,用SQL可能不一定能滿足需求。目前sqlflow更多的意義是給大家一個借鑑,機器學習算法是可以通過sql來描述。後續或許sql成爲了最終解決機器學習全流程的答案,或許有新的技術出現,我也跟大家一起期待着。