資料介紹
Facebook 使用機(jī)器學(xué)習(xí)和排序模型給所有用戶帶來最佳體驗(yàn),例如發(fā)送什么通知,在你的消息推送中放入什么文章,以及對(duì)于你想關(guān)注的人提些什么建議。高質(zhì)量的機(jī)器學(xué)習(xí)模型對(duì)于找出最相關(guān)的內(nèi)容來說很重要。我們觀察了大量實(shí)時(shí)信號(hào)以制定最佳排序;例如,在過濾通知的使用情況中,我們觀察某人是否已點(diǎn)擊相似的通知,或者對(duì)應(yīng)通知的文章獲得了多少贊。由于每執(zhí)行一次就會(huì)生成一個(gè)新通知推送,所以我們想要盡快返回發(fā)送通知的決策。
更復(fù)雜的模型有助于提高預(yù)測(cè)的精度,提供更相關(guān)的內(nèi)容。但更復(fù)雜的模型需要更長的 CPU 周期(CPU cycles),返回結(jié)果的時(shí)間也更長??紤]到這些限制,我們做不到對(duì)所有可能的候選模型進(jìn)行評(píng)估。然而,通過提升模型效率,我們可以做到在相同的時(shí)間幀運(yùn)用相同的計(jì)算資源評(píng)價(jià)更多的候選模型(inventory)。
在本文中,我們比較了梯度提升決策樹(gradient-boosted decision tree ,簡稱GBDT)這一類預(yù)測(cè)模型的不同實(shí)現(xiàn),并描述了能產(chǎn)生更高效評(píng)估的 C++ 多方面改進(jìn)。
決策樹模型
決策樹被普遍用作預(yù)測(cè)模型,該算法將關(guān)于對(duì)象的特征觀察值映射到對(duì)象類的目標(biāo)值。由于其非線性和快速求值的特點(diǎn),它成為了機(jī)器學(xué)習(xí)、數(shù)據(jù)分析和統(tǒng)計(jì)學(xué)之中最常見的預(yù)測(cè)模型方法之一。在這些樹狀結(jié)構(gòu)中,葉結(jié)點(diǎn)表征分類標(biāo)簽,而有向邊表征產(chǎn)生這些分類標(biāo)簽的特征連接。
決策樹非常強(qiáng)大,但是訓(xùn)練數(shù)據(jù)中的小變動(dòng)可以演化為決策樹中的大變化。這可通過使用一項(xiàng)被稱為梯度提升(gradient boosting)的技術(shù)來補(bǔ)救。即,為錯(cuò)誤分類的訓(xùn)練實(shí)例提升權(quán)重,從而形成一個(gè)新的決策樹。接著對(duì)這一步驟進(jìn)行連續(xù)重復(fù)以獲得新的決策樹。最后的分值(scores)是決策樹上每個(gè)葉節(jié)點(diǎn)分值的加權(quán)總和。
模型通常很少更新,且訓(xùn)練復(fù)雜模型需要花費(fèi)數(shù)小時(shí)。然而,在 Facebook 的大規(guī)模數(shù)據(jù)上,我們想要更頻繁地更新模型,即按照毫秒間隔依次運(yùn)行它們。Facebook 的很多后端服務(wù)是用 C++ 寫的,因此我們利用這一語言的一些屬性做了些改善,以產(chǎn)生只需要更短 CPU 周期進(jìn)行求值的高效模型。
下圖是一個(gè)簡單的決策樹,它包含以下特征:
今天某人 A 點(diǎn)擊通知的數(shù)量(特征 F[0])
對(duì)應(yīng)通知的文章點(diǎn)贊數(shù)量(特征 F[1])
某人 A 點(diǎn)擊通知的總數(shù)量(特征 F[2])
在不同的結(jié)點(diǎn),我們查看了上述特征的值,并遍歷整棵決策樹以獲取通知點(diǎn)擊的概率。
平面樹(Flat tree)的實(shí)現(xiàn)
決策樹模型的樸素實(shí)現(xiàn)是通過一個(gè)帶有指針的簡單二叉樹而完成的。然而,結(jié)點(diǎn)并不需要連續(xù)地存儲(chǔ)于內(nèi)存之中,因?yàn)檫@樣二叉樹并非很有效。另一方面,決策樹通常是完整的二叉樹(即二叉樹的每個(gè)結(jié)點(diǎn)一定存在零值或兩棵子樹),它通過使用向量而壓縮存儲(chǔ)。指針并不需要空間,而每一結(jié)點(diǎn)的父結(jié)點(diǎn)和子結(jié)點(diǎn)可通過數(shù)組索引算法查看。我們將用這一實(shí)現(xiàn)對(duì)比這一章節(jié)的實(shí)驗(yàn)。
編譯樹(Compiled tree)的實(shí)現(xiàn)
每一個(gè)二叉樹都能由一個(gè)復(fù)雜的三元表達(dá)式表征,而這個(gè)表達(dá)式能進(jìn)行編譯并鏈接到可直接在服務(wù)中使用的動(dòng)態(tài)庫(DLL)。需要注意的是,我們可以實(shí)時(shí)添加或更新決策樹模型,而不需要重啟服務(wù)。
我們也可以利用 C++ 中的 LIKELY/UNLIKELY 注釋(annotations)。它們是編譯器發(fā)出指令的方向,并且能將分支預(yù)測(cè)更加偏向于跳轉(zhuǎn)指令(jump instruction)「可能」出現(xiàn)的一側(cè)。如果預(yù)測(cè)是對(duì)的,那么就意味著跳轉(zhuǎn)指令將占有 0 個(gè) CPU 周期。我們可以根據(jù)在批量中排序的或離線分析中的真實(shí)樣本計(jì)算分支預(yù)測(cè),這是因?yàn)橛?xùn)練和評(píng)估集的分布不應(yīng)該改變太多。
更復(fù)雜的模型有助于提高預(yù)測(cè)的精度,提供更相關(guān)的內(nèi)容。但更復(fù)雜的模型需要更長的 CPU 周期(CPU cycles),返回結(jié)果的時(shí)間也更長??紤]到這些限制,我們做不到對(duì)所有可能的候選模型進(jìn)行評(píng)估。然而,通過提升模型效率,我們可以做到在相同的時(shí)間幀運(yùn)用相同的計(jì)算資源評(píng)價(jià)更多的候選模型(inventory)。
在本文中,我們比較了梯度提升決策樹(gradient-boosted decision tree ,簡稱GBDT)這一類預(yù)測(cè)模型的不同實(shí)現(xiàn),并描述了能產(chǎn)生更高效評(píng)估的 C++ 多方面改進(jìn)。
決策樹模型
決策樹被普遍用作預(yù)測(cè)模型,該算法將關(guān)于對(duì)象的特征觀察值映射到對(duì)象類的目標(biāo)值。由于其非線性和快速求值的特點(diǎn),它成為了機(jī)器學(xué)習(xí)、數(shù)據(jù)分析和統(tǒng)計(jì)學(xué)之中最常見的預(yù)測(cè)模型方法之一。在這些樹狀結(jié)構(gòu)中,葉結(jié)點(diǎn)表征分類標(biāo)簽,而有向邊表征產(chǎn)生這些分類標(biāo)簽的特征連接。
決策樹非常強(qiáng)大,但是訓(xùn)練數(shù)據(jù)中的小變動(dòng)可以演化為決策樹中的大變化。這可通過使用一項(xiàng)被稱為梯度提升(gradient boosting)的技術(shù)來補(bǔ)救。即,為錯(cuò)誤分類的訓(xùn)練實(shí)例提升權(quán)重,從而形成一個(gè)新的決策樹。接著對(duì)這一步驟進(jìn)行連續(xù)重復(fù)以獲得新的決策樹。最后的分值(scores)是決策樹上每個(gè)葉節(jié)點(diǎn)分值的加權(quán)總和。
模型通常很少更新,且訓(xùn)練復(fù)雜模型需要花費(fèi)數(shù)小時(shí)。然而,在 Facebook 的大規(guī)模數(shù)據(jù)上,我們想要更頻繁地更新模型,即按照毫秒間隔依次運(yùn)行它們。Facebook 的很多后端服務(wù)是用 C++ 寫的,因此我們利用這一語言的一些屬性做了些改善,以產(chǎn)生只需要更短 CPU 周期進(jìn)行求值的高效模型。
下圖是一個(gè)簡單的決策樹,它包含以下特征:
今天某人 A 點(diǎn)擊通知的數(shù)量(特征 F[0])
對(duì)應(yīng)通知的文章點(diǎn)贊數(shù)量(特征 F[1])
某人 A 點(diǎn)擊通知的總數(shù)量(特征 F[2])
在不同的結(jié)點(diǎn),我們查看了上述特征的值,并遍歷整棵決策樹以獲取通知點(diǎn)擊的概率。
平面樹(Flat tree)的實(shí)現(xiàn)
決策樹模型的樸素實(shí)現(xiàn)是通過一個(gè)帶有指針的簡單二叉樹而完成的。然而,結(jié)點(diǎn)并不需要連續(xù)地存儲(chǔ)于內(nèi)存之中,因?yàn)檫@樣二叉樹并非很有效。另一方面,決策樹通常是完整的二叉樹(即二叉樹的每個(gè)結(jié)點(diǎn)一定存在零值或兩棵子樹),它通過使用向量而壓縮存儲(chǔ)。指針并不需要空間,而每一結(jié)點(diǎn)的父結(jié)點(diǎn)和子結(jié)點(diǎn)可通過數(shù)組索引算法查看。我們將用這一實(shí)現(xiàn)對(duì)比這一章節(jié)的實(shí)驗(yàn)。
編譯樹(Compiled tree)的實(shí)現(xiàn)
每一個(gè)二叉樹都能由一個(gè)復(fù)雜的三元表達(dá)式表征,而這個(gè)表達(dá)式能進(jìn)行編譯并鏈接到可直接在服務(wù)中使用的動(dòng)態(tài)庫(DLL)。需要注意的是,我們可以實(shí)時(shí)添加或更新決策樹模型,而不需要重啟服務(wù)。
我們也可以利用 C++ 中的 LIKELY/UNLIKELY 注釋(annotations)。它們是編譯器發(fā)出指令的方向,并且能將分支預(yù)測(cè)更加偏向于跳轉(zhuǎn)指令(jump instruction)「可能」出現(xiàn)的一側(cè)。如果預(yù)測(cè)是對(duì)的,那么就意味著跳轉(zhuǎn)指令將占有 0 個(gè) CPU 周期。我們可以根據(jù)在批量中排序的或離線分析中的真實(shí)樣本計(jì)算分支預(yù)測(cè),這是因?yàn)橛?xùn)練和評(píng)估集的分布不應(yīng)該改變太多。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 決策樹引擎解決方案
- 基于遺傳優(yōu)化決策樹的建筑能耗預(yù)測(cè)模型 6次下載
- 基于非均衡數(shù)據(jù)分類的猶豫模糊決策樹 5次下載
- 可提高心電信號(hào)分類識(shí)別準(zhǔn)確率的模糊決策樹 14次下載
- 如何使用最優(yōu)二叉決策樹分類模型進(jìn)行奶牛運(yùn)動(dòng)行為的識(shí)別 0次下載
- 基于決策樹的在軌衛(wèi)星故障診斷知識(shí)挖掘 0次下載
- 決策樹的介紹 0次下載
- 基于決策樹學(xué)習(xí)的智能機(jī)器人控制方法 15次下載
- 改進(jìn)決策樹算法的應(yīng)用研究
- 電子稱重儀表決策樹建模研究 24次下載
- 基于決策樹的數(shù)據(jù)挖掘算法應(yīng)用研究 0次下載
- 基于決策樹與相異度的離群數(shù)據(jù)挖掘方法
- 基于屬性相似度的決策樹算法
- 一個(gè)基于粗集的決策樹規(guī)則提取算法
- 決策樹技術(shù)在汽車銷售中的應(yīng)用
- 決策樹:技術(shù)全解與案例實(shí)戰(zhàn) 1423次閱讀
- 一種基于決策樹的飛機(jī)級(jí)故障診斷建模方法研究 918次閱讀
- 機(jī)器學(xué)習(xí)之決策樹生成詳解 1.9w次閱讀
- 機(jī)器學(xué)習(xí)中常用的決策樹算法技術(shù)解析 1339次閱讀
- 梯度提升方法(Gradient Boosting)算法案例 1.4w次閱讀
- 決策樹和隨機(jī)森林模型 8018次閱讀
- 什么是決策樹?決策樹算法思考總結(jié) 1.1w次閱讀
- 基于決策樹算法的電能表故障預(yù)測(cè)方法 1775次閱讀
- 決策樹的原理和決策樹構(gòu)建的準(zhǔn)備工作,機(jī)器學(xué)習(xí)決策樹的原理 6073次閱讀
- 結(jié)合深度神經(jīng)網(wǎng)絡(luò)和決策樹的完美方案 9741次閱讀
- 數(shù)據(jù)挖掘算法:決策樹算法如何學(xué)習(xí)及分裂剪枝 5814次閱讀
- 構(gòu)建一個(gè)決策樹并查看它如何進(jìn)行預(yù)測(cè) 1.4w次閱讀
- 大神教你怎么用Python抓取婚戀網(wǎng)用戶數(shù)據(jù),用決策樹生成自己擇偶觀 4225次閱讀
- 機(jī)器學(xué)習(xí):決策樹--python 1626次閱讀
- 解讀決策樹與隨機(jī)森林模型的概念 3714次閱讀
下載排行
本周
- 1高功率密度碳化硅MOSFET軟開關(guān)三相逆變器損耗分析
- 2.27 MB | 33次下載 | 10 積分
- 2經(jīng)典1000W純正弦波逆變器原理圖資料
- 0.08 MB | 6次下載 | 10 積分
- 3DH1766系列·三路可編程直流電源技術(shù)手冊(cè)
- 1.93 MB | 3次下載 | 免費(fèi)
- 4智能蓄電池充放電測(cè)試儀 蓄電池放電檢測(cè)儀專業(yè)防護(hù)功能
- 0.13 MB | 2次下載 | 免費(fèi)
- 5GD選型手冊(cè)
- 6.92 MB | 2次下載 | 免費(fèi)
- 68784芯片點(diǎn)位圖資料
- 0.16 MB | 1次下載 | 1 積分
- 7WORLD 3000 H型接線圖資料
- 0.17 MB | 1次下載 | 10 積分
- 8HAL9303線性霍爾效應(yīng)傳感器技術(shù)手冊(cè)
- 0.70 MB | 1次下載 | 免費(fèi)
本月
- 1高功率密度碳化硅MOSFET軟開關(guān)三相逆變器損耗分析
- 2.27 MB | 33次下載 | 10 積分
- 2常用電子元器件使用手冊(cè)
- 2.40 MB | 30次下載 | 免費(fèi)
- 3電路、電流和電壓介紹
- 14.96 MB | 9次下載 | 免費(fèi)
- 4MS1826 HDMI 多功能視頻處理器數(shù)據(jù)手冊(cè)
- 4.51 MB | 8次下載 | 免費(fèi)
- 5USB拓展塢PCB圖資料
- 0.57 MB | 7次下載 | 免費(fèi)
- 6經(jīng)典1000W純正弦波逆變器原理圖資料
- 0.08 MB | 6次下載 | 10 積分
- 7TYPEC電路原理圖資料
- 0.14 MB | 5次下載 | 免費(fèi)
- 8SR520-SR5100肖特基二極管規(guī)格書
- 0.11 MB | 4次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935134次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191424次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183352次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81600次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73818次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App






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