資料介紹
Facebook 使用機器學習和排序模型給所有用戶帶來最佳體驗,例如發(fā)送什么通知,在你的消息推送中放入什么文章,以及對于你想關注的人提些什么建議。高質量的機器學習模型對于找出最相關的內容來說很重要。我們觀察了大量實時信號以制定最佳排序;例如,在過濾通知的使用情況中,我們觀察某人是否已點擊相似的通知,或者對應通知的文章獲得了多少贊。由于每執(zhí)行一次就會生成一個新通知推送,所以我們想要盡快返回發(fā)送通知的決策。
更復雜的模型有助于提高預測的精度,提供更相關的內容。但更復雜的模型需要更長的 CPU 周期(CPU cycles),返回結果的時間也更長??紤]到這些限制,我們做不到對所有可能的候選模型進行評估。然而,通過提升模型效率,我們可以做到在相同的時間幀運用相同的計算資源評價更多的候選模型(inventory)。
在本文中,我們比較了梯度提升決策樹(gradient-boosted decision tree ,簡稱GBDT)這一類預測模型的不同實現(xiàn),并描述了能產生更高效評估的 C++ 多方面改進。
決策樹模型
決策樹被普遍用作預測模型,該算法將關于對象的特征觀察值映射到對象類的目標值。由于其非線性和快速求值的特點,它成為了機器學習、數(shù)據(jù)分析和統(tǒng)計學之中最常見的預測模型方法之一。在這些樹狀結構中,葉結點表征分類標簽,而有向邊表征產生這些分類標簽的特征連接。
決策樹非常強大,但是訓練數(shù)據(jù)中的小變動可以演化為決策樹中的大變化。這可通過使用一項被稱為梯度提升(gradient boosting)的技術來補救。即,為錯誤分類的訓練實例提升權重,從而形成一個新的決策樹。接著對這一步驟進行連續(xù)重復以獲得新的決策樹。最后的分值(scores)是決策樹上每個葉節(jié)點分值的加權總和。
模型通常很少更新,且訓練復雜模型需要花費數(shù)小時。然而,在 Facebook 的大規(guī)模數(shù)據(jù)上,我們想要更頻繁地更新模型,即按照毫秒間隔依次運行它們。Facebook 的很多后端服務是用 C++ 寫的,因此我們利用這一語言的一些屬性做了些改善,以產生只需要更短 CPU 周期進行求值的高效模型。
下圖是一個簡單的決策樹,它包含以下特征:
今天某人 A 點擊通知的數(shù)量(特征 F[0])
對應通知的文章點贊數(shù)量(特征 F[1])
某人 A 點擊通知的總數(shù)量(特征 F[2])
在不同的結點,我們查看了上述特征的值,并遍歷整棵決策樹以獲取通知點擊的概率。
平面樹(Flat tree)的實現(xiàn)
決策樹模型的樸素實現(xiàn)是通過一個帶有指針的簡單二叉樹而完成的。然而,結點并不需要連續(xù)地存儲于內存之中,因為這樣二叉樹并非很有效。另一方面,決策樹通常是完整的二叉樹(即二叉樹的每個結點一定存在零值或兩棵子樹),它通過使用向量而壓縮存儲。指針并不需要空間,而每一結點的父結點和子結點可通過數(shù)組索引算法查看。我們將用這一實現(xiàn)對比這一章節(jié)的實驗。
編譯樹(Compiled tree)的實現(xiàn)
每一個二叉樹都能由一個復雜的三元表達式表征,而這個表達式能進行編譯并鏈接到可直接在服務中使用的動態(tài)庫(DLL)。需要注意的是,我們可以實時添加或更新決策樹模型,而不需要重啟服務。
我們也可以利用 C++ 中的 LIKELY/UNLIKELY 注釋(annotations)。它們是編譯器發(fā)出指令的方向,并且能將分支預測更加偏向于跳轉指令(jump instruction)「可能」出現(xiàn)的一側。如果預測是對的,那么就意味著跳轉指令將占有 0 個 CPU 周期。我們可以根據(jù)在批量中排序的或離線分析中的真實樣本計算分支預測,這是因為訓練和評估集的分布不應該改變太多。
更復雜的模型有助于提高預測的精度,提供更相關的內容。但更復雜的模型需要更長的 CPU 周期(CPU cycles),返回結果的時間也更長??紤]到這些限制,我們做不到對所有可能的候選模型進行評估。然而,通過提升模型效率,我們可以做到在相同的時間幀運用相同的計算資源評價更多的候選模型(inventory)。
在本文中,我們比較了梯度提升決策樹(gradient-boosted decision tree ,簡稱GBDT)這一類預測模型的不同實現(xiàn),并描述了能產生更高效評估的 C++ 多方面改進。
決策樹模型
決策樹被普遍用作預測模型,該算法將關于對象的特征觀察值映射到對象類的目標值。由于其非線性和快速求值的特點,它成為了機器學習、數(shù)據(jù)分析和統(tǒng)計學之中最常見的預測模型方法之一。在這些樹狀結構中,葉結點表征分類標簽,而有向邊表征產生這些分類標簽的特征連接。
決策樹非常強大,但是訓練數(shù)據(jù)中的小變動可以演化為決策樹中的大變化。這可通過使用一項被稱為梯度提升(gradient boosting)的技術來補救。即,為錯誤分類的訓練實例提升權重,從而形成一個新的決策樹。接著對這一步驟進行連續(xù)重復以獲得新的決策樹。最后的分值(scores)是決策樹上每個葉節(jié)點分值的加權總和。
模型通常很少更新,且訓練復雜模型需要花費數(shù)小時。然而,在 Facebook 的大規(guī)模數(shù)據(jù)上,我們想要更頻繁地更新模型,即按照毫秒間隔依次運行它們。Facebook 的很多后端服務是用 C++ 寫的,因此我們利用這一語言的一些屬性做了些改善,以產生只需要更短 CPU 周期進行求值的高效模型。
下圖是一個簡單的決策樹,它包含以下特征:
今天某人 A 點擊通知的數(shù)量(特征 F[0])
對應通知的文章點贊數(shù)量(特征 F[1])
某人 A 點擊通知的總數(shù)量(特征 F[2])
在不同的結點,我們查看了上述特征的值,并遍歷整棵決策樹以獲取通知點擊的概率。
平面樹(Flat tree)的實現(xiàn)
決策樹模型的樸素實現(xiàn)是通過一個帶有指針的簡單二叉樹而完成的。然而,結點并不需要連續(xù)地存儲于內存之中,因為這樣二叉樹并非很有效。另一方面,決策樹通常是完整的二叉樹(即二叉樹的每個結點一定存在零值或兩棵子樹),它通過使用向量而壓縮存儲。指針并不需要空間,而每一結點的父結點和子結點可通過數(shù)組索引算法查看。我們將用這一實現(xiàn)對比這一章節(jié)的實驗。
編譯樹(Compiled tree)的實現(xiàn)
每一個二叉樹都能由一個復雜的三元表達式表征,而這個表達式能進行編譯并鏈接到可直接在服務中使用的動態(tài)庫(DLL)。需要注意的是,我們可以實時添加或更新決策樹模型,而不需要重啟服務。
我們也可以利用 C++ 中的 LIKELY/UNLIKELY 注釋(annotations)。它們是編譯器發(fā)出指令的方向,并且能將分支預測更加偏向于跳轉指令(jump instruction)「可能」出現(xiàn)的一側。如果預測是對的,那么就意味著跳轉指令將占有 0 個 CPU 周期。我們可以根據(jù)在批量中排序的或離線分析中的真實樣本計算分支預測,這是因為訓練和評估集的分布不應該改變太多。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 決策樹引擎解決方案
- 基于遺傳優(yōu)化決策樹的建筑能耗預測模型 6次下載
- 基于非均衡數(shù)據(jù)分類的猶豫模糊決策樹 5次下載
- 可提高心電信號分類識別準確率的模糊決策樹 14次下載
- 如何使用最優(yōu)二叉決策樹分類模型進行奶牛運動行為的識別 0次下載
- 基于決策樹的在軌衛(wèi)星故障診斷知識挖掘 0次下載
- 決策樹的介紹 0次下載
- 基于決策樹學習的智能機器人控制方法 15次下載
- 改進決策樹算法的應用研究
- 電子稱重儀表決策樹建模研究 24次下載
- 基于決策樹的數(shù)據(jù)挖掘算法應用研究 0次下載
- 基于決策樹與相異度的離群數(shù)據(jù)挖掘方法
- 基于屬性相似度的決策樹算法
- 一個基于粗集的決策樹規(guī)則提取算法
- 決策樹技術在汽車銷售中的應用
- 決策樹:技術全解與案例實戰(zhàn) 2.5k次閱讀
- 一種基于決策樹的飛機級故障診斷建模方法研究 918次閱讀
- 機器學習之決策樹生成詳解 2w次閱讀
- 機器學習中常用的決策樹算法技術解析 1.6k次閱讀
- 梯度提升方法(Gradient Boosting)算法案例 1.5w次閱讀
- 決策樹和隨機森林模型 8.9k次閱讀
- 什么是決策樹?決策樹算法思考總結 1.2w次閱讀
- 基于決策樹算法的電能表故障預測方法 2.1k次閱讀
- 決策樹的原理和決策樹構建的準備工作,機器學習決策樹的原理 6.9k次閱讀
- 結合深度神經網絡和決策樹的完美方案 1.1w次閱讀
- 數(shù)據(jù)挖掘算法:決策樹算法如何學習及分裂剪枝 6.4k次閱讀
- 構建一個決策樹并查看它如何進行預測 1.5w次閱讀
- 大神教你怎么用Python抓取婚戀網用戶數(shù)據(jù),用決策樹生成自己擇偶觀 4.7k次閱讀
- 機器學習:決策樹--python 1.9k次閱讀
- 解讀決策樹與隨機森林模型的概念 4.2k次閱讀
下載排行
本周
- 1PC0805全集成單相無刷直流電機可編程閉環(huán)驅動器英文資料
- 0.59 MB | 1次下載 | 免費
- 2變頻器維修資料大全
- 1.28 MB | 1次下載 | 4 積分
- 3HD-1二合一恒電位儀的工作原理
- 0.01 MB | 次下載 | 1 積分
- 4rk3562ddr4設計資料圖
- 0.74 MB | 次下載 | 2 積分
- 5SQ33239 CPC8 ZVS 反激同步整流技術手冊
- 1.62 MB | 次下載 | 免費
- 6變頻器維修入門
- 1.08 MB | 次下載 | 4 積分
- 7SY5231 次級側同步整流技術手冊
- 0.89 MB | 次下載 | 免費
- 8LT3580 升壓/反相DC/DC 帶2A開關的轉換器技術手冊
- 0.46 MB | 次下載 | 免費
本月
- 1EMC PCB設計總結
- 0.33 MB | 10次下載 | 免費
- 2耗盡型MOS FET產品目錄選型表
- 0.14 MB | 4次下載 | 免費
- 3PD取電芯片 ECP5702規(guī)格書
- 0.88 MB | 4次下載 | 免費
- 4九陽JYCP-21ZD-A主控板電路圖資料
- 2.33 MB | 2次下載 | 10 積分
- 5氮化鎵GaN FET/GaN HEMT 功率驅動電路選型表
- 0.10 MB | 2次下載 | 免費
- 6TI系列-米爾TI AM62L核心板開發(fā)板-高能效低功耗嵌入式平臺
- 1.51 MB | 1次下載 | 免費
- 7PD取電芯片,可取5/9/12/15/20V電壓ECP5702數(shù)據(jù)手冊
- 0.88 MB | 1次下載 | 免費
- 8飛騰S5000C-64雙路服務器系列應用宣傳冊--一乘科技
- 945.81 KB | 1次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233095次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191464次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183360次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81606次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73832次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App





創(chuàng)作
發(fā)文章
發(fā)帖
提問
發(fā)資料
發(fā)視頻
上傳資料賺積分
評論