吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

了解一下GBDT和LR的融合方案

電子工程師 ? 來(lái)源:lp ? 2019-03-28 10:15 ? 次閱讀

寫在前面的話

GBDT和LR的融合在廣告點(diǎn)擊率預(yù)估中算是發(fā)展比較早的算法,為什么會(huì)在這里寫這么一篇呢?本來(lái)想嘗試寫一下阿里的深度興趣網(wǎng)絡(luò)(Deep Interest Network),發(fā)現(xiàn)阿里之前還有一個(gè)算法MLR,然后去查找相關(guān)的資料,里面提及了樹(shù)模型也就是GBDT+LR方案的缺點(diǎn),恰好之前也不太清楚GBDT+LR到底是怎么做的,所以今天我們先來(lái)了解一下GBDT和LR的融合方案。

在CTR預(yù)估問(wèn)題的發(fā)展初期,使用最多的方法就是邏輯回歸(LR),LR使用了Sigmoid變換將函數(shù)值映射到0~1區(qū)間,映射后的函數(shù)值就是CTR的預(yù)估值。

LR屬于線性模型,容易并行化,可以輕松處理上億條數(shù)據(jù),但是學(xué)習(xí)能力十分有限,需要大量的特征工程來(lái)增加模型的學(xué)習(xí)能力。但大量的特征工程耗時(shí)耗力同時(shí)并不一定會(huì)帶來(lái)效果提升。因此,如何自動(dòng)發(fā)現(xiàn)有效的特征、特征組合,彌補(bǔ)人工經(jīng)驗(yàn)不足,縮短LR特征實(shí)驗(yàn)周期,是亟需解決的問(wèn)題。

FM模型通過(guò)隱變量的方式,發(fā)現(xiàn)兩兩特征之間的組合關(guān)系,但這種特征組合僅限于兩兩特征之間,后來(lái)發(fā)展出來(lái)了使用深度神經(jīng)網(wǎng)絡(luò)去挖掘更高層次的特征組合關(guān)系。但其實(shí)在使用神經(jīng)網(wǎng)絡(luò)之前,GBDT也是一種經(jīng)常用來(lái)發(fā)現(xiàn)特征組合的有效思路。

Facebook 2014年的文章介紹了通過(guò)GBDT解決LR的特征組合問(wèn)題,隨后Kaggle競(jìng)賽也有實(shí)踐此思路,GBDT與LR融合開(kāi)始引起了業(yè)界關(guān)注。

在介紹這個(gè)模型之前,我們先來(lái)介紹兩個(gè)問(wèn)題:

1)為什么要使用集成的決策樹(shù)模型,而不是單棵的決策樹(shù)模型:一棵樹(shù)的表達(dá)能力很弱,不足以表達(dá)多個(gè)有區(qū)分性的特征組合,多棵樹(shù)的表達(dá)能力更強(qiáng)一些。可以更好的發(fā)現(xiàn)有效的特征和特征組合

2)為什么建樹(shù)采用GBDT而非RF:RF也是多棵樹(shù),但從效果上有實(shí)踐證明不如GBDT。且GBDT前面的樹(shù),特征分裂主要體現(xiàn)對(duì)多數(shù)樣本有區(qū)分度的特征;后面的樹(shù),主要體現(xiàn)的是經(jīng)過(guò)前N顆樹(shù),殘差仍然較大的少數(shù)樣本。優(yōu)先選用在整體上有區(qū)分度的特征,再選用針對(duì)少數(shù)樣本有區(qū)分度的特征,思路更加合理,這應(yīng)該也是用GBDT的原因。

了解了為什么要用GBDT,我們就來(lái)看看到底二者是怎么融合的吧!

GBDT和LR的融合方案,F(xiàn)aceBook的paper中有個(gè)例子:

圖中共有兩棵樹(shù),x為一條輸入樣本,遍歷兩棵樹(shù)后,x樣本分別落到兩顆樹(shù)的葉子節(jié)點(diǎn)上,每個(gè)葉子節(jié)點(diǎn)對(duì)應(yīng)LR一維特征,那么通過(guò)遍歷樹(shù),就得到了該樣本對(duì)應(yīng)的所有LR特征。構(gòu)造的新特征向量是取值0/1的。舉例來(lái)說(shuō):上圖有兩棵樹(shù),左樹(shù)有三個(gè)葉子節(jié)點(diǎn),右樹(shù)有兩個(gè)葉子節(jié)點(diǎn),最終的特征即為五維的向量。對(duì)于輸入x,假設(shè)他落在左樹(shù)第一個(gè)節(jié)點(diǎn),編碼[1,0,0],落在右樹(shù)第二個(gè)節(jié)點(diǎn)則編碼[0,1],所以整體的編碼為[1,0,0,0,1],這類編碼作為特征,輸入到LR中進(jìn)行分類。

這個(gè)方案還是很簡(jiǎn)單的吧,在繼續(xù)介紹下去之前,我們先介紹一下代碼實(shí)踐部分。

本文介紹的代碼只是一個(gè)簡(jiǎn)單的Demo,實(shí)際中大家需要根據(jù)自己的需要進(jìn)行參照或者修改。

github地址:https://github.com/princewen/tensorflow_practice/tree/master/recommendation/GBDT%2BLR-Demo

訓(xùn)練GBDT模型本文使用lightgbm包來(lái)訓(xùn)練我們的GBDT模型,訓(xùn)練共100棵樹(shù),每棵樹(shù)有64個(gè)葉子結(jié)點(diǎn)。

df_train=pd.read_csv('data/train.csv')df_test=pd.read_csv('data/test.csv')NUMERIC_COLS=["ps_reg_01","ps_reg_02","ps_reg_03","ps_car_12","ps_car_13","ps_car_14","ps_car_15",]print(df_test.head(10))y_train=df_train['target']#traininglabely_test=df_test['target']#testinglabelX_train=df_train[NUMERIC_COLS]#trainingdatasetX_test=df_test[NUMERIC_COLS]#testingdataset#createdatasetforlightgbmlgb_train=lgb.Dataset(X_train,y_train)lgb_eval=lgb.Dataset(X_test,y_test,reference=lgb_train)params={'task':'train','boosting_type':'gbdt','objective':'binary','metric':{'binary_logloss'},'num_leaves':64,'num_trees':100,'learning_rate':0.01,'feature_fraction':0.9,'bagging_fraction':0.8,'bagging_freq':5,'verbose':0}#numberofleaves,willbeusedinfeaturetransformationnum_leaf=64print('Starttraining...')#traingbm=lgb.train(params,lgb_train,num_boost_round=100,valid_sets=lgb_train)print('Savemodel...')#savemodeltofilegbm.save_model('model.txt')print('Startpredicting...')#predictandgetdataonleaves,trainingdata

特征轉(zhuǎn)換

在訓(xùn)練得到100棵樹(shù)之后,我們需要得到的不是GBDT的預(yù)測(cè)結(jié)果,而是每一條訓(xùn)練數(shù)據(jù)落在了每棵樹(shù)的哪個(gè)葉子結(jié)點(diǎn)上,因此需要使用下面的語(yǔ)句:

y_pred=gbm.predict(X_train,pred_leaf=True)

打印上面結(jié)果的輸出,可以看到shape是(8001,100),即訓(xùn)練數(shù)據(jù)量*樹(shù)的棵樹(shù)

結(jié)果為:

print(np.array(y_pred).shape)print(y_pred[0])

然后我們需要將每棵樹(shù)的特征進(jìn)行one-hot處理,如前面所說(shuō),假設(shè)第一棵樹(shù)落在43號(hào)葉子結(jié)點(diǎn)上,那我們需要建立一個(gè)64維的向量,除43維之外全部都是0。因此用于LR訓(xùn)練的特征維數(shù)共num_trees * num_leaves。

print('Writingtransformedtrainingdata')transformed_training_matrix=np.zeros([len(y_pred),len(y_pred[0])*num_leaf],dtype=np.int64)#N*num_tress*num_leafsforiinrange(0,len(y_pred)):temp=np.arange(len(y_pred[0]))*num_leaf+np.array(y_pred[I])transformed_training_matrix[i][temp]+=1

當(dāng)然,對(duì)于測(cè)試集也要進(jìn)行同樣的處理:

y_pred=gbm.predict(X_test,pred_leaf=True)print('Writingtransformedtestingdata')transformed_testing_matrix=np.zeros([len(y_pred),len(y_pred[0])*num_leaf],dtype=np.int64)foriinrange(0,len(y_pred)):temp=np.arange(len(y_pred[0]))*num_leaf+np.array(y_pred[I])transformed_testing_matrix[i][temp]+=1

LR訓(xùn)練然后我們可以用轉(zhuǎn)換后的訓(xùn)練集特征和label訓(xùn)練我們的LR模型,并對(duì)測(cè)試集進(jìn)行測(cè)試:

lm=LogisticRegression(penalty='l2',C=0.05)#logesticmodelconstructionlm.fit(transformed_training_matrix,y_train)#fittingthedatay_pred_test=lm.predict_proba(transformed_testing_matrix)#Givetheprobabiltyoneachlabel

我們這里得到的不是簡(jiǎn)單的類別,而是每個(gè)類別的概率。

效果評(píng)價(jià)在Facebook的paper中,模型使用NE(Normalized Cross-Entropy),進(jìn)行評(píng)價(jià),計(jì)算公式如下:

代碼如下:

NE=(-1)/len(y_pred_test)*sum(((1+y_test)/2*np.log(y_pred_test[:,1])+(1-y_test)/2*np.log(1-y_pred_test[:,1])))print("NormalizedCrossEntropy"+str(NE))

現(xiàn)在的GBDT和LR的融合方案真的適合現(xiàn)在的大多數(shù)業(yè)務(wù)數(shù)據(jù)么?現(xiàn)在的業(yè)務(wù)數(shù)據(jù)是什么?是大量離散特征導(dǎo)致的高維度離散數(shù)據(jù)。而樹(shù)模型對(duì)這樣的離散特征,是不能很好處理的,要說(shuō)為什么,因?yàn)檫@容易導(dǎo)致過(guò)擬合。下面的一段話來(lái)自知乎:

用蓋坤的話說(shuō),GBDT只是對(duì)歷史的一個(gè)記憶罷了,沒(méi)有推廣性,或者說(shuō)泛化能力。

但這并不是說(shuō)對(duì)于大規(guī)模的離散特征,GBDT和LR的方案不再適用,感興趣的話大家可以看一下參考文獻(xiàn)2和3,這里就不再介紹了。

剛才提到了阿里的蓋坤大神,他的團(tuán)隊(duì)在2017年提出了兩個(gè)重要的用于CTR預(yù)估的模型,MLR和DIN,之后的系列中,我們會(huì)講解這兩種模型的理論和實(shí)戰(zhàn)!歡迎大家繼續(xù)關(guān)注!

1、Facebook的paper:http://quinonero.net/Publications/predicting-clicks-facebook.pdf2、http://www.cbdio.com/BigData/2015-08/27/content_3750170.htm3、https://blog.csdn.net/shine19930820/article/details/717136804、https://www.zhihu.com/question/358215665、https://github.com/neal668/LightGBM-GBDT-LR/blob/master/GBFT%2BLR_simple.py

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4781

    瀏覽量

    101178
  • LR
    LR
    +關(guān)注

    關(guān)注

    1

    文章

    8

    瀏覽量

    10076
  • GBDT
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    3917

原文標(biāo)題:推薦系統(tǒng)遇上深度學(xué)習(xí)(十)--GBDT+LR融合方案實(shí)戰(zhàn)

文章出處:【微信號(hào):atleadai,微信公眾號(hào):LeadAI OpenLab】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    簡(jiǎn)單了解一下各種電源端口的命名

    了解電源之前,先來(lái)簡(jiǎn)單了解一下各種電源端口的命名VCC:C=circuit表示電路的意思,即接入電路的電壓。VDD:D=device表示器件的意思,即器件內(nèi)部的工作電壓。VSS:S=series表示
    發(fā)表于 12-27 07:15

    USB顯微鏡,不想了解一下嗎?

    USB顯微鏡,不想了解一下嗎? 近日,在很多國(guó)外網(wǎng)站上都搜的到配備了USB接口的數(shù)字顯微鏡,他們打破了傳統(tǒng)顯微鏡機(jī)體笨重,操作復(fù)雜的傳統(tǒng),
    發(fā)表于 04-28 10:24 ?3557次閱讀

    宏碁智能佛珠了解一下

    朋友,最近工作順利嗎?家庭幸福嗎?生活美滿嗎?看你心情復(fù)雜,要不要了解一下宏碁剛發(fā)布的智能佛珠?
    的頭像 發(fā)表于 08-08 16:27 ?3593次閱讀

    GBDT算法原理以及實(shí)例理解

    GBDT 的全稱是 Gradient Boosting Decision Tree,梯度提升樹(shù),在傳統(tǒng)機(jī)器學(xué)習(xí)算法中,GBDT算的上TOP3的算法。
    的頭像 發(fā)表于 04-28 16:47 ?2.8w次閱讀
    <b class='flag-5'>GBDT</b>算法原理以及實(shí)例理解

    XGBoost原理概述 XGBoost和GBDT的區(qū)別

    相比于經(jīng)典的GBDT,xgboost做了些改進(jìn),從而在效果和性能上有明顯的提升。
    的頭像 發(fā)表于 07-16 18:54 ?7.9w次閱讀
    XGBoost原理概述 XGBoost和<b class='flag-5'>GBDT</b>的區(qū)別

    帶你了解一下什么是USB 3.1接口

    盡管USB是外部設(shè)備中最常見(jiàn)的連接,但它有很多的版本,不同的接頭和連接類型都令人困惑不解。USB 3.1是當(dāng)今最常見(jiàn)的標(biāo)準(zhǔn)之,但它究竟是什么呢?它與之前和之后的版本有什么不同?讓我們來(lái)詳細(xì)了解一下
    發(fā)表于 09-23 17:31 ?1.7w次閱讀

    邏輯回歸與GBDT模型各自的原理及優(yōu)缺點(diǎn)

    GBDT+LR簡(jiǎn)介 協(xié)同過(guò)濾和矩陣分解存在的劣勢(shì)就是僅利用了用戶與物品相互行為信息進(jìn)行推薦, 忽視了用戶自身特征, 物品自身特征以及上下文信息等,導(dǎo)致生成的結(jié)果往往會(huì)比較片面。而這次介紹的這個(gè)
    的頭像 發(fā)表于 12-26 10:01 ?1.2w次閱讀
    邏輯回歸與<b class='flag-5'>GBDT</b>模型各自的原理及優(yōu)缺點(diǎn)

    GBDT是如何用于分類的

    ? 因?yàn)橛脴?shù)模型太習(xí)以為常了,以至于看到這個(gè)標(biāo)題很容易覺(jué)得這很顯然。但越簡(jiǎn)單的東西越容易出現(xiàn)知識(shí)盲區(qū),仔細(xì)想一下好像確實(shí)有點(diǎn)疑問(wèn):GBDT 用的是回歸樹(shù),是如何做的分類呢? - 作者:1直在路上1
    的頭像 發(fā)表于 12-26 10:30 ?3209次閱讀
    <b class='flag-5'>GBDT</b>是如何用于分類的

    了解一下不同的SAR ADC可用模擬輸入類型資料下載

    電子發(fā)燒友網(wǎng)為你提供了解一下不同的SAR ADC可用模擬輸入類型資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計(jì)、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發(fā)表于 04-07 08:41 ?26次下載
    <b class='flag-5'>了解</b><b class='flag-5'>一下</b>不同的SAR ADC可用模擬輸入類型資料下載

    兼顧大功率和高能效:這款WAYON維安無(wú)橋240W電源模塊方案 了解一下

    兼顧大功率和高能效:這款WAYON維安無(wú)橋240W電源模塊方案 了解一下
    的頭像 發(fā)表于 01-06 13:46 ?1600次閱讀
    兼顧大功率和高能效:這款WAYON維安無(wú)橋240W電源模塊<b class='flag-5'>方案</b> <b class='flag-5'>了解</b><b class='flag-5'>一下</b>

    大哥!100W移動(dòng)電源方案了解一下

    100W移動(dòng)電源方案了解一下
    的頭像 發(fā)表于 06-02 19:03 ?2595次閱讀
    大哥!100W移動(dòng)電源<b class='flag-5'>方案</b>,<b class='flag-5'>了解</b><b class='flag-5'>一下</b>

    了解一下光纖傳輸?shù)奶攸c(diǎn)

    光纖作為綜合布線種常見(jiàn)的傳輸媒介,很多人搞不清楚光纖和光纜這兩者,光纖是光傳導(dǎo)工具,傳輸原理是“光的全反射”,被用作長(zhǎng)距離的信息傳遞,下面跟著科蘭小編一起來(lái)了解一下光纖傳輸?shù)奶攸c(diǎn)。
    的頭像 發(fā)表于 06-08 13:42 ?951次閱讀

    虹科帶你來(lái)了解一下汽車以太網(wǎng)和TSN的測(cè)試標(biāo)準(zhǔn)

    虹科帶你來(lái)了解一下汽車以太網(wǎng)和TSN的測(cè)試標(biāo)準(zhǔn)
    的頭像 發(fā)表于 12-22 17:46 ?3716次閱讀
    虹科帶你來(lái)<b class='flag-5'>了解</b><b class='flag-5'>一下</b>汽車以太網(wǎng)和TSN的測(cè)試標(biāo)準(zhǔn)

    了解一下“薄膜厚度監(jiān)控”

    光學(xué)鍍膜干貨來(lái)了!了解一下“薄膜厚度監(jiān)控”
    的頭像 發(fā)表于 07-20 10:11 ?911次閱讀
    <b class='flag-5'>了解</b><b class='flag-5'>一下</b>“薄膜厚度監(jiān)控”

    無(wú)需電流采樣電阻的智能電機(jī)驅(qū)動(dòng)IC,不來(lái)了解一下么?

    無(wú)需電流采樣電阻的智能電機(jī)驅(qū)動(dòng)IC,不來(lái)了解一下么?
    的頭像 發(fā)表于 11-30 17:43 ?494次閱讀
    無(wú)需電流采樣電阻的智能電機(jī)驅(qū)動(dòng)IC,不來(lái)<b class='flag-5'>了解</b><b class='flag-5'>一下</b>么?
    百家乐官网具体怎么收费的| 百家乐官网网上真钱娱乐网| tt娱乐城注册| 七胜百家乐娱乐场| 新澳博百家乐官网的玩法技巧和规则 | 大发888娱乐场下载英皇国际| 电子百家乐作假| 百家乐开户送8彩金| 百家乐官网娱乐网官网网| 百家乐官网手机游戏下载| 太阳城娱乐城官方网站| 大都会百家乐的玩法技巧和规则 | 巴宝莉百家乐官网的玩法技巧和规则| 现金百家乐官网赌法| 乐博娱乐城| 大发888真钱游戏娱乐城下载 | 百家乐合理的投注法| 百家乐官网斗地主| 百家乐官网翻天粤语下载| 连平县| 大发888娱乐官方网站| 买百家乐程序| 赌百家乐的高手| 电玩百家乐官网的玩法技巧和规则| 澳门百家乐官网娱乐城注册| 大赢家百家乐官网66| 天天乐娱乐| 大发888促销活动| 澳门百家乐网40125| 百家乐打水套利| 金沙百家乐娱乐城场| 百家乐官网群shozo权威| 澳门百家乐官网娱乐网| 百家乐官网网站是多少| 百家乐官网吹| 百家乐官网打立了| 网上百家乐官网大赢家筹码| 百家乐官网10个人| 怎样看百家乐官网路单| 波浪百家乐官网测试| 百家乐官网赌场赌场平台|