美麗聯(lián)合業(yè)務(wù)升級(jí)下的機(jī)器學(xué)習(xí)應(yīng)用
通常機(jī)器學(xué)習(xí)在電商領(lǐng)域有三大應(yīng)用,推薦、搜索、廣告,這次我們聊聊三個(gè)領(lǐng)域里都會(huì)涉及到的商品排序問(wèn)題。從業(yè)務(wù)角度,一般是在一個(gè)召回的商品集合里,通過(guò)對(duì)商品排序,追求GMV或者點(diǎn)擊量***化。進(jìn)一步講,就是基于一個(gè)目標(biāo),如何讓流量的利用效率***。很自然的,如果我們可以準(zhǔn)確預(yù)估每個(gè)商品的GMV轉(zhuǎn)化率或者點(diǎn)擊率,就可以***化利用流量,從而收益***。
蘑菇街是一個(gè)年輕女性垂直電商平臺(tái),主要從事服飾鞋包類目,2015年時(shí)全年GMV超過(guò)了百億,后與美麗說(shuō)合并后公司更名為美麗聯(lián)合集團(tuán)。2014年時(shí)入職蘑菇街,那時(shí)候蘑菇街剛剛開(kāi)始嘗試機(jī)器學(xué)習(xí),這3年中經(jīng)歷了很多變化,打造爆款、追求效率、提升品質(zhì)等等。雖然在過(guò)程中經(jīng)常和業(yè)務(wù)方互相challenge,但我們的理念——技術(shù)服務(wù)于業(yè)務(wù)始終沒(méi)有變化過(guò)。模型本身的迭代需配合業(yè)務(wù)目標(biāo)才能發(fā)揮出***的價(jià)值,因此選擇模型迭代的路線,必須全盤考慮業(yè)務(wù)的情況。
在開(kāi)始前,先和大家討論一些方法論。在點(diǎn)擊率預(yù)估領(lǐng)域,常用的是有監(jiān)督的模型,其中樣本、特征、模型是三個(gè)繞不開(kāi)的問(wèn)題。首先,如何構(gòu)建樣本,涉及模型的目標(biāo)函數(shù)是什么,即要優(yōu)化什么。原則上,我們希望樣本構(gòu)建越接近真實(shí)場(chǎng)景越好。比如點(diǎn)擊率模型常用用戶行為日志作為樣本,曝光過(guò)沒(méi)有點(diǎn)擊的日志是負(fù)樣本,有點(diǎn)擊的是正樣本,去構(gòu)建樣本集,變成一個(gè)二分類。在另一個(gè)相似的領(lǐng)域——Learning to rank,樣本構(gòu)建方法可以分為三類:pointwise、pairwise、listwise。簡(jiǎn)單來(lái)講,前面提到的構(gòu)建樣本方式屬于pointwise范疇,即每一條樣本構(gòu)建時(shí)不考慮與其他樣本直接的關(guān)系。但真實(shí)的場(chǎng)景中,往往需要考慮其他樣本的影響,比如去百度搜一個(gè)關(guān)鍵字,會(huì)出來(lái)一系列的結(jié)果,用戶的決策會(huì)受整個(gè)排序結(jié)果影響。故pairwise做了一點(diǎn)改進(jìn),它的樣本都是由pair對(duì)組成,比如電商搜索下,商品a和商品b可以構(gòu)建一個(gè)樣本,如果a比b好,樣本pair{a,b}是正樣本,否則是負(fù)樣本。
當(dāng)然,這會(huì)帶來(lái)新問(wèn)題,比如a>b,b>c,c>a,這個(gè)時(shí)候怎么辦?有興趣的同學(xué)可以參考From RankNet to LambdaRank to LambdaMART: An Overview。而listwise就更接近真實(shí),但復(fù)雜性也隨之增加,工業(yè)界用的比較少,這里不做過(guò)多描述。理論上,樣本構(gòu)建方式listwise>pairwise>pointwise,但實(shí)際應(yīng)用中,不一定是這個(gè)順序。比如,你在pointwise的樣本集下,模型的fit情況不是很好,比如auc不高,這個(gè)時(shí)候上pairwise,意義不大,更應(yīng)該從特征和模型入手。一開(kāi)始就選擇pairwise或者listwise,并不是一種好的實(shí)踐方式。
其次是模型和特征,不同模型對(duì)應(yīng)不同的特征構(gòu)建方式,比如廣告的點(diǎn)擊率預(yù)估模型,通常就有兩種組合方式:采用大規(guī)模離散特征+logistic regression模型或中小規(guī)模特征+復(fù)雜模型。比如gbdt這樣的樹(shù)模型,就沒(méi)有必要再對(duì)很多特征做離散化和交叉組合,特征規(guī)??梢孕∠聛?lái)。很難說(shuō)這兩種方式哪種好,但這里有個(gè)效率問(wèn)題。在工業(yè)界,機(jī)器學(xué)習(xí)工程師大部分的時(shí)間都是花在特征挖掘上,因此很多時(shí)候叫數(shù)據(jù)挖掘工程師更加合適,但這本身是一件困難且低效難以復(fù)用的工作。希望能更***干凈地解決這些問(wèn)題,是我們從不停地從學(xué)術(shù)界借鑒更強(qiáng)大的模型,雖然大部分不達(dá)預(yù)期,卻不曾放棄的原因。
言歸正傳,下文大致是按時(shí)間先后順序組織而成。
導(dǎo)購(gòu)到電商
蘑菇街原來(lái)是做淘寶導(dǎo)購(gòu)起家,在2013年轉(zhuǎn)型成電商平臺(tái),剛開(kāi)始的商品排序是運(yùn)營(yíng)和技術(shù)同學(xué)拍了一個(gè)公式,雖然很簡(jiǎn)單,但也能解決大部分問(wèn)題。作為一個(gè)初創(chuàng)的電商平臺(tái),商家數(shù)量和質(zhì)量都難以得到保障。當(dāng)時(shí)公式有個(gè)買手優(yōu)選的政策,即蘑菇街上主要售賣的商品都是經(jīng)過(guò)公司的買手團(tuán)隊(duì)人工審核,一定程度上保證了平臺(tái)的口碑,同時(shí)豎立平臺(tái)商品的標(biāo)桿。但這個(gè)方式投入很重,為了讓這種模式得到***收益,必須讓商家主動(dòng)學(xué)習(xí)這批買手優(yōu)選商品的運(yùn)營(yíng)模型。另一方面,從技術(shù)角度講,系統(tǒng)迭代太快,導(dǎo)致數(shù)據(jù)鏈路不太可靠,且沒(méi)有分布式機(jī)器學(xué)習(xí)集群。我們做了簡(jiǎn)化版的排序模型,將轉(zhuǎn)化、點(diǎn)擊、GMV表現(xiàn)好的一批商品作為正樣本,再選擇有一定曝光且表現(xiàn)不好的商品作為負(fù)樣本,做了一個(gè)爆款模型。該模型比公式排序的GMV要提升超過(guò)10%。
從結(jié)果上,這個(gè)模型還是很成功的,仔細(xì)分析下收益的來(lái)源:對(duì)比公式,主要是它更多相關(guān)的影響因子(即它的特征),而且在它的優(yōu)化目標(biāo)下學(xué)到了一個(gè)***的權(quán)重分配方案。而人工設(shè)計(jì)的公式很難包含太多因素,且是拍腦袋決定權(quán)重分配。由于這個(gè)模型的目標(biāo)很簡(jiǎn)單,學(xué)習(xí)商品成為爆款的可能性,因此做完常見(jiàn)CVR、CTR等統(tǒng)計(jì)特征,模型就達(dá)到了瓶頸。
做大做強(qiáng),效率優(yōu)先
到了2015年,平臺(tái)的DAU、GMV、商家商品數(shù)都在快速膨脹,原來(lái)的模型又暴露出新的業(yè)務(wù)問(wèn)題。一是該模型對(duì)目標(biāo)做了很大簡(jiǎn)化,只考慮了top商品,對(duì)表現(xiàn)中等的商品區(qū)分度很小;二是模型本身沒(méi)有繼續(xù)優(yōu)化的空間,auc超過(guò)了95%。這個(gè)時(shí)候,我們的數(shù)據(jù)鏈路和Spark集群已經(jīng)準(zhǔn)備好了。借鑒業(yè)界的經(jīng)驗(yàn),開(kāi)始嘗試轉(zhuǎn)化率模型。
我們的目標(biāo)是追求GMV***化。因此最直接的是對(duì)GMV轉(zhuǎn)化率建模,曝光后有成交的為正樣本,否則為負(fù)樣本,再對(duì)正樣本按price重采樣,可以一定程度上模擬GMV轉(zhuǎn)化率。另一種方案,用戶的購(gòu)買是有個(gè)決策路徑的,gmv = ctr * cvr * price,取log后可以變成log(gmv) = log(ctr) + log(cvr) + log(price),一般還會(huì)對(duì)這幾個(gè)目標(biāo)加個(gè)權(quán)重因子。這樣,問(wèn)題可以拆解成點(diǎn)擊率預(yù)估、轉(zhuǎn)化率預(yù)估,***再相加。從我們的實(shí)踐經(jīng)驗(yàn)看,第二種方案的效果優(yōu)于***種,主要原因在于第二種方案將問(wèn)題拆解成更小的問(wèn)題后,降低了模型學(xué)習(xí)的難度,用戶購(gòu)不購(gòu)買商品的影響因素太多,***種方案對(duì)模型的要求要大于后面的。但第二種方案存在幾個(gè)目標(biāo)之間需要融合,帶來(lái)了新的問(wèn)題。可以嘗試對(duì)多個(gè)模型的結(jié)果,以GMV轉(zhuǎn)化率再做一次學(xué)習(xí)得到融合的方案,也可以根據(jù)業(yè)務(wù)需求,人工分配參數(shù)。
模型上我們嘗試過(guò)lr和lr+xgboost。lr的轉(zhuǎn)化率模型對(duì)比爆款模型轉(zhuǎn)化率有8%以上的提升,lr+xgboost對(duì)比lr gmv轉(zhuǎn)化率有5%以上的提升。但我們建議如果沒(méi)有嘗試過(guò)lr,還是先用lr去積累經(jīng)驗(yàn)。在lr模型中,我們把主要的精力放在了特征工程上。在電商領(lǐng)域,特征從類型上可以分為三大種類:商品、店鋪、用戶。又可以按其特點(diǎn)分為:
- 統(tǒng)計(jì)類:比如點(diǎn)擊率、轉(zhuǎn)化率、商品曝光、點(diǎn)擊、成交等,再對(duì)這些特征進(jìn)行時(shí)間維度上的切割刻畫,可進(jìn)一步增強(qiáng)特征的描述力度。
- 離散類:id類特征。比如商品id、店鋪id、用戶id、query類id、類目id等,很多公司會(huì)直接做onehot編碼,得到一個(gè)高維度的離散化稀疏特征。但這樣會(huì)對(duì)模型訓(xùn)練、線上預(yù)測(cè)造成一定的工程壓力。另一種選擇是對(duì)其做編碼,用一種embedding的方式去做。
- 其他類:比如文本類特征,商品詳情頁(yè)標(biāo)題、屬性詞等。
常見(jiàn)的特征處理手段有l(wèi)og、平滑、離散化、交叉。根據(jù)我們的實(shí)踐經(jīng)驗(yàn),平滑非常重要,對(duì)一些統(tǒng)計(jì)類的特征,比如點(diǎn)擊率,天然是存在position bias。一個(gè)商品在曝光未充分之前,很難說(shuō)是因?yàn)樗旧砭忘c(diǎn)擊率低還是因?yàn)闆](méi)有排到前面得到足夠的曝光導(dǎo)致。因此,通過(guò)對(duì)CTR平滑的方式來(lái)增強(qiáng)該指標(biāo)的置信度,具體選擇貝葉斯平滑、拉普拉斯平滑或其他平滑手段都是可以的。這個(gè)平滑參數(shù),大了模型退化成爆款模型,小了統(tǒng)計(jì)指標(biāo)置信度不高,需根據(jù)當(dāng)前數(shù)據(jù)分布去折中考慮。
我們借鑒了Facebook在gbdt+lr的經(jīng)驗(yàn),用xgboost預(yù)訓(xùn)練模型,將輸出的葉子節(jié)點(diǎn)當(dāng)做特征輸入到lr模型中訓(xùn)練。實(shí)踐中,需特別注意是選擇合理的歸一化方案避免訓(xùn)練和預(yù)測(cè)階段數(shù)據(jù)分布的變化帶來(lái)模型的效果的不穩(wěn)定。該方案容易出現(xiàn)過(guò)擬合的現(xiàn)象,建議樹(shù)的個(gè)數(shù)多一點(diǎn),深度少一些。當(dāng)然xgboost有很多針對(duì)過(guò)擬合的調(diào)參方案,這里不再?gòu)?fù)述。
在轉(zhuǎn)化率模型取得一定成果后,開(kāi)始個(gè)性化的嘗試。個(gè)性化方案分為兩種:
- 標(biāo)簽類個(gè)性化:購(gòu)買力、風(fēng)格、地域等。
- 行為粒度相似個(gè)性化(千人千面):推薦的思想,根據(jù)用戶的行為日志,構(gòu)建商品序列,對(duì)這些序列中的商品找相識(shí)的商品去rerank。常見(jiàn)的方法有:
- 實(shí)時(shí)偏好
- 離線偏好
- 店鋪偏好
- etc
標(biāo)簽類個(gè)性化具有可解釋高,業(yè)務(wù)合作點(diǎn)多等優(yōu)點(diǎn),而缺點(diǎn)是覆蓋率低,整體上指標(biāo)提升不明顯。而行為粒度相識(shí)個(gè)性化優(yōu)點(diǎn)是覆蓋率高,刻畫細(xì)致,上線后多次迭代,累計(jì)GMV提升10%。但其缺點(diǎn)是業(yè)務(wù)可解釋性差,業(yè)務(wù)方難以使用該技術(shù)去運(yùn)營(yíng)。
我們的個(gè)性化方案不是直接把特征放入模型,而是將排序分為初排和精排,在精排層做個(gè)性化。這樣精排可以只對(duì)topN個(gè)商品做個(gè)性化,qps有明顯提升。因此在架構(gòu)上,如圖1,在傳統(tǒng)的搜索引擎上層加了一個(gè)精排,設(shè)計(jì)UPS系統(tǒng)做為用戶實(shí)時(shí)、離線特征存儲(chǔ)模型。
圖1 個(gè)性化排序系統(tǒng)架構(gòu)
品質(zhì)升級(jí)
隨著大環(huán)境消費(fèi)升級(jí)的到來(lái),公司將品質(zhì)升級(jí)做為一個(gè)戰(zhàn)略方向。模型策略的目標(biāo)是幫助業(yè)務(wù)方達(dá)成目標(biāo)的同時(shí),降低損失,減少流量的浪費(fèi)。通過(guò)分人群引導(dǎo)的方案,建立流量端和品質(zhì)商品端的聯(lián)系,達(dá)到在全局轉(zhuǎn)化率微跌的情況下,品質(zhì)商品的流量提升40%。其整體的設(shè)計(jì)方案如圖2。
圖2 實(shí)時(shí)在線人群引導(dǎo)算法架構(gòu)
將用戶的反饋分為實(shí)時(shí)和離線兩種,在Spark Stream上搭建在線分群模塊,***將用戶群的數(shù)據(jù)存儲(chǔ)在UPS中,在精排增加引導(dǎo)策略,實(shí)現(xiàn)對(duì)用戶在線實(shí)時(shí)分群引導(dǎo),其數(shù)據(jù)流如圖3。
圖3 實(shí)時(shí)在線人群引導(dǎo)數(shù)據(jù)流
從效果看,引導(dǎo)和非引導(dǎo)次日回訪率隨時(shí)間逐步接近,流失率也在隨時(shí)間遞減,說(shuō)明隨時(shí)間的推移,人群的分群會(huì)逐漸穩(wěn)定。從全局占比看,大部分用戶都是可以引導(dǎo)的。
圖4 人群次日回訪率
圖5 次日引導(dǎo)用戶流失率
圖6 人群占比統(tǒng)計(jì)圖
未來(lái)
我們最近做了一些深度學(xué)習(xí)實(shí)驗(yàn),結(jié)合百度在CTR領(lǐng)域的DNN實(shí)踐,可以確認(rèn)在電商領(lǐng)域應(yīng)用深度學(xué)習(xí)的技術(shù)大有可為。另外,電商的業(yè)務(wù)場(chǎng)景天然具有導(dǎo)購(gòu)的屬性,而這正好是可以與強(qiáng)化學(xué)習(xí)結(jié)合,阿里在這方面已經(jīng)有不少嘗試。這兩塊后續(xù)也會(huì)是蘑菇街未來(lái)的方向。