張換梅,董云云,2
(1.晉中學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,山西 晉中 030619;2.太原理工大學(xué)信息與計(jì)算機(jī)學(xué)院,山西 太原 030024)
互聯(lián)網(wǎng)與云計(jì)算在提供豐富業(yè)務(wù)功能的同時(shí),產(chǎn)生海量中間數(shù)據(jù),網(wǎng)絡(luò)應(yīng)用通過(guò)數(shù)據(jù)收集、提取和分析,從中獲取所需信息,對(duì)用戶進(jìn)行畫像,從而完成業(yè)務(wù)的精準(zhǔn)投放。尤其對(duì)于電子商務(wù)、移動(dòng)、搜索引擎等互聯(lián)網(wǎng)場(chǎng)景,大量收集用戶數(shù)據(jù),處理過(guò)載信息,并完成用戶模型預(yù)測(cè),是其業(yè)務(wù)優(yōu)化與收益增長(zhǎng)的重要手段。其中,點(diǎn)擊率(Click-through Rate,)是目前互聯(lián)網(wǎng)應(yīng)用中主要的數(shù)據(jù)過(guò)濾方式[1-2],但是在多源異構(gòu)的海量數(shù)據(jù)分析中,預(yù)測(cè)模型和方案需要具有良好的動(dòng)態(tài)時(shí)變特性,從而滿足推薦業(yè)務(wù)要求。對(duì)于大數(shù)據(jù)的預(yù)測(cè),就是根據(jù)數(shù)據(jù)集的學(xué)習(xí),得到一種映射關(guān)系。在點(diǎn)擊率預(yù)測(cè)時(shí),其映射輸出分為點(diǎn)擊與不點(diǎn)擊,即輸出具有離散性[3]。當(dāng)系統(tǒng)較為線性時(shí),通??梢圆捎眠壿嫽貧w[4]方案對(duì)數(shù)據(jù)進(jìn)行預(yù)測(cè),并在邏輯回歸基礎(chǔ)上,采取似然估計(jì)或其它方式對(duì)預(yù)測(cè)模型進(jìn)行計(jì)算。這種方案雖然簡(jiǎn)便高效,但是不能分辨數(shù)據(jù)間的非線性關(guān)聯(lián)和高階特征。于是,在非線性系統(tǒng)中,通常引入多項(xiàng)式回歸方案[5]。利用映射關(guān)系來(lái)描述多階系統(tǒng),基于這種映射關(guān)系,可以對(duì)數(shù)據(jù)特征的耦合關(guān)聯(lián)進(jìn)行深入學(xué)習(xí),但是可能引發(fā)特征數(shù)量與維度的泛濫,難以處理高階和稀疏情況。由于分解機(jī)[6]能夠避免大量特征耦合關(guān)聯(lián)權(quán)重的學(xué)習(xí)計(jì)算,同時(shí)具有良好的稀疏數(shù)據(jù)處理性能,因此,本文設(shè)計(jì)一種高階深度分解機(jī)點(diǎn)擊率數(shù)據(jù)預(yù)測(cè)方法。在分解機(jī)設(shè)計(jì)時(shí),利用特征耦合性替代傳統(tǒng)的權(quán)重關(guān)系,提高對(duì)交互特征和稀疏特征的描述精度;同時(shí)采取映射二次項(xiàng)轉(zhuǎn)換來(lái)降低特征映射復(fù)雜度,從而使分解機(jī)能夠向高維擴(kuò)展?;诟唠A分解機(jī),將與結(jié)合構(gòu)造了深度學(xué)習(xí)網(wǎng)絡(luò),并引入對(duì)比散度和對(duì)學(xué)習(xí)網(wǎng)絡(luò)的樣本訓(xùn)練性能做進(jìn)一步優(yōu)化。
針對(duì)數(shù)據(jù)特征耦合情況,在分解機(jī)算法中引入隱向量,取代權(quán)重計(jì)算,利用其長(zhǎng)度來(lái)改變系統(tǒng)變量。對(duì)于只有兩特征耦合的情況,分解機(jī)的映射關(guān)系描述如下
(1)
(2)
當(dāng)隱向量的大小是k,分解機(jī)的特征映射復(fù)雜度表示為O(kn2)。為了降低復(fù)雜度,改善其多階性能,把映射二次項(xiàng)采取如下轉(zhuǎn)換
(3)
轉(zhuǎn)換后的特征映射復(fù)雜度是O(kn)。優(yōu)化之前,當(dāng)數(shù)據(jù)量增加時(shí),復(fù)雜度呈指數(shù)增長(zhǎng);優(yōu)化之后,當(dāng)數(shù)據(jù)量增加時(shí),復(fù)雜度呈線性增長(zhǎng),顯然更有利于大數(shù)據(jù)的處理。
兩特征耦合符合稀疏數(shù)據(jù)場(chǎng)景,即耦合變量不充足,通過(guò)隱向量與系數(shù)矩陣能夠有效描述特征交互關(guān)聯(lián),有利于提高預(yù)測(cè)效果。根據(jù)二階分解機(jī),很容易將其應(yīng)用于高階場(chǎng)景。于是,三階分解機(jī)的映射關(guān)系如下
(4)
式中,qi,k、qj,k構(gòu)成系數(shù)矩陣Q;pi,k、pj,k、pl,k構(gòu)成系數(shù)矩陣P。此時(shí),為保持線性復(fù)雜度,對(duì)其映射三次項(xiàng)采取如下轉(zhuǎn)換
(5)
在進(jìn)行模型學(xué)習(xí)時(shí),考慮到點(diǎn)擊率的二分類特性,在特征預(yù)測(cè)的過(guò)程中設(shè)計(jì)損失函數(shù)如下
(6)
式中Sigmoid(·)函數(shù)用于把輸入數(shù)據(jù)映射至輸出結(jié)果二值類上,它的計(jì)算方式為Sigmoid(x)=(1+e-x)-1。
分解機(jī)特征映射模型的計(jì)算變量為w0、wi、系數(shù)矩陣Q。在經(jīng)過(guò)映射模型轉(zhuǎn)換后,對(duì)其采取SGD方法訓(xùn)練,通過(guò)損失函數(shù)求偏導(dǎo)得到變量梯度更新方式
(7)
式中的λ代表學(xué)習(xí)率。在點(diǎn)擊率二分類情況下,損失函數(shù)的偏導(dǎo)計(jì)算方式如下
(8)
于是,二階特征預(yù)測(cè)變量的梯度描述為
(9)
對(duì)于三階映射模型,偏導(dǎo)計(jì)算后其特征預(yù)測(cè)變量的梯度描述為
(10)
由梯度計(jì)算可知,特征預(yù)測(cè)復(fù)雜度也是O(kn)。從模型映射到特征預(yù)測(cè)都具有線性復(fù)雜度,有利于大數(shù)據(jù)處理效率。預(yù)測(cè)模型的階數(shù)并不是越高越好,二階處理適用于數(shù)據(jù)屬性為非線性的情況,三階處理適用于屬性耦合較強(qiáng)的情況。另外,由于本文將分解機(jī)與深度學(xué)習(xí)結(jié)合,階數(shù)過(guò)高不利于學(xué)習(xí),所以三階以上的分析意義不大。
本文采用BP神經(jīng)網(wǎng)絡(luò)與RBM構(gòu)造深度學(xué)習(xí)網(wǎng)絡(luò),RBM是一種無(wú)向圖,圖1描述了它的拓?fù)?。其中,q代表顯式層,c代表隱式層,W代表q與c的耦合權(quán)值。系統(tǒng)輸入數(shù)據(jù)由q層進(jìn)入,在c層完成特征處理。
圖1 RBM拓?fù)浣Y(jié)構(gòu)
考慮到RBM缺乏監(jiān)督學(xué)習(xí),為了彌補(bǔ)RBM的此缺陷,深度學(xué)習(xí)網(wǎng)絡(luò)設(shè)計(jì)為若干層RBM與單層BP網(wǎng)絡(luò),圖2為深度學(xué)習(xí)網(wǎng)絡(luò)模型。利用RBM實(shí)現(xiàn)數(shù)據(jù)特征識(shí)別操作,利用BP神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)特征分類操作。輸入數(shù)據(jù)首先經(jīng)過(guò)多層RBM訓(xùn)練,將特征識(shí)別結(jié)果送至BP神經(jīng)網(wǎng)絡(luò)層做最后的分類處理,BP神經(jīng)網(wǎng)絡(luò)層還會(huì)對(duì)網(wǎng)絡(luò)參數(shù)采取適當(dāng)調(diào)整,從而優(yōu)化網(wǎng)絡(luò)參數(shù)。
圖2 深度學(xué)習(xí)網(wǎng)絡(luò)模型
在RBM網(wǎng)絡(luò)中,將隱式層的偏置記作offq,顯式層的偏置記作offc,則根據(jù)顯式層能夠推導(dǎo)出隱式層,公式如下
(11)
因?yàn)镽BM網(wǎng)絡(luò)具有對(duì)稱性,所以根據(jù)隱式層也能夠推導(dǎo)出顯式層,公式如下
(12)
輸入集合q在經(jīng)過(guò)RBM網(wǎng)絡(luò)處理后輸出集合c,RBM網(wǎng)絡(luò)利用集合c與式(11)推導(dǎo)出隱式層集合q′,并與輸入集合q比較得到偏置。網(wǎng)絡(luò)訓(xùn)練過(guò)程就是搜索出最優(yōu)的輸入輸出聯(lián)合概率p(q,c)。為了得到p(q,c),這里首先計(jì)算輸入輸出的能量,公式如下
(13)
根據(jù)RBM輸入輸出能量,得到其聯(lián)合概率如下
p(q,c)∝exp(E(q,c))
(14)
然后計(jì)算RBM網(wǎng)絡(luò)的梯度,公式如下:
(15)
(16)
在進(jìn)行點(diǎn)擊率深度網(wǎng)絡(luò)學(xué)習(xí)時(shí),為避免發(fā)生過(guò)擬合,在BP神經(jīng)網(wǎng)絡(luò)層采用Dropout機(jī)制,該機(jī)制神經(jīng)網(wǎng)絡(luò)原理如圖3所示。Dropout機(jī)制就是在學(xué)習(xí)階段將所有神經(jīng)元都賦予對(duì)應(yīng)的活躍概率pa,其中任何神經(jīng)元可能處于活躍狀態(tài)或者失活狀態(tài),定義其理想輸出是pax。當(dāng)神經(jīng)元處于活躍狀態(tài)時(shí),采用活躍概率作為它在網(wǎng)絡(luò)中的權(quán)值。同時(shí),Dropout機(jī)制還會(huì)利用隨機(jī)方式選取神經(jīng)元,與其它神經(jīng)元進(jìn)行協(xié)作,降低彼此共適能力,最終防止過(guò)擬合情況的發(fā)生。
圖3 Dropout機(jī)制神經(jīng)網(wǎng)絡(luò)
本文采用Kaggle作為仿真數(shù)據(jù)集,并在Tensorflow平臺(tái)實(shí)現(xiàn)預(yù)測(cè)模型,模擬點(diǎn)擊率預(yù)測(cè)方法的實(shí)際效果。Kaggle是一個(gè)競(jìng)賽數(shù)據(jù)集,表1對(duì)其中主要字段進(jìn)行了具體描述。實(shí)驗(yàn)過(guò)程中從Kaggle隨機(jī)抽取定量帶有標(biāo)簽的數(shù)據(jù),并以5:1的比例分為學(xué)習(xí)集與測(cè)試集。實(shí)驗(yàn)設(shè)定學(xué)習(xí)速度是,Dropout的失活概率是。
采用損失函數(shù)Logloss和AUC作為點(diǎn)擊率預(yù)測(cè)性能的衡量指標(biāo)。為了能夠適應(yīng)不同方法,這里將Logloss函數(shù)衡量定義如下
(17)
(18)
式中f表示假陽(yáng)率。因?yàn)樘卣黝悇e差異會(huì)形成f的差異,所以通過(guò)f曲線圍成的面積得到AUC。
表1 實(shí)驗(yàn)數(shù)據(jù)集描述
在深度網(wǎng)絡(luò)對(duì)學(xué)習(xí)樣本集進(jìn)行迭代學(xué)習(xí)時(shí),得到測(cè)試樣本集的Logloss與預(yù)測(cè)準(zhǔn)確度的斂散變化情況,結(jié)果如圖4所示??梢钥闯?,在深度網(wǎng)絡(luò)學(xué)習(xí)的過(guò)程中,迭代至20代時(shí)Logloss就已經(jīng)達(dá)到最優(yōu)解收斂,此時(shí)預(yù)測(cè)準(zhǔn)確度達(dá)到最佳,損失函數(shù)Logloss值對(duì)應(yīng)0.422,預(yù)測(cè)準(zhǔn)確度對(duì)應(yīng)0.907。在迭代次數(shù)增加時(shí),原本應(yīng)該受到過(guò)度擬合的影響,使Logloss回升,準(zhǔn)確度減小,但是由于引入了Dropout機(jī)制,避免局部最優(yōu)解間的競(jìng)爭(zhēng),有效改善了神經(jīng)元的共適能力。同樣在學(xué)習(xí)樣本集迭代過(guò)程中,得到測(cè)試樣本集的AUC指標(biāo)變化情況,結(jié)果如圖5所示??梢钥闯觯诘?0代時(shí)AUC也收斂至最優(yōu)解,此時(shí)AUC對(duì)應(yīng)0.874。從上述實(shí)驗(yàn)結(jié)果可以得到,分解機(jī)特征映射模型能夠有效應(yīng)對(duì)高階高維特征,降低處理的復(fù)雜度,使得本文提出的點(diǎn)擊率預(yù)測(cè)方法具有良好的預(yù)測(cè)速度。
圖4 Logloss預(yù)測(cè)準(zhǔn)確度曲線
圖5 隨迭代次數(shù)變化曲線
將本文(THIS)提出的點(diǎn)擊率預(yù)測(cè)方法與FNN[7]、OPNN[8]、FM[9]、FDNN[10]、DBN[10]進(jìn)行性能比較,基于Kaggle數(shù)據(jù)集分別得到各方法對(duì)應(yīng)的Logloss和AUC指標(biāo),結(jié)果如圖6所示。通過(guò)對(duì)比可以得出,本文方法對(duì)于點(diǎn)擊率大數(shù)據(jù)預(yù)測(cè)具有更好的Logloss和AUC值。這種性能的提升是由于模型學(xué)習(xí)時(shí),考慮到點(diǎn)擊率的二分類特性,在特征預(yù)測(cè)的過(guò)程中優(yōu)化了損失函數(shù),結(jié)合深度網(wǎng)絡(luò)學(xué)習(xí),輸入數(shù)據(jù)經(jīng)過(guò)RBM訓(xùn)練提取出數(shù)據(jù)特征,再經(jīng)由BP神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)特征分類操作,同時(shí),BP對(duì)網(wǎng)絡(luò)參數(shù)采取優(yōu)化更新,當(dāng)預(yù)測(cè)模型性能出現(xiàn)下降或者梯度減弱時(shí),深度分解機(jī)能夠提高對(duì)高階交互特征的提取分類。
圖6 不同方法的預(yù)測(cè)性能對(duì)比
針對(duì)邏輯回歸與多項(xiàng)式回歸等模型在具有高維、高階,以及非線性關(guān)聯(lián)等特征的點(diǎn)擊率數(shù)據(jù)預(yù)測(cè)模型中表現(xiàn)出的缺陷,本文設(shè)計(jì)了一種高階分解機(jī)模型。為達(dá)到良好的解耦效果,完成數(shù)據(jù)特征的準(zhǔn)確高效提取,研究工作主要做了如下改進(jìn)創(chuàng)新:
1)采用隱向量代替權(quán)重計(jì)算,通過(guò)映射關(guān)系轉(zhuǎn)換降低復(fù)雜度,同時(shí)利用損失函數(shù)求偏導(dǎo)得到變量梯度更新。
2)在高階分解機(jī)模型基礎(chǔ)上,引入了深度網(wǎng)絡(luò)學(xué)習(xí),利用RBM實(shí)現(xiàn)數(shù)據(jù)特征識(shí)別操作,利用神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)特征分類操作。
基于Kaggle數(shù)據(jù)集的仿真,通過(guò)Logloss和AUC指標(biāo)數(shù)據(jù)驗(yàn)證了高階深度分解機(jī)能夠有效處理高階稀疏點(diǎn)擊率大數(shù)據(jù)的預(yù)測(cè),且具有良好的預(yù)測(cè)速度與預(yù)測(cè)準(zhǔn)確度,在樣本訓(xùn)練至約20代便可達(dá)到最佳預(yù)測(cè)效果,最優(yōu)準(zhǔn)確率達(dá)到0.907。