一.互聯(lián)網(wǎng)廣告特征工程
博文《互聯(lián)網(wǎng)廣告綜述之點(diǎn)擊率系統(tǒng)》論述了互聯(lián)網(wǎng)廣告的點(diǎn)擊率系統(tǒng)氓涣,可以看到帆精,其中的logistic regression模型是比較簡(jiǎn)單而且實(shí)用的贡珊,其訓(xùn)練方法雖然有多種忙厌,但目標(biāo)是一致的,訓(xùn)練結(jié)果對(duì)效果的影響是比較大牲距,但是訓(xùn)練方法本身返咱,對(duì)效果的影響卻不是決定性的,因?yàn)橛?xùn)練的是每個(gè)特征的權(quán)重牍鞠,權(quán)重細(xì)微的差別不會(huì)引起ctr的巨大變化咖摹。
在訓(xùn)練方法確定后,對(duì)ctr預(yù)估起到?jīng)Q定性作用的是選用的特征难述。
1.1特征選擇與使用
做點(diǎn)擊率預(yù)估需要兩方面的數(shù)據(jù)萤晴,一方面是廣告的數(shù)據(jù),另一方面是用戶的數(shù)據(jù)龄广,現(xiàn)在所有的數(shù)據(jù)都有硫眯,那么工作就是利用這兩方面的數(shù)據(jù)評(píng)估用戶點(diǎn)擊這個(gè)廣告的可能性(也就是概率)。
用戶的特征是比較多的择同,用戶的年齡,性別净宵,地域敲才,職業(yè)裹纳,學(xué)校,手機(jī)平臺(tái)等等紧武。廣告的特征也很豐富剃氧,如廣告大小,廣告文本阻星,廣告所屬行業(yè)朋鞍,廣告圖片。還有反饋特征妥箕,如每個(gè)廣告的實(shí)時(shí)ctr滥酥,廣告跟性別交叉的ctr。如何從這么多的特征中選擇到能刻畫(huà)一個(gè)人對(duì)一個(gè)廣告的興趣的特征畦幢,是數(shù)據(jù)挖掘工程師的一個(gè)大難題坎吻。
選中了特征,還需要注意特征的選擇方式宇葱,例如瘦真,如果單獨(dú)把年齡作為一個(gè)特征,最終能訓(xùn)練出來(lái)啥嗎黍瞧?因?yàn)槟挲g相加相減是沒(méi)有意義的诸尽,所以只能把每個(gè)年齡做為一個(gè)特征,但是光這樣可以了嗎印颤?怎么用特征您机,是廣告算法工程師的一個(gè)大課題。
1.1.1 選擇特征
什么樣的特征適合用來(lái)預(yù)估ctr膀哲?這個(gè)問(wèn)題是很多廣告算法工程師的需要考慮的往产。
機(jī)器學(xué)習(xí)算法最多會(huì)大談模型,對(duì)于特征的討論很少涉及某宪。真正的應(yīng)用中仿村,多數(shù)數(shù)據(jù)挖掘工程師的工作都是在想特征,驗(yàn)證特征兴喂。
想特征是一個(gè)腦力加體力的活蔼囊,需要不少的領(lǐng)域的知識(shí),更讓人郁悶的是衣迷,工業(yè)界并沒(méi)有一整套想特征的辦法畏鼓,工業(yè)界有的只是驗(yàn)證特征的辦法。對(duì)于互聯(lián)網(wǎng)廣告業(yè)壶谒,就簡(jiǎn)單說(shuō)說(shuō)通用特征怎么來(lái)的吧云矫。
首先說(shuō)年齡這個(gè)特征,怎么知道它跟點(diǎn)擊率有關(guān)系汗菜?現(xiàn)在直觀的解釋是让禀,年輕人普遍喜歡運(yùn)動(dòng)類(lèi)的廣告挑社,30歲左右的男人喜歡車(chē),房子之類(lèi)的廣告巡揍,50歲以上的人喜歡保健品的廣告痛阻。可以看到腮敌,選擇年齡作為特征的理由是基于對(duì)各個(gè)年齡段的人喜歡的不同類(lèi)型的東西的一個(gè)粗略的劃分阱当,是一個(gè)很主觀的東西。
再說(shuō)性別這個(gè)特征糜工,直觀的感覺(jué)是弊添,男性普遍喜歡體育類(lèi)的,車(chē)類(lèi)的啤斗,旅游類(lèi)廣告表箭,女性普遍喜歡化妝品,服裝類(lèi)的廣告钮莲。這也可以看到免钻,選擇性別作為特征也是基于相似的理由,就是認(rèn)為男性和女性大體會(huì)喜歡不同的東西崔拥。
對(duì)于地域這個(gè)特征极舔,這下就學(xué)問(wèn)多了,華南的人在比較喜歡動(dòng)漫和游戲链瓦,華北的人喜歡酒品和煙拆魏?
在廣告方面的特征,廣告的圖片大小慈俯,廣告前景色背景色真的能影響人的點(diǎn)擊嗎渤刃?這其實(shí)都是一種猜測(cè)。圖片里面是一個(gè)明星還是一個(gè)動(dòng)物之類(lèi)的因素也可以考慮贴膘。
總結(jié):選特征的流程卖子,就是先猜想,然后統(tǒng)計(jì)驗(yàn)證刑峡,然后將特征加到模型中洋闽,進(jìn)行驗(yàn)證。
總之突梦,想特征的這個(gè)事情基本沒(méi)多大譜诫舅,只能天南地北地想象,還要多了解各行各業(yè)的知識(shí)宫患,以便想到更多的特征刊懈,哪怕某個(gè)特征跟人關(guān)系并不大,也得好好驗(yàn)證一番。
想到了特征俏讹,就要驗(yàn)證和進(jìn)行判斷当宴。
驗(yàn)證特征的辦法多畜吊,有直接觀察ctr泽疆,卡方檢驗(yàn),單特征AUC等玲献。直接觀察ctr是個(gè)很有效的方法殉疼,如根據(jù)投放記錄,化妝品的廣告在女性上面的點(diǎn)擊率就比在男性上面的點(diǎn)擊率高很多捌年,說(shuō)明性別這個(gè)特征在化妝品行業(yè)是有預(yù)測(cè)能力的瓢娜;又如體育用品的廣告在男性上面的點(diǎn)擊率也比女性高,說(shuō)明性別這個(gè)特征在體育行業(yè)也是有預(yù)測(cè)能力的礼预,經(jīng)過(guò)多個(gè)行業(yè)的驗(yàn)證眠砾,就認(rèn)為性別這個(gè)特征可以用了。
年齡這個(gè)特征的評(píng)估類(lèi)型托酸,主要是觀察一個(gè)廣告在不同年齡段的點(diǎn)擊率是否有區(qū)別褒颈,再觀察不同廣告的點(diǎn)擊率在不同年齡段的分布是否不一樣,如果都有區(qū)別励堡,說(shuō)明年齡這個(gè)特征就可以用了谷丸。
在實(shí)際的使用中發(fā)現(xiàn),性別這個(gè)特征比較有效应结,手機(jī)平臺(tái)這個(gè)特征也比較有效刨疼,地域和年齡這兩個(gè)特征有一定效果,但沒(méi)有前兩個(gè)那么明顯鹅龄,跟他們的使用方式可能有關(guān)揩慕,還需要進(jìn)一步挖掘。
同時(shí)扮休,實(shí)際使用中也發(fā)現(xiàn)迎卤,廣告反饋ctr這個(gè)特征也很有效,這個(gè)特征的意思就是當(dāng)前的廣告正在投放肛炮,已經(jīng)投放了一部分了止吐,這部分的點(diǎn)擊率基本可以認(rèn)為是這個(gè)廣告的點(diǎn)擊率了,也可以認(rèn)為是這個(gè)廣告的質(zhì)量的一個(gè)體現(xiàn)侨糟,用來(lái)預(yù)估一個(gè)流量的ctr是很有效的碍扔。
1.1.2 特征的處理和使用
選擇得到特征,怎么用也是一個(gè)問(wèn)題秕重。
先說(shuō)需求不同,其實(shí)預(yù)估ctr要做的事情是下面的圖的工作——計(jì)算一個(gè)用戶/廣告組合的ctr。
上面已經(jīng)選好了特征,暫定有廣告的反饋ctr二拐,用戶年齡服鹅,性別三個(gè)特征。
一百新、離散化企软,有些特征雖然也是數(shù)值型的,但是該特征的取值相加相減是沒(méi)有實(shí)際意義的饭望,那么該數(shù)值型特征也要看成離散特征仗哨,采用離散化的技術(shù)。
反饋ctr是一個(gè)浮點(diǎn)數(shù)铅辞,直接作為特征是可以的厌漂,假設(shè)1號(hào)特征就是反饋ctr。對(duì)應(yīng)年齡來(lái)說(shuō)就不是這樣了斟珊,因?yàn)槟挲g不是浮點(diǎn)數(shù)苇倡,而且年齡的20歲跟30歲這兩個(gè)數(shù)字20,30大小比較是沒(méi)有意義的,相加相減都是沒(méi)有意義的囤踩,在優(yōu)化計(jì)算以及實(shí)際計(jì)算ctr是會(huì)涉及這兩個(gè)數(shù)字的大小比較的旨椒。如w.x,在w已經(jīng)確定的情況下高职,x的某個(gè)特征的值是20钩乍,或者30,w.x的值相差是很大的怔锌,哪怕用邏輯化公式再比較寥粹,得到的值也是比較大的,但是往往20歲的人跟30歲的人對(duì)同一個(gè)廣告的興趣差距不會(huì)那么大埃元。解決這樣的情況的方法就是涝涤,每個(gè)年齡一個(gè)特征,如總共只有20歲到29歲10種年齡岛杀,就把每個(gè)年齡做一個(gè)特征阔拳,編號(hào)是從2到11(1號(hào)是廣告的反饋ctr),如果這個(gè)人是20歲类嗤,那么在編號(hào)為2的特征上的值就是1糊肠,3到11的編號(hào)上就是0。這樣遗锣,年齡這一類(lèi)特征就有了10個(gè)特征货裹,而且這10個(gè)特征就是互斥的,這樣的特征稱(chēng)為離散化特征精偿。
二弧圆、交叉赋兵,交叉從理論上而言是為了引入特征之間的交互,也即為了引入非線性性搔预。是有實(shí)際意義的霹期。本文對(duì)交叉的意義解釋得非常nice
這樣看起來(lái)就能解決上面的問(wèn)題了,但是夠了嗎拯田?
比如一個(gè)人是20歲历造,那么在編號(hào)為2的特征上面,它一直都是1勿锅,對(duì)籃球的廣告是1帕膜,對(duì)化妝品的廣告也是1,這樣訓(xùn)練的結(jié)果得到的編號(hào)為2的權(quán)重的意義是——20歲的人點(diǎn)擊所有的廣告的可能性的都是這個(gè)權(quán)重溢十,這樣其實(shí)是不合理的。
有意義的應(yīng)該是达吞,這個(gè)20歲的人张弛,當(dāng)廣告是跟體育相關(guān)的時(shí)候,它是一個(gè)值酪劫;當(dāng)廣告跟保健品相關(guān)的時(shí)候吞鸭,它又是一個(gè)值。這樣看起來(lái)才合理覆糟。如果這個(gè)不夠深刻刻剥,基于跟上面同樣的道理,性別這個(gè)特征也是一樣的滩字,假如也做了上面的離散化操作造虏,編號(hào)是12和13,12是男性,13是女性麦箍。這樣的話漓藕,對(duì)于一個(gè)男性/體育廣告組合來(lái)說(shuō),編號(hào)12的特征值為1挟裂,男性/化妝品的組合的編號(hào)12的特征值也是1享钞。這樣也是不合理的。
怎么做到合理呢诀蓉?以上面的性別的例子來(lái)說(shuō)栗竖。編號(hào)12的特征值不取1,取值為該廣告在男性用戶上面的點(diǎn)擊率渠啤,如對(duì)于男性/體育廣告的組合狐肢,編號(hào)12的特征的值為男性在體育廣告上面點(diǎn)擊率,這樣埃篓,編號(hào)為12的特征就變成了一個(gè)浮點(diǎn)數(shù)处坪,這個(gè)浮點(diǎn)數(shù)的相加減是有意義的。
這樣的做法稱(chēng)為特征的交叉,現(xiàn)在就是性別跟廣告的交叉得到的特征值同窘。還有很多其他的方式可以進(jìn)行交叉玄帕,目前工業(yè)上的應(yīng)用最多的就是廣告跟用戶的交叉特征(編號(hào)為1的那個(gè)特征)、廣告跟性別的交叉特征想邦,廣告跟年齡的交叉特征裤纹,廣告跟手機(jī)平臺(tái)的交叉特征,廣告跟地域的交叉特征丧没。如果做得比較多鹰椒,可能會(huì)有廣告主(每個(gè)廣告都是一個(gè)廣告主提交的一個(gè)投放計(jì)劃,一個(gè)廣告主可能會(huì)提交多個(gè)投放計(jì)劃)跟各個(gè)特征的交叉呕童。
三漆际、連續(xù)特征變離散特征:連續(xù)特征離散化的基本假設(shè),是默認(rèn)連續(xù)特征不同區(qū)間的取值對(duì)結(jié)果的貢獻(xiàn)是不一樣的
做到的交叉的特征值就足夠了嗎夺饲?答案還是不一定奸汇。
如編號(hào)為1的那個(gè)特征,就是廣告本身的ctr往声,假設(shè)互聯(lián)網(wǎng)廣告的點(diǎn)擊率符合一個(gè)長(zhǎng)尾分布擂找,叫做對(duì)數(shù)正態(tài)分布,其概率密度是下圖(注意這個(gè)是假設(shè)浩销,不代表真實(shí)的數(shù)據(jù)贯涎,從真實(shí)的數(shù)據(jù)觀察是符合這么樣的一個(gè)形狀的,好像還有雅虎的平滑的那個(gè)論文說(shuō)它符合beta分布)慢洋。
可以看到塘雳,大部分廣告的點(diǎn)擊率都是在某一個(gè)不大的區(qū)間內(nèi)的,點(diǎn)擊率越高的廣告越少且警,同時(shí)這些廣告覆蓋的流量也少粉捻。換句話說(shuō),點(diǎn)擊率在0.2%左右的時(shí)候斑芜,如果廣告a的點(diǎn)擊率是0.2%肩刃,廣告b的點(diǎn)擊率是0.25%,廣告b的點(diǎn)擊率比廣告a高0.05%杏头,其實(shí)足以表示廣告b比廣a好不少,因?yàn)橛凶銐蚨嗟臉颖局С诌@個(gè)結(jié)論盈包;但是點(diǎn)擊率在1.0%左右的的時(shí)候,廣告a點(diǎn)擊率是1.0%醇王,廣告b的點(diǎn)擊率是1.05%呢燥,并沒(méi)有辦法表示廣告b比廣告a好很多,因?yàn)樵谶@0.05%的區(qū)間內(nèi)的廣告并不多寓娩,兩個(gè)廣告基本可以認(rèn)為差不多的叛氨。也就是點(diǎn)擊率在不同的區(qū)間呼渣,應(yīng)該考慮是不同的權(quán)重系數(shù),因?yàn)檫@個(gè)由廣告點(diǎn)擊率組成的編號(hào)為1的特征與這個(gè)用戶對(duì)廣告的點(diǎn)擊的概率不是完全的正相關(guān)性寞埠,有可能值越大特征越重要屁置,也有可能值增長(zhǎng)到了一定程度,重要性就下降了仁连。比如說(shuō)蓝角,在區(qū)間[0.2%,0.3%]區(qū)間的系數(shù)就要比[0.3%,0.4%]的系數(shù)大。故饭冬,我們?nèi)绻麑?shù)值型特征進(jìn)行區(qū)間離散化使鹅,就是默認(rèn)不同區(qū)間的權(quán)重是不一樣的。
對(duì)于這樣的問(wèn)題昌抠,百度有科學(xué)家提出了對(duì)連續(xù)特征進(jìn)行離散化患朱。他們認(rèn)為,特征的連續(xù)值在不同的區(qū)間的重要性是不一樣的扰魂,所以希望連續(xù)特征在不同的區(qū)間有不同的權(quán)重麦乞,實(shí)現(xiàn)的方法就是對(duì)特征進(jìn)行劃分區(qū)間,每個(gè)區(qū)間為一個(gè)新的特征劝评。常用做法,就是先對(duì)特征進(jìn)行排序倦淀,然后再按照等頻離散化為N個(gè)區(qū)間
具體實(shí)現(xiàn)是使用等頻離散化方式:1)對(duì)于上面的編號(hào)為1的那個(gè)特征蒋畜,先統(tǒng)計(jì)歷史記錄中每條展示記錄中編號(hào)為1的特征的值的排序,假設(shè)有10000條展示記錄撞叽,每個(gè)展示記錄的這個(gè)特征值是一個(gè)不相同的浮點(diǎn)數(shù)姻成,對(duì)所有的展示記錄按照這個(gè)浮點(diǎn)數(shù)從低到高排序,取最低的1000個(gè)展示記錄的特征值作為一個(gè)區(qū)間愿棋,排名1001到2000的展示記錄的特征值作為一個(gè)區(qū)間科展,以此類(lèi)推,總共劃分了10個(gè)區(qū)間糠雨。2)對(duì)特征編號(hào)重新編排才睹,對(duì)于排名從1到1000的1000個(gè)展示記錄,他們的原來(lái)編號(hào)為1的特征轉(zhuǎn)變?yōu)樾碌奶卣骶幪?hào)1甘邀,值為1琅攘;對(duì)于排名是從1001到2000的記錄,他們的原來(lái)編號(hào)為1的特征轉(zhuǎn)變?yōu)樾碌奶卣骶幪?hào)2松邪,值為1坞琴,以此類(lèi)推,新的特征編號(hào)就有了1到10總共10個(gè)逗抑。對(duì)于每個(gè)展示記錄來(lái)說(shuō)剧辐,如果是排名1到1000的寒亥,新的特征編號(hào)就只有編號(hào)1的值為1,2到10的為0荧关,其他的展示記錄類(lèi)似溉奕,這樣,廣告本身的ctr就占用了10個(gè)特征編號(hào)羞酗,就成為離散化成了10個(gè)特征腐宋。
等頻離散化需要對(duì)原有的每個(gè)特征都做,也就是原來(lái)的編號(hào)為1到13的編號(hào)檀轨,會(huì)離散化成很多的編號(hào)胸竞,如果每個(gè)特征離散化成10個(gè),則最終會(huì)有130個(gè)特征参萄,訓(xùn)練的結(jié)果w就會(huì)是一個(gè)130維的向量卫枝,分別對(duì)應(yīng)著130個(gè)特征的權(quán)重。
實(shí)際的應(yīng)用表名讹挎,離散化的特征能擬合數(shù)據(jù)中的非線性關(guān)系校赤,取得比原有的連續(xù)特征更好的效果,而且在線上應(yīng)用時(shí)筒溃,無(wú)需做乘法運(yùn)算马篮,也加快了計(jì)算ctr的速度。
1.1.3 特征的過(guò)濾與修正
上面提到怜奖,很多特征其實(shí)是反饋的特征浑测,如廣告反饋ctr,廣告與性別交叉特征歪玲,這些特征本來(lái)可以通過(guò)歷史展示日志的統(tǒng)計(jì)得到迁央。但有些廣告本來(lái)展示量很少,在男性用戶上展示就更少滥崩,這時(shí)要計(jì)算廣告與性別交叉的ctr是很不準(zhǔn)確的岖圈,需要對(duì)這個(gè)特征進(jìn)行修正。具體的修正方法可以參考博文《廣告點(diǎn)擊率的貝葉斯平滑》钙皮。
經(jīng)過(guò)修正后的ctr再做特征蜂科,實(shí)際線上效果有了比較大的提升。
如果使用的特征又更多了株灸,有了學(xué)校跟廣告交叉特征什么的崇摄,離散化后有了上萬(wàn)的特征,這下就會(huì)產(chǎn)生特征過(guò)多導(dǎo)致的各種問(wèn)題慌烧,如過(guò)擬合等逐抑。解決這個(gè)問(wèn)題的方法一種是離線的數(shù)據(jù)評(píng)估,如用ctr的區(qū)分性屹蚊。另一種就是利用正則厕氨,特別是L1正則进每,經(jīng)過(guò)L1正則訓(xùn)練的得到的權(quán)重向量,其中某些特征如果對(duì)點(diǎn)擊率預(yù)估預(yù)測(cè)性不強(qiáng)命斧,權(quán)重會(huì)變成0田晚,不影響預(yù)估。這就是特征過(guò)濾国葬,具體的有關(guān)L1的一些論述與實(shí)現(xiàn)參看博文《從廣義線性模型到邏輯回歸》《OWL-QN算法》和《在線學(xué)習(xí)算法FTRL》贤徒。