張若萱,董 晨,馬嘉駿,張釗銘,吳夢(mèng)歌,潘韻竹,劉海龍
(天津理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 天津 300384)
大學(xué)校園交易平臺(tái)為學(xué)生學(xué)習(xí)、生活帶來便利,建立大學(xué)校園交易平臺(tái)成為新的應(yīng)用需求,但面對(duì)海量商品,如何快速、精準(zhǔn)的為買家匹配到心儀商品,推薦算法成為關(guān)鍵。本文針對(duì)校園交易不同階段使用多階段推薦算法,實(shí)現(xiàn)個(gè)性化商品推薦。第一階段用戶和商品數(shù)量少,基于用戶注冊(cè)信息,使用XGBoost算法實(shí)現(xiàn)商品推薦。第二階段用戶和商品數(shù)量較大,采用基于物品和用戶的協(xié)同過濾實(shí)現(xiàn)個(gè)性化商品推薦。第三階段隨著交易增多和交流圈建立,信息與數(shù)據(jù)變得更為龐大,文本型數(shù)據(jù)較多,加入自然語言處理算法,使商品推薦更加精確高效。
多階段推薦算法流程見圖1。
圖1 多階段推薦算法流程
這一階段處于交易平臺(tái)的起步,用戶和商品數(shù)據(jù)較少,需要解決用戶冷啟動(dòng),物品冷啟動(dòng),系統(tǒng)冷啟動(dòng)問題[1]。為了提高商品推薦的準(zhǔn)確度,基于注冊(cè)用戶的信息和興趣標(biāo)簽訓(xùn)練決策樹模型,設(shè)計(jì)初步的用戶畫像。使用XGBoost算法對(duì)數(shù)據(jù)集進(jìn)行預(yù)測(cè),Boosting是一種非常有效的集成學(xué)習(xí)算法,采用Boosting算法將弱分類器轉(zhuǎn)化為強(qiáng)分類器,解決各類冷啟動(dòng)問題,流程如下。
(1)初始化模型為常數(shù)
(2)計(jì)算錯(cuò)誤率
(3)計(jì)算αm= log((1-errm) /errm)
根據(jù)迭代結(jié)果,輸出用戶和商品關(guān)系矩陣,矩陣元素(用0,1表示)表示此用戶是否會(huì)對(duì)該產(chǎn)品感興趣。
第二階段交易平臺(tái)中用戶和商品數(shù)據(jù)量較大,采用基于物品的協(xié)同過濾和基于用戶的協(xié)同過濾算法實(shí)現(xiàn)商品推薦。
2.2.1 基于物品的協(xié)同過濾算法
在交易平臺(tái)中,很多學(xué)生會(huì)多次購(gòu)買具有相似特征的商品,根據(jù)這一特點(diǎn),采用基于物品的協(xié)同過濾算法進(jìn)行推薦[2]。
(1)相似度計(jì)算
為了減小活躍用戶對(duì)結(jié)果的影響,考慮IUF(即用戶活躍度對(duì)數(shù)的倒數(shù)),這時(shí)認(rèn)為活躍用戶對(duì)物品相似度的貢獻(xiàn)應(yīng)該小于不活躍用戶。
為方便計(jì)算和訓(xùn)練,進(jìn)一步將相似度矩陣歸一化:
(2)根據(jù)預(yù)測(cè)值計(jì)算
根據(jù)以下公式:
pu,j表示u對(duì)物品j的興趣,N(u)表示用戶喜歡的物品集合,S(j,k)表示和物品j最相似的K個(gè)物品集合(j是這個(gè)集合中的某一個(gè)物品),Wji表示物品j和物品i的相似度,rui表示用戶u對(duì)物品i的興趣(對(duì)于隱反饋數(shù)據(jù)集,如果用戶u對(duì)物品i有過行為,rui都等于1。
2.2.2 基于用戶的協(xié)同過濾算法
大學(xué)校園中很多學(xué)生偏好相同,會(huì)出現(xiàn)購(gòu)買商品相似度較高的情況?;谶@一特點(diǎn),采用基于用戶的協(xié)同過濾算法能夠較好地實(shí)現(xiàn)精準(zhǔn)推薦。
(1)發(fā)現(xiàn)興趣相似的用戶
通常用Jaccard公式或者余弦相似度計(jì)算兩個(gè)用戶之間的相似度。設(shè)N(u)為用戶u喜歡的物品集合,N(v)為用戶v喜歡的物品集合,Jaccard公式:
余弦相似度:
通過建立“物品-用戶”倒排表,可計(jì)算出兩個(gè)用戶之間的相似度。
(2)推薦商品
(3)輸出推薦結(jié)果
將以上兩個(gè)推薦算法結(jié)果進(jìn)行加權(quán)評(píng)分,得到用戶偏好的商品列表并排名,直接進(jìn)行推薦。
隨著交易圈的擴(kuò)大,平臺(tái)用戶數(shù)量和商品信息量驟增,文本數(shù)據(jù)較多,為發(fā)揮文本數(shù)據(jù)作用,使預(yù)測(cè)更加準(zhǔn)確,引入自然語言處理詞袋模型和TF-IDF算法。
(1)詞袋模型
使用詞袋模型表示文本,將文本轉(zhuǎn)化為文檔中單詞出現(xiàn)次數(shù)的矩陣,主要步驟如下:
1)文本分詞:使用jieba分詞器將文本數(shù)據(jù)分詞。
2)構(gòu)建詞匯表:將文本語料庫中的所有單詞進(jìn)行標(biāo)號(hào),存儲(chǔ)在本地?cái)?shù)據(jù)庫中,并建立索引加快查找速度。
3)詞向量表示:每個(gè)單詞都表示為一個(gè)n維向量,在詞匯索引位置為1,其他為0。
4)統(tǒng)計(jì)頻次:統(tǒng)計(jì)每個(gè)文本中單詞出現(xiàn)的頻次,用向量的形式表示文本關(guān)鍵字。
(2)運(yùn)用TF-IDF算法評(píng)估關(guān)鍵字
在得到文本的向量表示后,希望將文檔中出現(xiàn)頻繁卻不是關(guān)鍵字的詞語權(quán)重降低,采用TF-IDF算法,即:
(3)訓(xùn)練模型
此時(shí)可以采用第二階段設(shè)計(jì)方法,在訓(xùn)練數(shù)據(jù)集中加入處理后的文本關(guān)鍵字,比如用戶評(píng)論,交友圈的文本內(nèi)容,得到更為準(zhǔn)確的商品推薦結(jié)果。
本實(shí)驗(yàn)主要基于交易平臺(tái)中的3000名用戶數(shù)據(jù)進(jìn)行測(cè)試,分別使用協(xié)同過濾算法和多階段推薦算法進(jìn)行商品推薦,如果用戶對(duì)推薦結(jié)果滿意則打分1,不滿意打分0,將打分總數(shù)/打分人數(shù)計(jì)算準(zhǔn)確率,圖2為推薦結(jié)果準(zhǔn)確率比較。
圖2 推薦算法準(zhǔn)確率比較
從圖2可以看出,在平臺(tái)交易的不同階段,使用多階段推薦算法,準(zhǔn)確率都比僅使用協(xié)同過濾算法高,表明多階段推薦算法更適合校園交易流程。