朱玨樟
(浙大城市學(xué)院計(jì)算機(jī)系,杭州310000)
近年來,隨著電商行業(yè)的不斷發(fā)展,網(wǎng)上購物的用戶不斷增加,用戶的行為數(shù)據(jù)相比以前網(wǎng)絡(luò)不普及,電商平臺(tái)不成熟的時(shí)候要多得多。
電商行業(yè)的蓬勃發(fā)展使各個(gè)商家希望運(yùn)用計(jì)算機(jī)分析方法從大量的商品數(shù)據(jù)、客戶數(shù)據(jù)、客戶購買行為數(shù)據(jù)中找到某些規(guī)律并根據(jù)規(guī)律來進(jìn)一步預(yù)測(cè)客戶的購買行為,從而來減小營銷成本并提升收益,更好的留住用戶。雖然目前已經(jīng)有了很多成熟的算法,例如協(xié)同過濾,可以利用興趣相同或有相似行為的用戶歷史數(shù)據(jù),來推薦或者預(yù)測(cè)未來用戶可能會(huì)對(duì)哪些商品有行為。但是由于現(xiàn)實(shí)場(chǎng)景中的用戶數(shù)據(jù)量、商品數(shù)據(jù)量、用戶購買行為數(shù)據(jù)量巨大,直接使用算法會(huì)導(dǎo)致計(jì)算效率低而且無法運(yùn)用于實(shí)際場(chǎng)景中。本文想要從大量的商品中,挑選出部分商品,再結(jié)合用戶的歷史購買行為從這部分商品中選出用戶未來最有可能對(duì)其有購買行為的商品,這種方法可以更好地應(yīng)用到實(shí)際中。
通過查閱相關(guān)內(nèi)容的文獻(xiàn)和研究發(fā)現(xiàn),國內(nèi)外學(xué)者對(duì)用戶的行為預(yù)測(cè)主要可以分為,通過電商平臺(tái)所獲得的真實(shí)用戶行為數(shù)據(jù)記錄,發(fā)現(xiàn)用戶所感興趣的商品,并根據(jù)推薦算法來為用戶推薦可能感興趣的商品的方法,還有一種是通過機(jī)器學(xué)習(xí)算法,分析用戶行為記錄來找到用戶行為的某些規(guī)律來預(yù)測(cè)用戶的行為,兩種方式。
在基于推薦系統(tǒng)進(jìn)行用戶行為預(yù)測(cè)方面,韓民琦通過挖掘用戶的隱式反饋數(shù)據(jù)來研究用戶在決策過程中的行為,發(fā)現(xiàn)隱式反饋的數(shù)據(jù)更能反映消費(fèi)者的購物傾向[1]。高茂庭提出了融合主題模型和協(xié)同過濾的彈幕視頻推薦算法(DRCFT)來解決一些網(wǎng)站由于缺乏用戶評(píng)分而無法推薦的問題[2]。
在基于機(jī)器學(xué)習(xí)進(jìn)行用戶行為預(yù)測(cè)方面,楊颯然在XGBoost 和LightBGM 算法上進(jìn)行了客戶購買行為的建模和預(yù)測(cè)[3]。陳軍華利用客戶購買行為數(shù)據(jù)構(gòu)建了基于隱藏多維度的客戶偏好推薦算法[4]。胡東波對(duì)電子商務(wù)消費(fèi)者調(diào)查問卷使用了決策樹來進(jìn)行挖掘[5]。Silahtaroglu 等在顧客歷史購物行為數(shù)據(jù)和人口統(tǒng)計(jì)數(shù)據(jù)基礎(chǔ)上,用決策樹和神經(jīng)網(wǎng)絡(luò)來預(yù)測(cè)顧客是否會(huì)購買自己購物車?yán)锏纳唐穂6]。
本文希望借用先召回少量商品再用XGBoost、LightGBM、CatBoost 算法對(duì)召回的商品進(jìn)行排序的方法,來實(shí)現(xiàn)對(duì)用戶行為的準(zhǔn)確預(yù)測(cè)。
該競(jìng)賽提供的數(shù)據(jù)是一組1-16 天的用戶行為日志和用戶信息以及感興趣商品信息。原本是要用1-16天的用戶行為來預(yù)測(cè)未來17 天的用戶行為,但是線上的測(cè)試集不可見。所以我改為用1-15 天的用戶行為預(yù)測(cè)未來第16 天的用戶行為。同時(shí)因?yàn)樵瓟?shù)據(jù)集數(shù)據(jù)量過大,硬件條件的限制,所以從原數(shù)據(jù)中提取了100000 個(gè)用戶的5537110 條行為記錄作為訓(xùn)練集,第16 天5000 個(gè)用戶的行為記錄,作為測(cè)試集。在用戶行為數(shù)據(jù)集中,分別包含了4 個(gè)字段,用戶ID、商品ID、行為類型、時(shí)間戳。其中行為類型有‘pv’、‘buy’、‘cart’、‘fav’,分別對(duì)應(yīng)瀏覽,購買,添加到購物車,收藏等用戶行為,并視每一種行為均為用戶對(duì)該商品感興趣的表現(xiàn)。在用戶信息數(shù)據(jù)集中也包含了4 個(gè)字段,用戶ID,性別,年齡,購買力。其中性別由數(shù)字0 和1來表示,0 代表男性用戶,1 代表女性用戶。購買力由整數(shù)1-9 來表示不同用戶的購買能力。
在商品信息數(shù)據(jù)集中同樣包含了4 個(gè)字段,商品ID,類目ID,店鋪ID,品牌ID。
通過查看用戶信息、商品信息、用戶行為數(shù)據(jù)集發(fā)現(xiàn)無缺失值。由于用戶行為數(shù)據(jù)集中的時(shí)間戳不方便觀察和統(tǒng)計(jì),所以將其轉(zhuǎn)化為天數(shù),以便后續(xù)的統(tǒng)計(jì)分析。之后我們將用戶行為按照興趣程度分別把‘pv’設(shè)為1,‘fav’設(shè)為2,‘cart’設(shè)為3,‘buy’設(shè)為4。圖1 統(tǒng)計(jì)了在未來用戶感興趣的商品類別在過去15 天的數(shù)量變化情況。
圖1 未來用戶感興趣商品在過去15天的數(shù)量分布情況
從圖1 中可以看出隨著時(shí)間離第15 天越近,未來被用戶感興趣的商品被感興趣的次數(shù)就越多,離第15天越遠(yuǎn),未來被用戶感興趣的商品被感興趣的次數(shù)就越少。所以我們根據(jù)時(shí)間對(duì)行為的重要程度,將時(shí)間轉(zhuǎn)化為權(quán)重計(jì)算用戶對(duì)商品的感興趣程度。
用戶信息在本數(shù)據(jù)集中分別有性別、年齡、消費(fèi)水平三個(gè)特征。數(shù)據(jù)集包含了100000 個(gè)用戶。我們首先根據(jù)性別進(jìn)行統(tǒng)計(jì),其中男性用戶有40822 位,女性用戶有59178 位,以女性用戶居多。統(tǒng)計(jì)各個(gè)年齡的用戶數(shù)量發(fā)現(xiàn)用戶主要集中在20-40 歲左右,這也和實(shí)際情況相符合,這個(gè)年齡段的人相比20 歲以下的還未有經(jīng)濟(jì)能力的少年來說,更有能力和時(shí)間進(jìn)行網(wǎng)上購物,相比40 歲以后的人來說,更有購物的欲望和對(duì)更好品質(zhì)生活的追求。這個(gè)年齡段的用戶有69067位,差不多占了所有用戶的2/3。最后統(tǒng)計(jì)不同消費(fèi)能力的用戶數(shù)量。經(jīng)過統(tǒng)計(jì)發(fā)現(xiàn)消費(fèi)水平為‘6’的用戶占絕大多數(shù)。根據(jù)編號(hào)的順序可以知道,這一消費(fèi)水平的用戶屬于中產(chǎn)階級(jí)或略微好于中產(chǎn)階級(jí)的這一類人群,有27742 位用戶差不多占了總用戶的1/3 左右。圖2 展示了男性用戶在不同年齡所擁有的不同消費(fèi)能力的數(shù)量情況。圖3 展示了女性用戶在不同年齡所擁有的不同消費(fèi)能力的數(shù)量情況。
從圖中可以明顯的發(fā)現(xiàn),小于20 歲的人群以低消費(fèi)水平為主,20 歲之后,隨著年齡的增長低消費(fèi)人群快速變少,高消費(fèi)人群快速增加。在30 歲左右低消費(fèi)和高消費(fèi)人群都到達(dá)頂峰,之后隨著年齡的增長緩慢下降。圖中各個(gè)消費(fèi)水平人數(shù)隨年齡的變化曲線都比較類似,側(cè)面反映出了年齡對(duì)消費(fèi)水平和消費(fèi)欲望的影響。
圖2 男性用戶年齡-消費(fèi)能力數(shù)量分布圖
圖3 女性用戶年齡-消費(fèi)水平數(shù)量分布圖
數(shù)據(jù)集中所記錄的是0-14 天的用戶行為(假定最早的行為發(fā)生在第0 天)。對(duì)這15 天用戶所進(jìn)行的操作類型進(jìn)行統(tǒng)計(jì),發(fā)現(xiàn)‘pv’操作,即瀏覽的次數(shù)最多,有4896977 次,占據(jù)了所有記錄的88.4%,‘cart’操作,即添加購物車的次數(shù)有318981 次,占了所有記錄的6%左右,‘buy’操作,即購買的次數(shù)有186855 次,占所有記錄的3.3%,‘fav’操作,即收藏的次數(shù)僅有134297次,占所有記錄的2.3%。這說明,在網(wǎng)購期間,絕大多數(shù)用戶以瀏覽為主,即絕大多數(shù)人都喜歡在電商平臺(tái)‘閑逛’,雖然該行為只是瀏覽,但是也反映了該商品吸引了用戶點(diǎn)擊瀏覽。添加購物車的行為比瀏覽更代表用戶對(duì)商品感興趣。值得注意的是,經(jīng)比賽解釋,并不是所有購買的行為都有添加購物車的記錄,有可能添加購物車是在第0 天之前,所以購買行為和添加購物車行為沒有必然的聯(lián)系,經(jīng)統(tǒng)計(jì)在15 天內(nèi)先發(fā)生‘cart’再發(fā)生‘buy’的記錄只有僅僅數(shù)百條。為了更加明顯直觀的看出不同用戶群體的用戶行為特征,我們將用戶信息數(shù)據(jù)集和用戶行為數(shù)據(jù)集連接在一起,根據(jù)上述對(duì)用戶信息的分析,將用戶分為低消費(fèi)水平男性/女性少年/壯年/中年/老年用戶,中等消費(fèi)水平男性/女性少年/壯年/中年/老年用戶,高消費(fèi)水平男性/女性少年/壯年/中年/老年用戶,這24 類用戶。為了發(fā)現(xiàn)同年齡段,同性別的用戶之間的行為共同點(diǎn),我們挑選了20-40 歲之間的男性用戶,并對(duì)這些用戶所操作過的共同商品數(shù)量進(jìn)行統(tǒng)計(jì)計(jì)算,同時(shí)考慮到不同消費(fèi)水平的用戶所喜愛的商品也會(huì)有所不同,所以將20-40 歲之間的男性用戶分為20-40 歲消費(fèi)水平1-5/6/7-9 的男性用戶。圖4 為20-40 歲消費(fèi)水平1-5 即低消費(fèi)的男性用戶,圖5 為20-40 歲消費(fèi)水平為6 即中等消費(fèi)的男性用戶,圖6 為20-40 歲消費(fèi)水平7-9 即高等消費(fèi)的男性用戶。
圖4 20-40歲低消費(fèi)男性用戶操作的商品和商品數(shù)量分布
圖5 20-40歲中等消費(fèi)男性用戶操作的商品和商品數(shù)量分布
圖6 20-40歲低消費(fèi)女性用戶操作的商品和商品數(shù)量分布
從上述圖表中可以很明顯的發(fā)現(xiàn),相似的用戶群體對(duì)相同商品有著相似的興趣,而且都在第200 個(gè)商品左右用戶關(guān)注的商品開始分散,并且每種商品被用戶操作的次數(shù)都差不多,所以呈現(xiàn)出了長尾分布。這種長尾分布的尾部占了很大一部分,而且這一部分的商品種類很多,但是數(shù)量又很少。所以我們把每個(gè)用戶群體最感興趣的前k 個(gè)商品當(dāng)做是能夠代表這個(gè)用戶群體興趣的商品,這為之后從商品庫中挑選商品候選集提供了思路。
在商品信息數(shù)據(jù)集中,有商品ID,商品類別,店鋪ID,品牌ID,4 個(gè)字段的信息。一共有1306170 件商品。其中商品類別有7824 個(gè),店鋪有423589 個(gè),品牌有177464 個(gè)。為了發(fā)現(xiàn)用戶行為和商品信息之間的關(guān)系,我們將用戶行為數(shù)據(jù)集和商品信息數(shù)據(jù)集進(jìn)行連接。對(duì)于歷史上用戶曾經(jīng)感興趣過的商品類型是否會(huì)在未來仍會(huì)被用戶所感興趣的問題,我們沒有區(qū)分用戶行為一同分析了用戶在15 天內(nèi)的行為記錄。如圖7 所示,大半用戶在未來仍會(huì)對(duì)之前感興趣的商品類型有操作,這些被重復(fù)操作的商品類型更能表現(xiàn)用戶的喜好,而這些商品類型隨著用戶的數(shù)量增多重復(fù)次數(shù)也會(huì)增多。
圖7 用戶對(duì)歷史感興趣商品類別重復(fù)操作數(shù)量情況
同樣對(duì)于歷史上用戶曾經(jīng)感興趣過的店鋪是否在未來仍會(huì)被用戶所感興趣的問題,同樣進(jìn)行了上述統(tǒng)計(jì)計(jì)算。如圖8 所示,用戶對(duì)之前感興趣的店鋪在未來仍有較大可能訪問。
圖8 用戶對(duì)歷史感興趣店鋪重復(fù)操作數(shù)量情況
這些信息都表明,用戶對(duì)同樣的商品類型和店鋪有一定的依賴性,用戶更喜歡去訪問以前有訪問或接觸過的東西。這對(duì)之后構(gòu)造特征有所幫助。
由于商品數(shù)量非常龐大,評(píng)估用戶對(duì)每個(gè)商品的興趣度不現(xiàn)實(shí),所以要從大量的商品信息中盡可能的挑選出用戶可能會(huì)感興趣,可能會(huì)對(duì)其有所行為的商品。這不僅減少了之后對(duì)商品排序的工作量,又剔除了一些長尾分布中處于尾部,可能會(huì)影響排序的樣本。本文通過商品類別和用戶類別進(jìn)行召回,并結(jié)合兩種召回所得到的商品,作為商品候選集,同時(shí)構(gòu)造測(cè)試集。
根據(jù)對(duì)數(shù)據(jù)的分析,發(fā)現(xiàn)用戶行為離未來越近,用戶感興趣的商品類別和未來用戶感興趣的商品類別越相似。而傳統(tǒng)的根據(jù)商品類別召回的方法是根據(jù)用戶所有的感興趣的商品類別不加區(qū)分的進(jìn)行推薦,但是用戶很可能對(duì)很久之前買過的那種類別的商品已經(jīng)失去了興趣,例如用戶在過去對(duì)鼠標(biāo)很感興趣,但某一段時(shí)間之后對(duì)鼠標(biāo)沒有任何操作,近期對(duì)自行車類的商品經(jīng)常有行為,那么可以認(rèn)為這個(gè)用戶的興趣已經(jīng)發(fā)生了改變,對(duì)鼠標(biāo)類的商品已經(jīng)失去了興趣而對(duì)自行車類的商品有著濃厚的興趣。所以在進(jìn)行商品類別召回的時(shí)候,可以多召回一些自行車類的商品,少召回一些鼠標(biāo)類的商品,這樣的方法相比傳統(tǒng)的方法更加符合實(shí)際情況,召回的效果更好。
同時(shí)根據(jù)傳統(tǒng)的商品類別進(jìn)行召回,以便在最后進(jìn)行結(jié)果對(duì)比。
針對(duì)在15 天內(nèi)沒有過行為的新客戶進(jìn)行召回,以解決冷啟動(dòng)問題。因?yàn)樵谶^去沒有任何關(guān)于新用戶的行為記錄,所以無法利用之前的得出的結(jié)論進(jìn)行預(yù)測(cè)。所以我們根據(jù)之前通過分析用戶信息得到的結(jié)果,將不同性別、年齡、消費(fèi)水平的用戶分為20 歲以下/20-40 歲/40-60 歲/60 歲以上的男/女性低消費(fèi)/中等消費(fèi)/高消費(fèi)用戶24 類。因?yàn)橥愑脩羲信d趣的商品數(shù)量呈現(xiàn)長尾分布,所以我們選擇前k 件商品作為能代表該類用戶興趣的商品,并將這些商品推薦給同類的新用戶。
根據(jù)歷史用戶行為數(shù)據(jù)分別構(gòu)造了用戶特征,用戶-商品行為特征,商品特征中提取相關(guān)特征,并根據(jù)是否加入時(shí)間因素分為靜態(tài)特征和動(dòng)態(tài)特征兩種特征,一共69 種特征。通過對(duì)之前召回的商品進(jìn)行排序就可以獲得最終的推薦列表,也就是用戶在未來可能會(huì)對(duì)其有所行為的商品列表。我們將對(duì)商品排序的問題轉(zhuǎn)化為二分類問題,即判斷該商品是否會(huì)被用戶有所行為,并根據(jù)可能為1 的概率對(duì)商品進(jìn)行排序。根據(jù)15 天內(nèi)的用戶行為記錄和商品候選集構(gòu)造訓(xùn)練集。將用戶曾經(jīng)感興趣的商品同該類商品類別中熱門的商品做并集,并把曾經(jīng)感興趣的商品的標(biāo)簽置為1,其余商品的標(biāo)簽置為0,即從商品候選集中選取正樣本和負(fù)樣本,并不是將所有用戶所感興趣的商品都作為正樣本,因?yàn)橛行┥唐繁桓信d趣的次數(shù)太少,如果將其作為正樣本可能會(huì)影響結(jié)果。用同樣方法對(duì)不同類別的用戶構(gòu)造訓(xùn)練集。
由于正樣本和負(fù)樣本的比例過于不均衡,所以我們對(duì)負(fù)樣本采取隨機(jī)抽樣的方法最終將正、負(fù)樣本數(shù)的比例定為1:10,正樣本數(shù)量232329,負(fù)樣本數(shù)量2323290。最終的訓(xùn)練集大小為2555619 條數(shù)據(jù)。之后使用XGBoost、LGBM、CatBoost 進(jìn)行建模預(yù)測(cè),根據(jù)預(yù)測(cè)的每個(gè)商品為1 的可能性進(jìn)行排序,選出前k 個(gè)商品作為推薦商品,使用競(jìng)賽給出的公式(1)計(jì)算結(jié)果。其中u 表示用戶,Pu(∣Pu∣≤50)為最后選出的用戶u的未來感興趣商品合集。Gu 為用戶u 的真實(shí)興趣商品合集,Hu 為用戶u 的歷史感興趣商品集合。即要從預(yù)測(cè)的商品合集中刪除用戶以往感興趣的商品。
本文采取交叉驗(yàn)證的方式來對(duì)模型的訓(xùn)練效果進(jìn)行驗(yàn)證,從訓(xùn)練集中按照4:1 的比例劃分訓(xùn)練集和驗(yàn)證集,同時(shí)生成混淆矩陣來計(jì)算相應(yīng)的預(yù)測(cè)結(jié)果,如召回率、AUC、F1-score,最后用全部訓(xùn)練集數(shù)據(jù)建模預(yù)測(cè)測(cè)試集樣本。
在召回階段,本文采取的召回方式相較于傳統(tǒng)的根據(jù)商品類別召回方式不同,傳統(tǒng)的根據(jù)商品類別進(jìn)行召回是將所有用戶所產(chǎn)生的用戶行為當(dāng)做是同一時(shí)間發(fā)生的行為,并沒有對(duì)用戶行為的時(shí)間順序加以區(qū)別。實(shí)際情況中,用戶對(duì)商品的興趣會(huì)隨著時(shí)間的增加而不斷減弱,所以本文將用戶最后一次對(duì)某商品類別感興趣的時(shí)間轉(zhuǎn)化為相對(duì)應(yīng)的權(quán)重,時(shí)間離未來近的商品類別所占的比重就越大,該商品類別召回的商品就越多。同時(shí)盡可能保持和傳統(tǒng)方式所召回的商品數(shù)量一致,方便結(jié)果對(duì)比。最后通過對(duì)兩組不同的5000 個(gè)用戶進(jìn)行預(yù)測(cè)推薦,結(jié)果取平均值。
實(shí)驗(yàn)結(jié)果如表1 所示,根據(jù)實(shí)驗(yàn)結(jié)果顯示,XGBoost 要優(yōu)于CatBoost 要優(yōu)于LightGBM。
表1 實(shí)驗(yàn)結(jié)果
最后將本文采用的方法與傳統(tǒng)的方法預(yù)測(cè)的結(jié)果相比較,如圖9 所示。
圖9 本文方法與傳統(tǒng)方法結(jié)果比較
從結(jié)果對(duì)比圖中發(fā)現(xiàn),使用XGBoost 模型進(jìn)行排序,本文的方法要比傳統(tǒng)方法提升了30%,使用LGBM模型進(jìn)行排序結(jié)果提升了5.3%,使用CatBoost 模型進(jìn)行排序結(jié)果提升了10.6%。根據(jù)以上結(jié)論,可以得出本文使用的方法要比傳統(tǒng)根據(jù)商品類別召回的方法更加符合實(shí)際情況,能更好地預(yù)測(cè)未來用戶的行為和適應(yīng)用戶興趣的變化,在實(shí)際場(chǎng)景中有一定的應(yīng)用價(jià)值。
本文通過對(duì)阿里巴巴天池大數(shù)據(jù)比賽提供的用戶行為數(shù)據(jù)進(jìn)行研究,發(fā)現(xiàn)了用戶歷史行為對(duì)未來用戶行為的影響,并嘗試從大量的商品中召回少量商品再通過模型進(jìn)行排序的方法,來提高預(yù)測(cè)用戶行為、推薦用戶商品的效率和準(zhǔn)確率。對(duì)于將推薦算法更好地應(yīng)用于實(shí)際場(chǎng)景有著一定的借鑒意義。