關于猿輔導機器學習項目ytk-learn和ytk-mp4j分布式機器學習庫
本文描述了猿輔導開源分布式機器學習庫ytk-learn及分布式通信庫ytk-mp4j的相關內容,可實現(xiàn)在多應用場景中使用。ytk-learn 是基于Java的高效分布式機器學習庫, 簡單易用,文檔詳細,只需要用戶安裝Java 8運行時環(huán)境即可,而且所有模型都有可運行的demo。
猿輔導公司開源了兩個機器學習項目——ytk-learn, ytk-mp4j,其中 ytk-mp4j 是一個高效的分布式通信庫,基于該通信庫我們實現(xiàn)了 ytk-learn 分布式機器學習庫,該機器學習庫目前在猿輔導很多應用場景中使用,比如,自適應學習、學生高考分預測、數據挖掘、課程推薦等。
ytk-learn分布式機器學習庫 項目背景LR(LogisTIc Regression), GBDT(Gradient BoosTIng Decision Tree), FM(FactorizaTIon Machines), FFM(Field-aware FactorizaTIon Machines) 模型是廣告點擊率預測和推薦系統(tǒng)中廣泛使用的模型,但是到目前為止幾乎沒有一個高效的機器學習開源項目集這幾種常用模型于一身,而且很多機器學習開源項目只能在特定計算平臺下使用,最重要的是不能高效的整合到線上生產環(huán)境中。ytk-learn 就是解決以上問題而產生的。
圖1 ytk-learn 特性概略
項目簡介ytk-learn 是基于Java的高效分布式機器學習庫,實現(xiàn)大量的主流傳統(tǒng)機器學習模型(GBDT, LR, FM, FFM等)和loss函數,支持單機多線程、多機集群及分布式計算環(huán)境。
其中 GBDT/GBRT 的實現(xiàn)借鑒吸收了 XGBoost 和 LightGBM 的大部分有用特性,支持特征并行和數據并行,支持傳統(tǒng)的精確算法和直方圖近似算法,支持 level-wise 或者 leaf-wise 的建樹方式,而且還實現(xiàn)了分布式帶權分位數近似。在單機數據并行的場景中訓練速度跟 XGBoost 相當,在非$2^n$臺機器的分布式場景中比 LightGBM 速度更快,更穩(wěn)定。
傳統(tǒng)的 GBDT/GBRT 在含有大量 Categorical 特征的場景中無法使用,我們實現(xiàn)了多種適用于大量 Categorical特征的 GBST(Gradient Boosting Soft Tree)模型,在猿輔導的點擊率預測和推薦場景中效果明顯好于LR、FM、FFM等模型。
ytk-learn 實現(xiàn)了改進的 Hoag(Hyperparameter optimization with approximate gradient, ICML2016)算法,能夠自動高效的進行超參數搜索。當目標函數是凸函數時,hoag 能快速得到最優(yōu)超參數(kaggle 比賽利器),效率明顯高于傳統(tǒng)的網格超參數搜索算法(grid search),而且在非凸目標函數場景中也適用。
其他特性:
1. 簡單易用,文檔詳細,只需要用戶安裝Java 8運行時環(huán)境即可,而且所有模型都有可運行的demo
2. 支持主流的操作系統(tǒng):Linux,Windows,Mac OS,僅需安裝Java8運行環(huán)境即可使用
3. 支持單機多線程,多機集群及分布式環(huán)境(Hadoop,Spark),相比Hadoop Mahout, Spark MLlib效率高很多
4. 提供簡單易用的在線預測代碼,可以方便整合到線上生成環(huán)境
5. 支持多種目標函數和評估指標,支持L1,L2,L1+L2正則
6. 樹模型支持樣本采樣,特征采樣,提供初始預估值的訓練
7. 支持特征預處理(歸一化,縮放),特征哈希,特征過濾,基于樣本標簽采樣
8. 提供了讀取數據時進行高效數據處理的python腳本
9. 訓練模型支持checkpoint,繼續(xù)訓練
10. LR 支持 Laplace 近似,方便做 Exploitation&Exploration
11. 基于猿輔導的 ytk-mp4j 通信庫,分布式訓練效率非常高