常見計算廣告點擊率預(yù)估算法總結(jié)

前言

談到CTR灭翔,都多多少少有些了解,尤其在互聯(lián)網(wǎng)廣告這塊,簡而言之,就是給某個網(wǎng)絡(luò)服務(wù)使用者推送一個廣告蝇率,該廣告被點擊的概率,這個問題難度簡單到街邊算命隨口告訴你今天適不適合娶親、適不適合搬遷一樣读处,也可以復(fù)雜到拿到各種諸如龜殼糊治、銅錢等等家伙事,在沐浴更衣罚舱、凈手煴香后井辜,最后一通預(yù)測,發(fā)現(xiàn)完全扯淡管闷,被人暴打一頓粥脚,更有甚者,在以前關(guān)系國家危亡包个、異或爭國本這種情況時刷允,也通常會算上一卦冤留,國家的興衰、树灶。其實CTR和這個一樣纤怒,以前經(jīng)常和小伙伴吐槽,其實做機器學(xué)習(xí)天通、無論是推薦還是計算廣告泊窘,都和以前的算命先生沒什么差別,做的好的官至國師像寒,不好的吃不了飽飯也是有的烘豹。要想把你CTR模型做的好好的,必須要先了解那些前輩們都是怎么玩的诺祸。

CTR架構(gòu)

一個典型的CTR流程如下圖所示:

如上圖携悯,主要包括兩大部分:離線部分、在線部分序臂,其中離線部分目標(biāo)主要是訓(xùn)練出可用模型蚌卤,而在線部分則考慮模型上線后,性能可能隨時間而出現(xiàn)下降奥秆,弱出現(xiàn)這種情況逊彭,可選擇使用Online-Learning來在線更新模型:

離線部分:

· 數(shù)據(jù)收集:主要收集和業(yè)務(wù)相關(guān)的數(shù)據(jù),通常會有專門的同事在app位置進行埋點构订,拿到業(yè)務(wù)數(shù)據(jù)侮叮;

· 預(yù)處理:對埋點拿到的業(yè)務(wù)數(shù)據(jù)進行去臟去重;

· 構(gòu)造數(shù)據(jù)集:經(jīng)過預(yù)處理的業(yè)務(wù)數(shù)據(jù)悼瘾,構(gòu)造數(shù)據(jù)集囊榜,在切分訓(xùn)練、測試亥宿、驗證集時應(yīng)該合理根據(jù)業(yè)務(wù)邏輯來進行切分卸勺;

· 特征工程:對原始數(shù)據(jù)進行基本的特征處理,包括去除相關(guān)性大的特征烫扼,離散變量one-hot曙求,連續(xù)特征離散化等等;

· 模型選擇:選擇合理的機器學(xué)習(xí)模型來完成相應(yīng)工作映企,原則是先從簡入深悟狱,先找到baseline,然后逐步優(yōu)化堰氓;

· 超參選擇:利用gridsearch挤渐、randomsearch或者h(yuǎn)yperopt來進行超參選擇,選擇在離線數(shù)據(jù)集中性能最好的超參組合双絮;

· 在線A/B Test:選擇優(yōu)化過后的模型和原先模型(如baseline)進行A/B Test浴麻,若性能有提升則替換原先模型得问;

在線部分

· Cache & Logic:設(shè)定簡單過濾規(guī)則,過濾異常數(shù)據(jù)白胀;

· 模型更新:當(dāng)Cache & Logic收集到合適大小數(shù)據(jù)時椭赋,對模型進行pretrain+finetuning,若在測試集上比原始模型性能高或杠,則更新model server的模型參數(shù)哪怔;

· Model Server:接受數(shù)據(jù)請求,返回預(yù)測結(jié)果向抢;

Logistic Regression

最簡單的模型也應(yīng)該是工業(yè)界應(yīng)用最廣的方法认境,Logistic Regression算法簡單易于調(diào)參,屬于線性模型挟鸠,原理如下圖:

將CTR模型建模為一個分類問題叉信,利用LR預(yù)測用戶點擊的概率;通常我們只需要離線收集好數(shù)據(jù)樣本構(gòu)造數(shù)據(jù)集艘希,選擇好合適的特征空間硼身,離線訓(xùn)練好模型,測試在離線數(shù)據(jù)集上的性能之后覆享,即可上線佳遂,也可以適應(yīng)數(shù)據(jù)分布隨時間突變嚴(yán)重的情況,采用online-learning的策略來對模型進行相對頻繁的更新撒顿,模型的簡單能夠保證這部分的需求能夠得到保障丑罪。

PLOY2

LR優(yōu)點是簡單高效,缺點也很明顯凤壁,它太簡單吩屹,視特征空間內(nèi)特征之間彼此獨立,沒有任何交叉或者組合關(guān)系拧抖,這與實際不符合煤搜,比如在預(yù)測是否會點擊某件t恤是否會點擊,如果在夏天可能大部分地區(qū)的用戶都會點擊唧席,但是綜合季節(jié)比如在秋天擦盾,北方城市可能完全不需要,所以這是從數(shù)據(jù)特征維度不同特征之間才能體現(xiàn)出來的袱吆。因此,必須復(fù)雜到能夠建模非線性關(guān)系才能夠比較準(zhǔn)確地建模復(fù)雜的內(nèi)在關(guān)系距淫,而PLOY2就是通過特征的二項式組合來建模這類特征的復(fù)雜的內(nèi)在關(guān)系,二項式部分如下圖公式:

然而理想是美好的绞绒,現(xiàn)實卻是殘酷的,PLOY2有一個明顯的問題榕暇,就是在實際場景中蓬衡,大部分特征都是稀疏的喻杈,即大部分特征值為0,對這些稀疏的特征做二項式組合狰晚,會發(fā)現(xiàn)最后大部分特征值都是0筒饰,而在梯度更新時,當(dāng)大部分feature為0時壁晒,其實梯度并不更新瓷们,所以PLOY2的方法在實際場景中并不能比較好地解決這類特征組合來建模更復(fù)雜線性關(guān)系的問題。

Factorization Machine

上面PLOY2雖然理論上能夠建模二項式關(guān)系秒咐,但是在實際場景下稀疏數(shù)據(jù)時谬晕,無法使用,而FM就是為了解決這里PLOY2的短板的携取,F(xiàn)M的基本原理是將這些二項式矩陣做矩陣分解攒钳,將高維稀疏的特征向量映射到低維連續(xù)向量空間,然后根據(jù)內(nèi)積表示二項式特征關(guān)系:

復(fù)雜度為O(kn2)O(kn2)雷滋,作者提出了一種簡化的算法:

將復(fù)雜度簡化為O(kn)O(kn)?然后就是SGD來更新模型參數(shù)不撑,使模型收斂(這里還有很多其他替代SGD的方法,在FFM中有提到):

訓(xùn)練時間復(fù)雜度也是O(kn)O(kn)晤斩,也就是線性時間焕檬,F(xiàn)M通過對二項式稀疏進行低維連續(xù)空間的轉(zhuǎn)換,能夠有效地解決PLOY2中存在的二次項系數(shù)在大規(guī)模系數(shù)數(shù)據(jù)下不更新的問題尸昧,另外由于訓(xùn)練預(yù)測復(fù)雜度均為線性揩页,PLOY2+SVM這樣邏輯下由于要計算多項式核,復(fù)雜度是n^2烹俗,由于FM的這幾個特征爆侣,在實際場景中,F(xiàn)M也大規(guī)模的應(yīng)用在CTR中幢妄,尤其是在數(shù)據(jù)極其系數(shù)的場景下兔仰,F(xiàn)M效果相對于其他算法有很明星的改善。

Field-aware FM

FMM全程是 Field-aware FactorizationMachine蕉鸳,相對于FM增加了Field信息乎赴,每個特征屬于一個field,舉個例子:

而相對于FM潮尝,只有Feature_index相同個數(shù)的低維連續(xù)表示榕吼,而FFM則不同,每一個feature對不同的field有不同的表示勉失,所以有#Field_index*#Feature_index個不同的表示:

通常由于每個低維隱變量表示只學(xué)習(xí)特定field的表示羹蚣,所以FFM的隱變量長度相對于FM的隱變量維度要小的多。FFM的優(yōu)化問題相對其比較簡單乱凿,可以看看FFM這篇paper顽素,里面比較詳細(xì)地描述優(yōu)化過程咽弦,還有相關(guān)的偽代碼

https://www.andrew.cmu.edu/user/yongzhua/conferences/ffm.pdf。

FNN

從12年在ImageNet上深度學(xué)習(xí)超過經(jīng)典模型之后胁出,在計算機視覺型型、語音、NLP都有很多相關(guān)的工作全蝶,而在CTR上闹蒜,深度學(xué)習(xí)的建模能力也有一些應(yīng)用,F(xiàn)NN和SNN就是其中的一些嘗試裸诽,來源于Deep Learning over Multi-field Categorical Data – A Case Study on User Response Prediction嫂用,這里稍微描述下相關(guān)的做法:

網(wǎng)絡(luò)底層由FM來進行參數(shù)初始化,W的元素由FM中的低維連續(xù)空間向量表示來做初始化:

而構(gòu)成W的低維連續(xù)空間向量表示預(yù)先由FM在數(shù)據(jù)集上生成丈冬,模型在訓(xùn)練過程中嘱函,會通過BP來更新FM層參數(shù),其他步驟和常見的MLP沒有什么區(qū)別埂蕊,這里重點就是底層如何介入FM層參數(shù)的問題往弓;

CCPM

CCPM利用卷積網(wǎng)絡(luò)來做點擊率預(yù)測,看了文章蓄氧,沒有太明白其中的所以然函似,貼下網(wǎng)絡(luò)結(jié)構(gòu)的圖吧:

有弄清楚這篇文章的小伙伴可以討論下。

PNN

PNN主要是在深度學(xué)習(xí)網(wǎng)絡(luò)中增加了一個inner/outer product layer喉童,用來建模特征之前的關(guān)系撇寞,如下圖,Product layer部分Z是weightfeature堂氯,P部分weightI(feature_i,feature_j)用來建模二項式關(guān)系:

PNN按product層的功能分為inner product layer和outer product layer蔑担,區(qū)別如下:

和FM類似,構(gòu)造好網(wǎng)絡(luò)之后咽白,對輸入數(shù)據(jù)做embedding處理之后得到低維的連續(xù)向量表示啤握,經(jīng)過任意兩個feature的進行inner product or outer product(1也為feature的一部分,所以可以建模線性關(guān)系)晶框,這里很容易發(fā)現(xiàn)排抬,這部分特征大小會變大很多(二次項數(shù)量級),尤其是稀疏空間,和PLOY2遇到的問題類似授段,變得很難訓(xùn)練蹲蒲,受FM啟發(fā),可以把這個大矩陣轉(zhuǎn)換矩陣分解為小矩陣和它的轉(zhuǎn)置相乘侵贵,表征到低維度連續(xù)向量空間届搁,來減少模型復(fù)雜度:

DeepFM

DeepFM更有意思的地方是WDL和FM結(jié)合了,其實就是把PNN和WDL結(jié)合了,PNN即將FM用神經(jīng)網(wǎng)絡(luò)的方式構(gòu)造了一遍咖祭,作為wide的補充,原始的Wide and Deep蔫骂,Wide的部分只是LR么翰,構(gòu)造線性關(guān)系,Deep部分建模更高階的關(guān)系辽旋,所以在Wide and Deep中還需要做一些特征的東西浩嫌,如Cross Column的工作,而我們知道FM是可以建模二階關(guān)系達(dá)到Cross column的效果补胚,DeepFM就是把FM和NN結(jié)合码耐,無需再對特征做諸如Cross Column的工作了,這個是我感覺最吸引人的地方溶其,其實FM的部分感覺就是PNN的一次描述骚腥,這里只描述下結(jié)構(gòu)圖,PNN的部分前面都描述, FM部分:

Deep部分:

DeepFM相對于FNN瓶逃、PNN束铭,能夠利用其Deep部分建模更高階信息(二階以上),而相對于Wide and Deep能夠減少特征工程的部分工作厢绝,wide部分類似FM建模一契沫、二階特征間關(guān)系,算是NN和FM的一個更完美的結(jié)合方向昔汉,另外不同的是如下圖懈万,DeepFM的wide和deep部分共享embedding向量空間,wide和deep均可以更新embedding部分靶病,雖說wide部分純是PNN的工作会通,但感覺還是蠻有意思的。

其他的一些方法

GBDT+LR:Facebook提出利用GBDT探索海量特征空間的特征組合嫡秕,減少特征工程工作量渴语,性能很好;

MLR:阿里媽媽前端時間提出的一種增強LR模型昆咽,將region的劃分考慮進去來建模非線性關(guān)系驾凶,感覺類似于深度學(xué)習(xí)的Attention機制,據(jù)說在阿里媽媽相關(guān)業(yè)務(wù)提升很多掷酗;

總結(jié)

前面討論了一些CTR常見的方法调违,重點介紹了Factorization Machine及其變種Field-Aware Factorization Machine,還有和深度學(xué)習(xí)的結(jié)合泻轰,個人感覺PNN的邏輯比較有意思技肩,完全使用神經(jīng)網(wǎng)絡(luò)的思維模型重塑了FM,為后面DeepFM擴展wide and deep的工作打下基礎(chǔ),減少了wide and deep中需要的一些基本的特征工程工作(wide部分二次項工作)虚婿,上面只是涉及到模型的算法部分旋奢,在實際中可以去探討,并不能說明一定性能就好然痊,另外由于架構(gòu)的限制至朗,綜合考慮其他方面的因素,如請求時間剧浸、模型復(fù)雜度锹引,也是最終是否采用相關(guān)算法的考慮因素,各位對此有興趣討論的小伙伴唆香,歡迎回復(fù)討論嫌变。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市躬它,隨后出現(xiàn)的幾起案子腾啥,更是在濱河造成了極大的恐慌,老刑警劉巖冯吓,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碑宴,死亡現(xiàn)場離奇詭異,居然都是意外死亡桑谍,警方通過查閱死者的電腦和手機延柠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锣披,“玉大人贞间,你說我怎么就攤上這事”⒎拢” “怎么了增热?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長胧辽。 經(jīng)常有香客問我峻仇,道長,這世上最難降的妖魔是什么邑商? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任摄咆,我火速辦了婚禮,結(jié)果婚禮上人断,老公的妹妹穿的比我還像新娘吭从。我一直安慰自己,他們只是感情好恶迈,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布涩金。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪步做。 梳的紋絲不亂的頭發(fā)上副渴,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音全度,去河邊找鬼佳晶。 笑死,一個胖子當(dāng)著我的面吹牛讼载,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播中跌,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼咨堤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了漩符?” 一聲冷哼從身側(cè)響起一喘,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嗜暴,沒想到半個月后凸克,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡闷沥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年萎战,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舆逃。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡蚂维,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出路狮,到底是詐尸還是另有隱情虫啥,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布奄妨,位于F島的核電站涂籽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏砸抛。R本人自食惡果不足惜评雌,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望直焙。 院中可真熱鬧柳骄,春花似錦、人聲如沸箕般。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至曲初,卻和暖如春体谒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背臼婆。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工抒痒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人颁褂。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓故响,卻偏偏與公主長得像,于是被迫代替她去往敵國和親颁独。 傳聞我的和親對象是個殘疾皇子彩届,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容

  • DeepFM[1]是哈工大Guo博士在華為諾亞實驗室實習(xí)期間,提出的一種深度學(xué)習(xí)方法誓酒,它基于Google的經(jīng)典論文...
    VentLam閱讀 8,289評論 1 3
  • 推薦系統(tǒng)遇上深度學(xué)習(xí)系列: 推薦系統(tǒng)遇上深度學(xué)習(xí)(一)--FM模型理論和實踐:https://www.jiansh...
    MiracleJQ閱讀 13,058評論 1 11
  • 新網(wǎng)站如何才能被收錄樟蠕,說道這個問題一直讓新手站長很頭疼! 現(xiàn)在接到的新站要求做SEO的CASE越來越多靠柑。很多企業(yè)都...
    14026da90cfa閱讀 222評論 0 0
  • 《卡爾馬克思》讀后感 那個好像只存在于中學(xué)政治課本寨辩、滿頭黑發(fā)慈祥的偉大的哲學(xué)家,生于1818年歼冰,享年65歲靡狞, 帶著...
    lolita劉麗閱讀 325評論 0 0
  • 話說天下大勢,分久必合隔嫡,合久必分耍攘。周末七國分爭,并入于秦畔勤。及秦滅之后蕾各,楚、漢分爭庆揪,又并入于漢式曲。漢朝自高祖斬白蛇而起...
    yeyoushencn閱讀 594評論 0 1