鄧秀勤,謝偉歡,劉富春,張翼飛,樊 娟
(1.廣東工業(yè)大學(xué)應(yīng)用數(shù)學(xué)學(xué)院,廣州,510520;2.北京明略軟件系統(tǒng)有限公司,廣州,510300;3.廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,廣州,510006)
近年來,“大數(shù)據(jù)”成為熱門,遍及全球,它指的是這個(gè)信息時(shí)代下的碎片化數(shù)據(jù),而數(shù)據(jù)也逐漸成為各個(gè)企業(yè)不可或缺的戰(zhàn)略性資源。企業(yè)創(chuàng)新和轉(zhuǎn)型的主要驅(qū)動(dòng)力逐漸轉(zhuǎn)變成對(duì)數(shù)據(jù)的分析利用。目前,網(wǎng)絡(luò)廣告已經(jīng)占據(jù)廣告行業(yè)的一大部分,數(shù)據(jù)營銷廣告掘地而起,而傳統(tǒng)廣告停滯不前,其中一個(gè)原因是大眾傳媒已逐漸轉(zhuǎn)變成針對(duì)用戶興趣愛好的小眾傳媒,因此對(duì)廣告歷史數(shù)據(jù)加以分析和利用是一種有效提高廣告點(diǎn)擊轉(zhuǎn)化率的手段。
網(wǎng)絡(luò)廣告主要分為搜索廣告和展示廣告[1], 搜索廣告是指通過一些搜索引擎進(jìn)行檢索時(shí)所展示出來的廣告,展示廣告主要有文字鏈接、圖片和視頻等,它適用于一些應(yīng)用界面或者視頻媒體等。計(jì)算廣告是一種網(wǎng)絡(luò)廣告定向技術(shù)[2],是指通過線上的渠道推送到準(zhǔn)確的目標(biāo)人群的網(wǎng)絡(luò)廣告,其主要方法是在廣告庫中選擇出符合目標(biāo)人群性別和年齡的廣告。計(jì)算廣告的宗旨是通過歷史數(shù)據(jù)去了解用戶,深入挖掘用戶需求。Agarwal等[3]基于廣告數(shù)據(jù)事先已有的不同粒度層次的概念,利用樹狀馬爾可夫方法預(yù)測廣告點(diǎn)擊率。Wang 等[4]則采用了貝葉斯模型對(duì)廣告點(diǎn)擊率進(jìn)行評(píng)估。而Lee 等[5]給出了4 個(gè)多標(biāo)準(zhǔn)數(shù)學(xué)規(guī)劃廣告點(diǎn)擊問題模型,通過分析用戶點(diǎn)擊或是瀏覽信息,解決了用戶行為定向的問題。為了提高廣告點(diǎn)擊率預(yù)估的準(zhǔn)確率,張志強(qiáng)等[6]提出通過深度學(xué)習(xí)的方法來學(xué)習(xí)特征間的高維關(guān)系。潘書敏等[7]提出了一種基于用戶相似度和特征區(qū)分的混合模型,該方法利用用戶相似度將用戶劃分為多個(gè)組,再對(duì)不同的組構(gòu)建子模型并進(jìn)行有效組合以探索相同特征對(duì)不同組的差異效應(yīng),從而準(zhǔn)確地預(yù)測廣告點(diǎn)擊行為。
本文提出了結(jié)合特征選擇的廣告點(diǎn)擊轉(zhuǎn)化率預(yù)測混合模型,在混合模型的設(shè)計(jì)中加入特征選擇LightGBM 模型,其中利用XGBoost、邏輯回歸模型來轉(zhuǎn)換和訓(xùn)練特征,并利用LightGBM 模型來選擇重要特征,最終通過實(shí)驗(yàn)結(jié)果分析,得出模型的有效性和重要性特征排序。
本文的數(shù)據(jù)來源于某廣告監(jiān)測公司日常的車企數(shù)據(jù)日志,具體的時(shí)間范圍為2019 年10 月27 日至2019 年11月30 日,共計(jì)35 d,部分字段信息如表1 所示。
TrackMaster 系統(tǒng)每天收取海量的實(shí)時(shí)數(shù)據(jù),存儲(chǔ)到數(shù)據(jù)日志,實(shí)時(shí)數(shù)據(jù)并不可以直接使用,還需要進(jìn)行數(shù)據(jù)預(yù)處理,這樣數(shù)據(jù)才具有真實(shí)性、有效性。
表1 點(diǎn)擊日志字段表Table 1 Click on the log field table
該 車 企 在2019 年10 月27 日 至2019 年11 月30 日 期 間共有137 210 次點(diǎn)擊數(shù)據(jù)。經(jīng)過數(shù)據(jù)過濾、數(shù)據(jù)清洗和異常數(shù)據(jù)的剔除之后,統(tǒng)計(jì)整理數(shù)據(jù)得到109 988 次有效點(diǎn)擊數(shù)據(jù),廣告位ID 總計(jì)21 個(gè),媒體總計(jì)3 個(gè),以及計(jì)算了各維度下的廣告點(diǎn)擊轉(zhuǎn)化率點(diǎn)擊率(Click through rate,CTR),如表2 所示,為進(jìn)行特征分析建立良好的數(shù)據(jù)基礎(chǔ)。
特征工程是將原始數(shù)據(jù)轉(zhuǎn)換成能被計(jì)算機(jī)算法所理解的特征體系的工程活動(dòng),為了提高模型的準(zhǔn)確度和泛化能力,就要從原始數(shù)據(jù)中提取盡可能多的有用信息供算法使用。本文從用戶信息特征、廣告信息特征、上下文特征和統(tǒng)計(jì)特征中分析并提取影響廣告點(diǎn)擊轉(zhuǎn)化率的重要特征。通過對(duì)數(shù)據(jù)集的深入分析,從用戶信息特征中提取出性別、用戶年齡段和用戶興趣標(biāo)簽;從廣告信息特征中提取出廣告主、廣告位ID、廣告圖片ID、內(nèi)容頻道和內(nèi)容URL;從下文特征中提取出媒體、廣告投放時(shí)間、地理位置和操作系統(tǒng),作為廣告點(diǎn)擊轉(zhuǎn)化率預(yù)測模型的特征。
以上所描述的用戶信息特征、廣告信息特征和上下文特征屬于類別特征,而統(tǒng)計(jì)特征是一種基于類別特征的統(tǒng)計(jì)特征構(gòu)造框架[8],圖1 給出了該框架。
構(gòu)建的具體步驟如下:
(1)將類別特征分成兩個(gè)特征組S1和S2,并設(shè)計(jì)統(tǒng)計(jì)指標(biāo)組I,包括舉止、標(biāo)準(zhǔn)差等。
(2)構(gòu)造過程中,將S1層中的一個(gè)特征S1,i(1<i<m),和S2層中的一個(gè)特征S2,i(1<i<n)進(jìn)行兩兩組合,成為特征組合{S1,i,S2,i}。
(3)在統(tǒng)計(jì)指標(biāo)組I中選擇一項(xiàng)Ii,在數(shù)據(jù)集中選擇出符合{S1,i,S2,i}的所有集合,并計(jì)算相關(guān)指標(biāo)。
本文在類別特征的基礎(chǔ)上,增加了用戶ID,然后分為具有5 個(gè)和9 個(gè)特征的兩個(gè)特征組,統(tǒng)計(jì)指標(biāo)為I1、I2、I3,因此可以擴(kuò)展出5 × 9 × 3 = 135 個(gè)統(tǒng)計(jì)特征,詳見圖2。
表2 基礎(chǔ)數(shù)據(jù)表Table 2 Basic data table
圖1 統(tǒng)計(jì)特征構(gòu)造框架Fig.1 Statistical feature construction framework
圖2 統(tǒng)計(jì)特征構(gòu)造具體示意圖Fig.2 Specific schematic diagram of statistical feature construction
因?yàn)槟P偷挠?xùn)練過程需要輸入的數(shù)據(jù)是數(shù)值型的,所以需要先將非數(shù)值型數(shù)據(jù)轉(zhuǎn)化成數(shù)值型數(shù)據(jù)。在提取用戶信息特征、廣告信息特征和上下文特征之后,需要用到獨(dú)熱編碼來表達(dá)這些類別特征,為了解決使用獨(dú)熱編碼產(chǎn)生的共線性問題,本文主要使用虛擬編碼,即用n - 1 個(gè)特征來代表具有n 個(gè)可能取值的特征,這使得模型參數(shù)估計(jì)較為準(zhǔn)確。將上述用戶信息特征、廣告信息特征和上下文特征3個(gè)類別特征進(jìn)行虛擬編碼,如對(duì)用戶性別進(jìn)行虛擬編碼后得到2 個(gè)特征向量,廣告位ID 進(jìn)行虛擬編碼后得到21 個(gè)特征向量,地理區(qū)域進(jìn)行虛擬編碼后得到35 個(gè)特征向量,關(guān)鍵詞進(jìn)行虛擬編碼后得到8 969個(gè)特征向量,最后共計(jì)17 140 個(gè)。最終形成的廣告點(diǎn)擊轉(zhuǎn)化率預(yù)測模型的特征向量為17 275 個(gè),利用1.3 節(jié)給出的方法,可以擴(kuò)展出135 個(gè)統(tǒng)計(jì)特征。
2.1.1 XGboost 算法
XGboost 是華盛頓大學(xué)陳天奇博士于2016 年開發(fā)的Boosting 庫,兼具線性規(guī)模求解器和樹學(xué)習(xí)算法[9]。它是在Gradient Boosting 的基礎(chǔ)上進(jìn)行改進(jìn)得到的一種算法模型,可以說XGBoost 是Gradient Boosting 的高效實(shí)現(xiàn)。
2.1.2 LightGBM 算法
LightGBM 是微軟2015 年提出的新的boosting 框架模型[10],類似XGBoost,LightGBM 算法也是在Gradient Boosting 的基礎(chǔ)上進(jìn)行改良所得,但兩者在特征處理上有所不同。XGBoost 在對(duì)特征進(jìn)行選擇時(shí)是通過預(yù)排序算法,而LightGBM 則是利用HistoGram 算法。預(yù)排序算法是嚴(yán)謹(jǐn)?shù)膶?duì)每個(gè)特征預(yù)先排好序,然后對(duì)每個(gè)特征進(jìn)行選擇;HistoGram 算法則是將連續(xù)型特征離散化,然后按照離散后的數(shù)量形成相同數(shù)量的直方圖,在選擇特征時(shí)只需根據(jù)直方圖中的離散值數(shù)量選出最優(yōu)的分裂特征即可。這樣雖然在嚴(yán)謹(jǐn)度上會(huì)比XGBoost 低,但速度和內(nèi)存開銷會(huì)比XGBoost 有所提升。XGBoost 和Light-GBM 還有一個(gè)主要的不同之處在于它們決策樹的生長策略不同,XGBoost 的決策樹生長策略是levelwise 生長策略。這種生長策略的主要特點(diǎn)是對(duì)所有的葉子節(jié)點(diǎn)都一視同仁,對(duì)部分即使增益很小的樹也會(huì)進(jìn)行增長。這樣做的優(yōu)點(diǎn)是能夠保證誤差不會(huì)太大。LightGBM 的決策樹生長策略是leaf-wise 生長策略,該策略是只對(duì)增益比較大的樹進(jìn)行增長,如果樹分裂時(shí)沒有增益或增益很小,則不會(huì)再對(duì)這些樹進(jìn)行生長。采用這種策略出現(xiàn)過擬合的風(fēng)險(xiǎn)會(huì)比較大,但是如果對(duì)樹的生長加入深度限制,就能很好地解決過擬合的問題,這樣既提升了算法的運(yùn)算速率,也能盡量避免出現(xiàn)過擬合的風(fēng)險(xiǎn)。
總的來說,LightGBM 是在保證了和XGBoost 具有相近的準(zhǔn)確度的同時(shí),擁有比XGBoost 更快的運(yùn)行速率與更低的內(nèi)存消耗,XGBoost 追求比較完美的精確度,而LightGBM 略微犧牲了精確度,大大提高了運(yùn)行成本和速率。
本文模型通過邏輯回歸模型[8]來學(xué)習(xí)XGBoost 的葉子權(quán)重,計(jì)算權(quán)重之和sum,并將sum 做sigmoid轉(zhuǎn)換成0~1 之間的值,作為最終預(yù)測值。在圖3 所示的模型結(jié)構(gòu),輸入樣本x 進(jìn)行集成樹處理后,得到一個(gè)葉子節(jié)點(diǎn)標(biāo)記為1,非葉子節(jié)點(diǎn)標(biāo)記為0 的節(jié)點(diǎn)序列,接著在線性分類器Σ 中通過邏輯回歸訓(xùn)練就可得到邏輯回歸模型。最后,通過LightGBM 算法在模型訓(xùn)練結(jié)束后輸出特征的相對(duì)重要性,得到模型下每一維特征的重要性排序。
先對(duì)該車企數(shù)據(jù)進(jìn)行預(yù)處理形成L1層的數(shù)據(jù)集T,然后進(jìn)行特征轉(zhuǎn)換和標(biāo)準(zhǔn)化處理后分別得到Σbase和Σstat,然后合并得到總訓(xùn)練矩陣ΣT,最后訓(xùn)練得到模型ML2,具體步驟如算法1 所示。
算法1廣告點(diǎn)擊轉(zhuǎn)化率預(yù)測算法
輸入:點(diǎn)擊訓(xùn)練日志L
輸出:廣告點(diǎn)擊轉(zhuǎn)化率預(yù)測模型
(1)對(duì)L進(jìn)行數(shù)據(jù)清洗、過濾,剔除異常數(shù)據(jù)后得到正常數(shù)據(jù)集;
(2)對(duì)正常數(shù)據(jù)集進(jìn)行計(jì)算整理得到點(diǎn)擊數(shù)據(jù)集T;
(3)在T上提取用戶信息特征、廣告信息特征以及上下文特征并轉(zhuǎn)換,得到基礎(chǔ)特征訓(xùn)練矩陣Σbase;
(4)從T中提取統(tǒng)計(jì)特征來進(jìn)行標(biāo)準(zhǔn)化處理,得到統(tǒng)計(jì)特征訓(xùn)練矩陣Σstat;
(5)在Σstat的基礎(chǔ)上,采用LightGBM 算法就可以得到特征選擇后的統(tǒng)計(jì)特征訓(xùn)練矩陣Σselect;
(6)將Σstat與Σselect按行進(jìn)行合并,得到總訓(xùn)練矩陣ΣT;
(7)利用ΣT訓(xùn)練集成樹分類器,得到集成樹分類器ML1;
(8)利用ML1在ΣT上處理得到L1的輸出矩陣ΣL1;
(9)利用ΣL1在ΣT上訓(xùn)練L2分類器,得到模型ML2;
(10)將ML1和ML2進(jìn)行結(jié)合,得到廣告點(diǎn)擊轉(zhuǎn)化率預(yù)測模型。
圖3 模型結(jié)構(gòu)Fig.3 Model structure
受試者工作特征(Receiver operating characteristic, ROC)[11]可以直觀地反映模型在選取不同閾值時(shí)的敏感性和精確性。廣告點(diǎn)擊轉(zhuǎn)化率預(yù)測指的是某一個(gè)廣告被展示時(shí),可能被點(diǎn)擊的概率。因此可以采用ROC 曲線來評(píng)估模型性能,其縱軸、橫軸分別為
式中,TP 表示實(shí)例,F(xiàn)P 表示假陽例,TN 表示真陰例,F(xiàn)N 表示假反例。
ROC 曲線下的面積(Area under ROC curve, AUC)值刻畫ROC 曲線下方的面積,是ROC 曲線的一個(gè)直觀反映,AUC 值越大代表其正確性越高,選擇不同的閾值,ROC 曲線下方的面積也不同,即AUC 值不同。一般0.5 <AUC <1,本文的實(shí)驗(yàn)將AUC 值作為評(píng)價(jià)指標(biāo)。AUC 的計(jì)算公式為
式中D+為所有正例組成的集合,x+是其中的一個(gè)正例,D-為所有反例組成的集合,x-是其中一個(gè)反例,m+表示正例的個(gè)數(shù),m-表示負(fù)例的個(gè)數(shù)。f(x)是模型對(duì)樣本x的預(yù)測結(jié)果,I(x)在x為真時(shí)取1,否則取0。
AUC 值更偏重于排序,當(dāng)提升整體的預(yù)測概率時(shí),Log-loss[12]值也會(huì)發(fā)生變化,而AUC 值不變,因此可將Log-loss 作為評(píng)價(jià)指標(biāo)之一。對(duì)數(shù)似然損失,通過分類懲罰錯(cuò)誤來保證分類器量化的精準(zhǔn)度,即
對(duì)數(shù)損失函數(shù)L(W)越小,分類器的準(zhǔn)確度越高。對(duì)數(shù)損失函數(shù)L(W)計(jì)算公式為
式中,N為樣本數(shù),yi的值為1 或者0,分別表示有發(fā)生點(diǎn)擊行為或沒有發(fā)生點(diǎn)擊行為,y?t表示有發(fā)生點(diǎn)擊行為的概率,1-y?t則表示沒有發(fā)生點(diǎn)擊行為的概率。
本文以預(yù)處理之后的廣告點(diǎn)擊數(shù)據(jù)T作為實(shí)驗(yàn)數(shù)據(jù)集,其時(shí)間范圍為2019 年10 月27 日至2019 年11 月30 日,共計(jì)35 d,由1.2 節(jié)得知廣告的有效點(diǎn)擊次數(shù)為109 988 次,在實(shí)驗(yàn)過程中隨機(jī)選擇數(shù)據(jù)集中的80% 的數(shù)據(jù)量作為訓(xùn)練集,剩余的數(shù)據(jù)作為測試集,訓(xùn)練集的數(shù)據(jù)量為87 990 條,測試集的數(shù)據(jù)量為21 998 條。
本實(shí)驗(yàn)先將樹的深度設(shè)定為3,然后逐步改變樹的數(shù)量α,模型的AUC 值會(huì)發(fā)生變化,如圖4 所示。
由圖4 可以看出,隨著樹的顆數(shù)α的遞增,AUC 值也逐漸增大,當(dāng)遞增到230 顆時(shí)AUC 值最大,此時(shí)模型最優(yōu)。而當(dāng)α= 230 時(shí),樹的深度對(duì)模型的影響如圖5 所示。
由圖5 可以看出,樹的深度為3 時(shí),AUC 值最大,因此將樹的深度固定為3。而轉(zhuǎn)換后的特征長度也隨著樹的顆樹的變化而變化,如圖6 所示。
由圖6 可以看出,每增加40 顆樹,轉(zhuǎn)換特征長度就會(huì)增加200,即每增加1 顆樹,會(huì)多增加約5 個(gè)葉子節(jié)點(diǎn),呈穩(wěn)定的增長趨勢。 隨著樹的顆數(shù)的變化,分層模型的整體訓(xùn)練時(shí)間也會(huì)隨著變化,如圖7所示。
根據(jù)樹的顆數(shù)對(duì)模型的影響,由圖4 和圖7 可以看出,當(dāng)樹的顆樹為230 時(shí),AUC 值最大,而分層模型訓(xùn)練時(shí)間適中。
圖4 樹的顆數(shù)對(duì)模型的影響Fig.4 Influence of tree number on the model
圖6 轉(zhuǎn)換特征長度的變化趨勢Fig.6 Change trend of the transformation feature length
圖5 樹的深度對(duì)模型的影響Fig.5 Influence of tree depth on the model
圖7 分層模型整體訓(xùn)練時(shí)間的變化Fig.7 Change of overall training time of the hierarchical model
綜合上述分析,本文選擇230 為L1的分類器數(shù)量。根據(jù)算法1,第一步要提取統(tǒng)計(jì)特征矩陣,進(jìn)行LightGBM 模型訓(xùn)練,提前設(shè)定特征選擇閾值為λ= 0.95,即允許選擇器選擇分?jǐn)?shù)之和為λ的重要性特征。最終算法選擇了靠前的19 個(gè)特征,其分?jǐn)?shù)之和占比約為95%。通過調(diào)整閾值,來控制特征個(gè)數(shù)的輸出,最終輸出30 個(gè)重要性特征,如圖8 所示。
在λ= 0.95 的情況下,由圖8 可以得出,模型可以選擇出19 維特征,其他重要性得分非常低的特征可以忽略,這些特征的影響性較低。本文利用LightGBM 模型對(duì)分層模型進(jìn)行特征篩選,分析特征選擇模型中樹的顆數(shù)的變化對(duì)混合模型整體結(jié)果的影響,如圖9 所示。
圖8 特征重要性得分排序Fig.8 Order of feature importance scores
圖9 特征模型樹的顆數(shù)變化Fig.9 Change of the number of feature model trees
由圖9 可以看出,當(dāng)特征選擇閾值λ= 0.95,特征選擇數(shù)目為19,樹的顆數(shù)為100 時(shí)的AUC 值最大,此時(shí)模型具有最優(yōu)的效果。
綜上所述,以本文的汽車廣告點(diǎn)擊數(shù)據(jù)集為數(shù)據(jù)基礎(chǔ),為了使模型具有最優(yōu)的效果,本文固定特征選擇的樹的顆數(shù)為100,λ= 0.95,樹的深度為3、顆數(shù)為230。而根據(jù)式(2)計(jì)算出此時(shí)混合模型的對(duì)數(shù)損失函數(shù)值約為0.136 8,顯然對(duì)數(shù)損失函數(shù)值較小,模型表現(xiàn)良好。最后輸出特征選擇模型前10 的重要特征排序,如圖10 所示。
圖10 前10 名特征重要性排序Fig.10 Top ten features in the importance ranking
廣告點(diǎn)擊轉(zhuǎn)化率關(guān)系著廣告主的切身利益,良好的點(diǎn)擊轉(zhuǎn)化率預(yù)測模型可以為廣告主提高收益,而重要性特征無疑是廣告主進(jìn)行廣告投放的重要參考。本文的主要工作是給出了一種統(tǒng)計(jì)特征的構(gòu)建框架,并提出結(jié)合特征選擇的廣告點(diǎn)擊轉(zhuǎn)化率預(yù)測混合模型,利用XGBoost、邏輯回歸模型來轉(zhuǎn)換和訓(xùn)練特征,并利用LightGBM 模型來選擇重要特征并排序,廣告主在投放商品廣告時(shí),可根據(jù)用戶ID、廣告位ID、媒體ID、廣告圖片ID、關(guān)鍵詞ID 和地理區(qū)域等重要性特征的排序,結(jié)合外在因素和以往的投放經(jīng)驗(yàn),制定較優(yōu)的投放策略,來提升廣告點(diǎn)擊轉(zhuǎn)化率,從而使廣告主的利益最大化。