劉豐維
(上海飛機(jī)制造有限公司,上海201324)
無(wú)論在學(xué)術(shù)界還是在工業(yè)界,個(gè)性化推薦系統(tǒng)的研究越來(lái)越受到重視。一方面來(lái)說(shuō),個(gè)性化推薦系統(tǒng)在電子商務(wù)領(lǐng)域落地情況很好,積累了大量真實(shí)的數(shù)據(jù),這能夠推動(dòng)學(xué)術(shù)界對(duì)于推薦系統(tǒng)的研究。另一方面來(lái)說(shuō),個(gè)性化推薦系統(tǒng)能夠在海量商品中,給用戶展示其最有購(gòu)買意向的商品,極大地改善了用戶的購(gòu)物體驗(yàn),提高了用戶的購(gòu)買率。
在大數(shù)據(jù)技術(shù)初步用于電商推薦系統(tǒng)時(shí),猜你喜歡、看了又看等推薦形式給用戶帶來(lái)了全新體驗(yàn),可以在一定程度上捕捉到消費(fèi)者的興趣點(diǎn)。但是由于用戶興趣點(diǎn)在長(zhǎng)期和短期內(nèi)都會(huì)發(fā)生變化,滯后或不變的推薦結(jié)果會(huì)造成用戶疲勞。隨著大數(shù)據(jù)、云計(jì)算、人工智能算法技術(shù)的發(fā)展,各電商平臺(tái)都在研究開發(fā)個(gè)性化實(shí)時(shí)推薦系統(tǒng),做到根據(jù)用戶的行為為每個(gè)用戶實(shí)時(shí)地、精準(zhǔn)地推送感興趣商品,從而達(dá)到比用戶更了解自己的效果。本文設(shè)計(jì)了包含數(shù)據(jù)層、模型層、融合層、應(yīng)用層的個(gè)性化實(shí)時(shí)推薦系統(tǒng)架構(gòu)。數(shù)據(jù)層基于Spark Streaming實(shí)現(xiàn)了用戶行為實(shí)時(shí)采集。模型層包含協(xié)同過濾、相似商品、熱度等多路召回模型。融合層根據(jù)用戶實(shí)時(shí)行為對(duì)召回結(jié)果重排。應(yīng)用層展示推薦結(jié)果,并埋點(diǎn)記錄用戶反饋,用于推薦效果評(píng)估。
本文設(shè)計(jì)基于用戶歷史行為序列的電商個(gè)性化推薦系統(tǒng)包括數(shù)據(jù)層、模型層、融合層、應(yīng)用層4個(gè)部分,基于用戶實(shí)時(shí)行為(包括瀏覽、收藏、分享、購(gòu)買、不喜歡等),實(shí)現(xiàn)了實(shí)時(shí)召回+精排的主流推薦流程。系統(tǒng)架構(gòu)如圖1所示。

圖1 基于用戶歷史行為序列的電商個(gè)性化推薦系統(tǒng)架構(gòu)
數(shù) 據(jù) 層 包 括Spark Streaming、HBase、MySQL和Hive。
Spark Streaming流式計(jì)算實(shí)時(shí)處理應(yīng)用層埋點(diǎn)獲取的用戶行為,包括正向行為(瀏覽、收藏、分享、購(gòu)買)和負(fù)向行為(不喜歡、不再推薦)。Spark Streaming將用戶行為數(shù)據(jù)寫入HBase和Hive。
HBase是一個(gè)高可靠性、高性能、面向列、可伸縮的分布式存儲(chǔ)系統(tǒng),能夠支持大量字段的隨機(jī)寫入和讀取。本系統(tǒng)采用HBase的這個(gè)特性,實(shí)現(xiàn)用戶行為的實(shí)時(shí)寫入和快速查詢。根據(jù)實(shí)時(shí)查詢到的用戶行為,在融合層實(shí)時(shí)計(jì)算用戶類目偏好權(quán)重。
MySQL是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。本系統(tǒng)使用MySQL存儲(chǔ)商品及用戶信息,這些信息用于生成相似商品、相關(guān)商品模型以及用戶類目偏好權(quán)重計(jì)算。
Hive是基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,用來(lái)進(jìn)行大數(shù)據(jù)的提取、轉(zhuǎn)化、加載。本系統(tǒng)利用Hadoop大數(shù)據(jù)存儲(chǔ)及并行計(jì)算能力,來(lái)存儲(chǔ)用戶歷史行為數(shù)據(jù),以及用這些數(shù)據(jù)來(lái)計(jì)算商品推薦效果指標(biāo),比如商品曝光點(diǎn)擊率CTR等。
模型層主要包含4個(gè)召回模型,分別是協(xié)同過濾模型、相似商品模型、熱度統(tǒng)計(jì)模型和相關(guān)商品模型。
協(xié)同過濾模型主要采用矩陣分解方法,從用戶和商品交互行為數(shù)據(jù)中,挖掘出相似用戶和相似商品,并得到為每個(gè)用戶推薦的商品集合。
相似商品模型通過計(jì)算商品特征向量間的內(nèi)積得到商品間的相似度,為每個(gè)商品推薦最為相似的前100個(gè)商品集合。當(dāng)用戶對(duì)某個(gè)商品存在顯示的正向行為(比如瀏覽、收藏、分享等)時(shí),根據(jù)這個(gè)商品的屬性,可為用戶推薦相似商品。
熱度統(tǒng)計(jì)模型根據(jù)平臺(tái)一段時(shí)間內(nèi)全部用戶行為,統(tǒng)計(jì)類目及商品熱度(瀏覽量、購(gòu)買量),選取最熱門的100個(gè)類目,每個(gè)類目下選擇最熱門的100個(gè)商品。當(dāng)一個(gè)新用戶進(jìn)入平臺(tái)后,由于缺少該用戶行為,所以難以捕捉到用戶興趣,可以嘗試為其推薦熱門類目商品。
相關(guān)商品模型以商品類目和商品標(biāo)題信息來(lái)計(jì)算相關(guān)商品集合。相關(guān)商品指具有一定相關(guān)性的不同商品,比如同品牌下的不同類型商品、在類似場(chǎng)景下使用的不同商品等。當(dāng)用戶已購(gòu)買了某一類商品,短期內(nèi)不可能再次購(gòu)買時(shí),推送相關(guān)商品會(huì)更加合適。
融合層包括用戶類目偏好權(quán)重計(jì)算、精排兩個(gè)部分。
用戶類目偏好權(quán)重計(jì)算根據(jù)用戶的社會(huì)統(tǒng)計(jì)學(xué)信息(性別和年齡)和用戶的歷史行為來(lái)計(jì)算用戶對(duì)各商品類目的偏好程度,以權(quán)重來(lái)表示。不推薦的類目權(quán)重為0,最優(yōu)先推薦的類目權(quán)重為2。
精排部分使用精排模型,綜合用戶對(duì)商品類目偏好權(quán)重,對(duì)從模型層的4個(gè)召回源召回候選商品,進(jìn)行重新排序,選取前20個(gè)作為最終推薦結(jié)果推送給應(yīng)用層展示。
應(yīng)用層包括用戶行為反饋埋點(diǎn)、推薦商品展示以及推薦結(jié)果評(píng)價(jià)指標(biāo)計(jì)算。
用戶行為反饋埋點(diǎn)用于記錄用戶對(duì)推薦商品的反饋行為,包括前文中提到的正向和負(fù)向行為。這些行為數(shù)據(jù)通過Spark Streaming流式計(jì)算實(shí)時(shí)寫入HBase和Hive。
推薦商品展示向用戶展示實(shí)時(shí)商品推薦結(jié)果。
推薦結(jié)果評(píng)價(jià)指標(biāo)計(jì)算主要為推薦商品曝光點(diǎn)擊通過率CTR。CTR越高說(shuō)明用戶對(duì)推薦的商品感興趣的可能性越大。
本系統(tǒng)的關(guān)鍵技術(shù)點(diǎn)為模型層和融合層的算法實(shí)現(xiàn),這里對(duì)模型層中的協(xié)同過濾模型、相似商品模型、相關(guān)商品模型以及融合層中的用戶類目偏好權(quán)重計(jì)算、精排進(jìn)行詳細(xì)論述。
2.1.1 協(xié)同過濾模型
協(xié)同過濾是推薦系統(tǒng)最為流行的算法之一,簡(jiǎn)單來(lái)說(shuō)是利用某興趣相投、擁有共同經(jīng)驗(yàn)之群體的喜好來(lái)推薦用戶感興趣的信息,個(gè)人通過合作的機(jī)制給予信息相當(dāng)程度地回應(yīng)(如評(píng)分)并記錄下來(lái)以達(dá)到過濾的目的,進(jìn)而幫助別人篩選信息。
交替最小二乘法ALS(Alternative Least Square)算法是一種基于隱語(yǔ)義模型的協(xié)同過濾推薦,其核心思想是對(duì)稀疏的用戶-物品評(píng)分矩陣進(jìn)行模型分解。
在這種方法中,一個(gè)U×I的用戶-物品評(píng)分矩陣R(矩陣秩為n)可近似表示為PQT,其中P是一個(gè)和基于鄰域的協(xié)同過濾類似,對(duì)用戶-物品評(píng)分矩陣分解,可看作在U×k用戶因子矩陣,Q是一個(gè)k×I物品因子矩陣。這樣矩陣P的第u行表示用戶u在向量空間k上的映射向量。同樣矩陣Q的第j行表示物品j在向量空間k上的映射向量。
這里向量空間k可以解釋成物品集合存在k個(gè)類別,每個(gè)物品屬于k個(gè)類別的評(píng)分就是矩陣Q的第j行,每個(gè)用戶對(duì)k個(gè)類別的興趣評(píng)分就是矩陣P的第u行。
用戶和商品的特征向量間的內(nèi)積可看作用戶對(duì)商品的感興趣程度,即用戶對(duì)物品的評(píng)分,那么就可以依據(jù)此評(píng)分來(lái)為用戶推薦物品。主要思路如下:
(1)針對(duì)每個(gè)用戶,計(jì)算用戶特征向量和所有商品特征向量?jī)?nèi)積。
(2)將上一步驟的計(jì)算結(jié)果進(jìn)行排序。
(3)返回分值最大的前N個(gè)商品,作為當(dāng)前用戶的協(xié)同過濾推薦結(jié)果。
2.1.2 相似商品模型
ALS算法獲得商品的特征向量,而兩個(gè)商品特征向量的內(nèi)積可以看作兩個(gè)商品的相似度。

式中,p和q為商品的特征向量。
任意兩個(gè)商品間相似度都可以由公式計(jì)算得到,商品與商品之間的相似度在一段時(shí)間內(nèi)基本是固定值。
2.1.3 相關(guān)商品模型
經(jīng)過總結(jié),相關(guān)商品的定義為標(biāo)題里包含多個(gè)相同的特定詞語(yǔ),且不屬于同一類目的商品。例如商品A的類目為口紅,標(biāo)題為“迪奧烈艷藍(lán)金唇啞光999口紅經(jīng)典正紅唇膏”,商品B的類目為香水,標(biāo)題為“迪奧小姐花漾淡香氛女士淡香水”,商品A和B不屬于同類商品,但是標(biāo)題中包含“迪奧”特定詞語(yǔ),可看作同品牌的相關(guān)商品。
相關(guān)商品模型計(jì)算需要進(jìn)行以下步驟:
(1)獲取商品標(biāo)題中的特定詞語(yǔ)。對(duì)所有商品標(biāo)題進(jìn)行中文分詞,統(tǒng)計(jì)各分詞出現(xiàn)的總次數(shù)以及在各商品類目中出現(xiàn)的次數(shù),保留出現(xiàn)總次數(shù)大于20,且最多在5個(gè)類目下出現(xiàn)的分詞作為特定分詞。
過濾掉標(biāo)題中不含有特定分詞的商品。
(2)對(duì)于某個(gè)商品,在其余屬于不同類目的商品中,按照包含相同特定詞語(yǔ)數(shù)多少倒排,取前20個(gè)作為該商品的相關(guān)商品。
2.2.1 類目偏好權(quán)重計(jì)算
類目偏好權(quán)重計(jì)算基于用戶的社會(huì)統(tǒng)計(jì)學(xué)信息(性別和年齡)和用戶的歷史行為。
用戶的年齡、性別作為默認(rèn)的過濾條件,在用戶無(wú)正向行為情況下,過濾掉不合適推薦的目錄。例如男士刮胡刀一般不適合推薦給女性用戶,對(duì)于女性用戶來(lái)說(shuō),男士刮胡刀類目權(quán)重默認(rèn)為0,即不推薦展示;但是如果某位女性用戶主動(dòng)瀏覽、收藏過男士刮胡刀,則男士刮胡刀類目對(duì)于該用戶權(quán)重大于0(具體值由該用戶的歷史行為序列決定),可進(jìn)行展示。
基于用戶的歷史行為的實(shí)時(shí)類目權(quán)重計(jì)算過程:
(1)從HBase中實(shí)時(shí)獲取用戶最近30天的購(gòu)買行為、最近15天的瀏覽、收藏、分享行為以及最近7天內(nèi)的曝光不點(diǎn)擊、不喜歡行為。
(2)獲取上述所有行為涉及商品的類目。
(3)對(duì)每一種行為涉及的商品類目進(jìn)行打分,最近30天內(nèi)購(gòu)買行為打-2分,最近15天正向行為打1分,最近7天的負(fù)向行為打-5分。
(4)對(duì)上述類目的打分進(jìn)行合并計(jì)算,得到用戶對(duì)歷史行為涉及類目的偏好權(quán)重,并縮放至(0,1)之間。
(5)用戶行為未涉及的類目,如果為社會(huì)統(tǒng)計(jì)學(xué)信息過濾的類目,則權(quán)重為0,否則權(quán)重為0.5。
2.2.2精排
精排部分中的精排模型采用邏輯回歸LR(Logistic Regression)算法,計(jì)算用戶瀏覽商品的可能性。該算法是機(jī)器學(xué)習(xí)中的一種分類模型,由于算法的簡(jiǎn)單和高效,在實(shí)際中應(yīng)用非常廣泛。邏輯回歸模型的思想來(lái)源于線性回歸,為了解決線性回歸的量綱敏感問題,邏輯回歸在線性回歸的基礎(chǔ)上套用了一個(gè)Logistic函數(shù),從而將線性回歸的結(jié)果映射為(0,1)上的概率值。概率值越大,則該樣本為正樣本(用戶瀏覽該商品)的可能性越大。
精排模型樣本為Hive中的用戶歷史行為,正樣本為商品曝光且用戶瀏覽,負(fù)樣本為商品曝光且用戶未瀏覽,樣本特征包括用戶社會(huì)統(tǒng)計(jì)學(xué)信息、商品類目、商品價(jià)格、時(shí)間等。
獲得召回的候選商品及用戶信息之后,使用精排模型可計(jì)算用戶瀏覽商品的概率。根據(jù)用戶類目偏好權(quán)重,對(duì)用戶瀏覽商品概率進(jìn)行修正。對(duì)候選商品以修正后的結(jié)果按大小倒排,取前20作為最終推薦結(jié)果展示給用戶。
這里使用用戶類目偏好權(quán)重對(duì)精排模型修正的原因是精排模型體現(xiàn)的是用戶中長(zhǎng)期的興趣,而用戶類目偏好權(quán)重計(jì)算基于用戶短期行為,體現(xiàn)了用戶實(shí)時(shí)的興趣。
本系統(tǒng)設(shè)計(jì)開發(fā)完成之后在某移動(dòng)電商平臺(tái)首頁(yè)為你推薦tab頁(yè)上線,如圖2所示。

圖2 推薦商品展示
經(jīng)過線上A/B對(duì)比測(cè)試,本推薦系統(tǒng)與人工配置推薦商品曝光點(diǎn)擊率指標(biāo)CTR的對(duì)比結(jié)果如圖3所示。

圖3 推薦系統(tǒng)與人工配置CTR對(duì)比
本文設(shè)計(jì)并開發(fā)了電商平臺(tái)基于用戶歷史行為的個(gè)性化實(shí)時(shí)推薦系統(tǒng)。采用大數(shù)據(jù)、云計(jì)算、人工智能技術(shù),實(shí)現(xiàn)了用戶行為的實(shí)時(shí)采集、用戶興趣偏好的實(shí)時(shí)計(jì)算以及商品推薦結(jié)果的實(shí)時(shí)更新。最終線上A/B對(duì)比測(cè)試表明,電商平臺(tái)中用戶正向和負(fù)向行為能夠明顯地表達(dá)出用戶的興趣偏好,實(shí)時(shí)獲取用戶行為,并融入推薦系統(tǒng),根據(jù)用戶歷史行為進(jìn)行個(gè)性化實(shí)時(shí)推薦,能夠取得較好的推薦效果。