資料介紹
Facebook 使用機器學習和排序模型給所有用戶帶來最佳體驗,例如發送什么通知,在你的消息推送中放入什么文章,以及對于你想關注的人提些什么建議。高質量的機器學習模型對于找出最相關的內容來說很重要。我們觀察了大量實時信號以制定最佳排序;例如,在過濾通知的使用情況中,我們觀察某人是否已點擊相似的通知,或者對應通知的文章獲得了多少贊。由于每執行一次就會生成一個新通知推送,所以我們想要盡快返回發送通知的決策。
更復雜的模型有助于提高預測的精度,提供更相關的內容。但更復雜的模型需要更長的 CPU 周期(CPU cycles),返回結果的時間也更長。考慮到這些限制,我們做不到對所有可能的候選模型進行評估。然而,通過提升模型效率,我們可以做到在相同的時間幀運用相同的計算資源評價更多的候選模型(inventory)。
在本文中,我們比較了梯度提升決策樹(gradient-boosted decision tree ,簡稱GBDT)這一類預測模型的不同實現,并描述了能產生更高效評估的 C++ 多方面改進。
決策樹模型
決策樹被普遍用作預測模型,該算法將關于對象的特征觀察值映射到對象類的目標值。由于其非線性和快速求值的特點,它成為了機器學習、數據分析和統計學之中最常見的預測模型方法之一。在這些樹狀結構中,葉結點表征分類標簽,而有向邊表征產生這些分類標簽的特征連接。
決策樹非常強大,但是訓練數據中的小變動可以演化為決策樹中的大變化。這可通過使用一項被稱為梯度提升(gradient boosting)的技術來補救。即,為錯誤分類的訓練實例提升權重,從而形成一個新的決策樹。接著對這一步驟進行連續重復以獲得新的決策樹。最后的分值(scores)是決策樹上每個葉節點分值的加權總和。
模型通常很少更新,且訓練復雜模型需要花費數小時。然而,在 Facebook 的大規模數據上,我們想要更頻繁地更新模型,即按照毫秒間隔依次運行它們。Facebook 的很多后端服務是用 C++ 寫的,因此我們利用這一語言的一些屬性做了些改善,以產生只需要更短 CPU 周期進行求值的高效模型。
下圖是一個簡單的決策樹,它包含以下特征:
今天某人 A 點擊通知的數量(特征 F[0])
對應通知的文章點贊數量(特征 F[1])
某人 A 點擊通知的總數量(特征 F[2])
在不同的結點,我們查看了上述特征的值,并遍歷整棵決策樹以獲取通知點擊的概率。
平面樹(Flat tree)的實現
決策樹模型的樸素實現是通過一個帶有指針的簡單二叉樹而完成的。然而,結點并不需要連續地存儲于內存之中,因為這樣二叉樹并非很有效。另一方面,決策樹通常是完整的二叉樹(即二叉樹的每個結點一定存在零值或兩棵子樹),它通過使用向量而壓縮存儲。指針并不需要空間,而每一結點的父結點和子結點可通過數組索引算法查看。我們將用這一實現對比這一章節的實驗。
編譯樹(Compiled tree)的實現
每一個二叉樹都能由一個復雜的三元表達式表征,而這個表達式能進行編譯并鏈接到可直接在服務中使用的動態庫(DLL)。需要注意的是,我們可以實時添加或更新決策樹模型,而不需要重啟服務。
我們也可以利用 C++ 中的 LIKELY/UNLIKELY 注釋(annotations)。它們是編譯器發出指令的方向,并且能將分支預測更加偏向于跳轉指令(jump instruction)「可能」出現的一側。如果預測是對的,那么就意味著跳轉指令將占有 0 個 CPU 周期。我們可以根據在批量中排序的或離線分析中的真實樣本計算分支預測,這是因為訓練和評估集的分布不應該改變太多。
更復雜的模型有助于提高預測的精度,提供更相關的內容。但更復雜的模型需要更長的 CPU 周期(CPU cycles),返回結果的時間也更長。考慮到這些限制,我們做不到對所有可能的候選模型進行評估。然而,通過提升模型效率,我們可以做到在相同的時間幀運用相同的計算資源評價更多的候選模型(inventory)。
在本文中,我們比較了梯度提升決策樹(gradient-boosted decision tree ,簡稱GBDT)這一類預測模型的不同實現,并描述了能產生更高效評估的 C++ 多方面改進。
決策樹模型
決策樹被普遍用作預測模型,該算法將關于對象的特征觀察值映射到對象類的目標值。由于其非線性和快速求值的特點,它成為了機器學習、數據分析和統計學之中最常見的預測模型方法之一。在這些樹狀結構中,葉結點表征分類標簽,而有向邊表征產生這些分類標簽的特征連接。
決策樹非常強大,但是訓練數據中的小變動可以演化為決策樹中的大變化。這可通過使用一項被稱為梯度提升(gradient boosting)的技術來補救。即,為錯誤分類的訓練實例提升權重,從而形成一個新的決策樹。接著對這一步驟進行連續重復以獲得新的決策樹。最后的分值(scores)是決策樹上每個葉節點分值的加權總和。
模型通常很少更新,且訓練復雜模型需要花費數小時。然而,在 Facebook 的大規模數據上,我們想要更頻繁地更新模型,即按照毫秒間隔依次運行它們。Facebook 的很多后端服務是用 C++ 寫的,因此我們利用這一語言的一些屬性做了些改善,以產生只需要更短 CPU 周期進行求值的高效模型。
下圖是一個簡單的決策樹,它包含以下特征:
今天某人 A 點擊通知的數量(特征 F[0])
對應通知的文章點贊數量(特征 F[1])
某人 A 點擊通知的總數量(特征 F[2])
在不同的結點,我們查看了上述特征的值,并遍歷整棵決策樹以獲取通知點擊的概率。
平面樹(Flat tree)的實現
決策樹模型的樸素實現是通過一個帶有指針的簡單二叉樹而完成的。然而,結點并不需要連續地存儲于內存之中,因為這樣二叉樹并非很有效。另一方面,決策樹通常是完整的二叉樹(即二叉樹的每個結點一定存在零值或兩棵子樹),它通過使用向量而壓縮存儲。指針并不需要空間,而每一結點的父結點和子結點可通過數組索引算法查看。我們將用這一實現對比這一章節的實驗。
編譯樹(Compiled tree)的實現
每一個二叉樹都能由一個復雜的三元表達式表征,而這個表達式能進行編譯并鏈接到可直接在服務中使用的動態庫(DLL)。需要注意的是,我們可以實時添加或更新決策樹模型,而不需要重啟服務。
我們也可以利用 C++ 中的 LIKELY/UNLIKELY 注釋(annotations)。它們是編譯器發出指令的方向,并且能將分支預測更加偏向于跳轉指令(jump instruction)「可能」出現的一側。如果預測是對的,那么就意味著跳轉指令將占有 0 個 CPU 周期。我們可以根據在批量中排序的或離線分析中的真實樣本計算分支預測,這是因為訓練和評估集的分布不應該改變太多。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 決策樹引擎解決方案
- 基于遺傳優化決策樹的建筑能耗預測模型 6次下載
- 基于非均衡數據分類的猶豫模糊決策樹 5次下載
- 可提高心電信號分類識別準確率的模糊決策樹 14次下載
- 如何使用最優二叉決策樹分類模型進行奶牛運動行為的識別 0次下載
- 基于決策樹的在軌衛星故障診斷知識挖掘 0次下載
- 決策樹的介紹 0次下載
- 基于決策樹學習的智能機器人控制方法 15次下載
- 改進決策樹算法的應用研究
- 電子稱重儀表決策樹建模研究 24次下載
- 基于決策樹的數據挖掘算法應用研究 0次下載
- 基于決策樹與相異度的離群數據挖掘方法
- 基于屬性相似度的決策樹算法
- 一個基于粗集的決策樹規則提取算法
- 決策樹技術在汽車銷售中的應用
- 決策樹:技術全解與案例實戰 1423次閱讀
- 一種基于決策樹的飛機級故障診斷建模方法研究 918次閱讀
- 機器學習之決策樹生成詳解 1.9w次閱讀
- 機器學習中常用的決策樹算法技術解析 1339次閱讀
- 梯度提升方法(Gradient Boosting)算法案例 1.4w次閱讀
- 決策樹和隨機森林模型 8018次閱讀
- 什么是決策樹?決策樹算法思考總結 1.1w次閱讀
- 基于決策樹算法的電能表故障預測方法 1775次閱讀
- 決策樹的原理和決策樹構建的準備工作,機器學習決策樹的原理 6073次閱讀
- 結合深度神經網絡和決策樹的完美方案 9741次閱讀
- 數據挖掘算法:決策樹算法如何學習及分裂剪枝 5814次閱讀
- 構建一個決策樹并查看它如何進行預測 1.4w次閱讀
- 大神教你怎么用Python抓取婚戀網用戶數據,用決策樹生成自己擇偶觀 4225次閱讀
- 機器學習:決策樹--python 1626次閱讀
- 解讀決策樹與隨機森林模型的概念 3714次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 11次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5DIY動手組裝LED電子顯示屏
- 0.98 MB | 3次下載 | 免費
- 6基于FPGA的C8051F單片機開發板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機PM2.5檢測系統程序
- 0.83 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537797次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191186次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論