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