谷廣兵 顧佩佩
摘? 要:個(gè)性化推薦系統(tǒng)作為人工智能一個(gè)落地場(chǎng)景,在社交平臺(tái)、電商、生活服務(wù)等領(lǐng)域有著廣泛的應(yīng)用。為了把優(yōu)選的商品提供給有需要的客戶,對(duì)用戶行為進(jìn)行數(shù)據(jù)采集、數(shù)據(jù)清洗與存儲(chǔ)、用戶物品推薦建模、模型評(píng)估等內(nèi)容進(jìn)行了研究。數(shù)據(jù)采集通過(guò)客戶端頁(yè)面埋點(diǎn)技術(shù)來(lái)記錄用戶瀏覽、點(diǎn)擊、關(guān)注等行為以及頁(yè)面停留時(shí)長(zhǎng)等數(shù)據(jù),通過(guò)flume、kafka、hive、spark等大數(shù)據(jù)相關(guān)組件與技術(shù)完成數(shù)據(jù)采集、ETL相關(guān)操作,將用戶評(píng)分表、物物余弦相似度等數(shù)據(jù)通過(guò)ALS、item-based組合召回技術(shù),以及LR排序技術(shù)生成TOP-N推薦列表,最終經(jīng)過(guò)AB測(cè)試,完成最優(yōu)迭代方案版本選取。
關(guān)鍵詞:推薦系統(tǒng);大數(shù)據(jù)技術(shù);召回;排序;ALS
中圖分類號(hào):TP391.3;TP311.1? 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2023)01-0026-04
Research and Implementation of Recommendation System Based on Big Data Platform
GU Guangbing1, GU Peipei2
(1.Jiaxing Vocational & Technical College, Jiaxing? 314036, China; 2.Lishui Bureau of Agriculture and Rural Affairs, Lishui? 323000, China)
Abstract: As a landing scenario of artificial intelligence, personalized recommendation system is widely used in social platforms, E-commerce, life services and other fields. In order to provide the preferred products to the customers in need, the data collection, data cleaning and storage, user item recommendation modeling, model evaluation and other contents of user behavior are studied. Data collection records user browsing, clicking, following and other behaviors, as well as page dwell time and other data through the embedded point technology on the client page. Data collection and ETL related operations are completed through flume, kafka, hive, spark and other big data related components and technologies. Data such as user scoring table and cosine similarity of objects are generated into TOP-N recommendation list through the combined recall technology of ALS and item-based, as well as LR sorting technology, and finally tested by AB, complete the selection of the optimal iteration scheme version.
Keywords: recommendation system; big data technology; recall; sort; ALS
0? 引? 言
推薦系統(tǒng)是解決大規(guī)模用戶場(chǎng)景下的大量信息的精確發(fā)送問(wèn)題,通過(guò)離線和實(shí)時(shí)收集用戶行為數(shù)據(jù),建立用戶行為模型,進(jìn)行個(gè)性化推薦,并且不斷評(píng)估推薦成效。推薦系統(tǒng)在社會(huì)諸多領(lǐng)域均有應(yīng)用,推薦系統(tǒng)讓軟件更懂用戶,提升用戶的智能化體驗(yàn)[1]。
在本項(xiàng)目研究過(guò)程中,將用戶client端請(qǐng)求日志數(shù)據(jù)做為flume組件的source層,hdfs作為sink層完成數(shù)倉(cāng)ODS層的構(gòu)建,使用sparksql技術(shù)將用戶行為特征值清洗,構(gòu)建用戶行為評(píng)分矩陣表,使用召回、排序算法進(jìn)行模型訓(xùn)練并存儲(chǔ),最終借助于AB測(cè)試臺(tái)完成項(xiàng)目的方案選取,總流程如圖1所示。
1? 數(shù)據(jù)源
數(shù)據(jù)源是推薦系統(tǒng)中最為關(guān)鍵的元素,因?yàn)樗惴ǘ际枪_(kāi)的,而數(shù)據(jù)呈現(xiàn)隱秘性和私有性。對(duì)于推薦系統(tǒng)而言,數(shù)據(jù)又分為用戶數(shù)據(jù)和物品數(shù)據(jù)。本文主要針對(duì)用戶數(shù)據(jù)中的用戶行為數(shù)據(jù)進(jìn)行研究,該部分?jǐn)?shù)據(jù)主要指的是購(gòu)買、收藏、瀏覽、關(guān)注等顯式反饋數(shù)據(jù)和頁(yè)面停留時(shí)長(zhǎng)、跳轉(zhuǎn)連接(refer)、點(diǎn)擊等隱式反饋數(shù)據(jù)。
為了獲取上述用戶行為數(shù)據(jù),本研究采用目前業(yè)內(nèi)普遍選用的數(shù)據(jù)埋點(diǎn)技術(shù)進(jìn)行收集。埋點(diǎn)技術(shù)在電商類領(lǐng)域運(yùn)用較為成熟,它方便企業(yè)產(chǎn)品經(jīng)理、運(yùn)營(yíng)部門統(tǒng)計(jì)分析復(fù)雜的用戶數(shù)據(jù)從而進(jìn)行相關(guān)經(jīng)營(yíng)決策。目前行業(yè)內(nèi)有神策分析等第三方統(tǒng)計(jì)平臺(tái),雖能夠針對(duì)PV、UV數(shù)據(jù)指標(biāo)進(jìn)行統(tǒng)計(jì),但缺乏定制化。本研究采取的是通過(guò)代碼埋點(diǎn)的方式以定制化的方式完成用戶行為數(shù)據(jù)采集。
埋點(diǎn)行為發(fā)生在客戶端,可以是Web端、也可以是H5、APP、wxapp等終端。當(dāng)用戶發(fā)生瀏覽行為或者點(diǎn)擊行為時(shí)候,通過(guò)客戶端腳本Javascript程序發(fā)送head請(qǐng)求,將用戶行為數(shù)據(jù)以json的格式封裝在請(qǐng)求頭中,如圖2所示。在實(shí)際應(yīng)用中,將客戶端頁(yè)面部署在nginx服務(wù)器上,繼而客戶端行為觸發(fā)http請(qǐng)求,并將所攜帶埋點(diǎn)對(duì)應(yīng)數(shù)據(jù)將寫入nginx日志文件中[2]。
2? 數(shù)據(jù)倉(cāng)庫(kù)與數(shù)據(jù)清洗
2.1? 數(shù)據(jù)采集
當(dāng)用戶發(fā)生點(diǎn)擊、瀏覽、收藏等用戶行為時(shí),通過(guò)埋點(diǎn)技術(shù),系統(tǒng)將用該部分?jǐn)?shù)據(jù)記錄在nginx web服務(wù)器的日志文件access.log中。通過(guò)flume組件,將用戶行為數(shù)據(jù)采集到hadoop集群中的HDFS中,本研究中,采取兩個(gè)節(jié)點(diǎn)的flume組件,完成數(shù)據(jù)采集[3]。相關(guān)節(jié)點(diǎn)以及對(duì)應(yīng)的source、channel、sink層如圖3所示。
2.2? 數(shù)倉(cāng)建設(shè)
本研究中,通過(guò)建設(shè)三層數(shù)據(jù)倉(cāng)庫(kù),最終生成用戶評(píng)分矩陣表,三層數(shù)據(jù)倉(cāng)庫(kù)分別為ODS層,存儲(chǔ)用戶原始行為數(shù)據(jù);DWD層,將用戶原始行為進(jìn)行歸一后按權(quán)重、時(shí)間衰減進(jìn)行計(jì)算后存儲(chǔ);DWS層,將用戶行為評(píng)分進(jìn)行Sigmoid標(biāo)準(zhǔn)化生成用戶物品評(píng)分矩陣。這三層數(shù)倉(cāng)的建設(shè)采用hive組件完成,在數(shù)倉(cāng)建表過(guò)程中,采用hive外部分區(qū)表,分別以年、月、日、時(shí)做為分區(qū)字段,采用sparksql技術(shù)進(jìn)行數(shù)據(jù)的清洗、聚合等操作[4]。三層數(shù)倉(cāng)建設(shè)如表1所示。
3? 系統(tǒng)建模
3.1? 基于系統(tǒng)過(guò)濾的召回與排序
一般推薦系統(tǒng)主要分為召回、排序兩階段,召回是對(duì)數(shù)據(jù)進(jìn)行初步篩選,得到候選集,也就是初始推薦列表;排序則采用排序模型對(duì)召回生成的候選集打分排序,最終生成針對(duì)某一用戶的推薦列表,本文采用的是基于協(xié)同過(guò)濾的召回、排序算法[5,6]。
3.2? 召回階段
召回要使用不同的方法、從不同的角度篩選出候選集、滿足推薦商品的多樣性以及保證候選集和用戶的匹配度。本研究采用ALS算法與基于物品的協(xié)同過(guò)濾這種混合式的召回算法生成候選集。
3.2.1? ALS算法實(shí)現(xiàn)
基于數(shù)倉(cāng)建設(shè)中的DWS層生成的用戶物品評(píng)分表,采用spark中所提供的sparkcore,spark MLlib技術(shù)完成ALS模型的訓(xùn)練。具體參數(shù)如表2所示。
在創(chuàng)建ALS模型過(guò)程中,設(shè)置最大迭代次數(shù)maxIter=10,通過(guò)rank(取值20,30),reg(取值0.1,0.05),alpha(取值2.0,3.0)三個(gè)參數(shù)共8種全排列組合訓(xùn)練模型,經(jīng)過(guò)對(duì)比rmse值獲取最優(yōu)模型[7,8],用此模型獲得的召回結(jié)果,存儲(chǔ)到HBASE中。
3.2.2? 基于物品的協(xié)同過(guò)濾
采用上述ALS算法獲取物品特征矩陣(model.itemFactors),通過(guò)余弦相似度計(jì)算,得到物品相似度矩陣。用戶物品打分矩陣(dws_user_item_rating)與該物品相似度矩陣相乘,得出用戶物品推薦列表,表格式如圖4所示。
3.2.3? 候選集的存儲(chǔ)
上述采用ALS算法與基于物品的協(xié)同過(guò)濾,在具體業(yè)務(wù)場(chǎng)景中,通過(guò)設(shè)置定時(shí)計(jì)劃任務(wù)來(lái)完成對(duì)前一天采集到的數(shù)據(jù)進(jìn)行計(jì)算。在研究中我們?cè)O(shè)置0:30進(jìn)行ALS算法數(shù)據(jù)計(jì)算,1:30實(shí)現(xiàn)基于物品協(xié)同過(guò)濾的數(shù)據(jù)計(jì)算。ALS與基于物品的協(xié)同過(guò)濾生成的候選集,以時(shí)間戳、用戶id組合做為rowkey,recall作為列簇,分別以兩種召回策略作為列名:als,item2item。將召回的結(jié)果存儲(chǔ)在HBASE的history_rs_recall表中,如圖5所示。最終將兩種召回策略的結(jié)果集取交集,即可獲得推薦列表。
3.3? 排序
通過(guò)上述召回步驟,已經(jīng)生了一個(gè)候選集或者稱之為推薦列表。但是用戶在實(shí)際瀏覽商品過(guò)程中,興趣度僅僅停留在前幾頁(yè)商品列表網(wǎng)頁(yè)?;诖耍枰獙?duì)召回階段生成的候選集做一個(gè)排序,排序依據(jù)用戶對(duì)候選集對(duì)應(yīng)商品點(diǎn)擊率的高低,從而篩選出用戶可能點(diǎn)擊概率高的商品推薦給用戶。本文采取基于邏輯回歸(LR)的排序方法,實(shí)現(xiàn)步驟具體如表3所示。
4? AB測(cè)試
AB測(cè)試是,在產(chǎn)品正式迭代發(fā)版之前,為同一個(gè)目標(biāo)制定兩個(gè)或者兩個(gè)以上可行方案,在保證流量(用戶)的控制特征不同,而其他特征相同的前提下,將流量(用戶)分為多組,不同組流量(用戶)會(huì)看到不同的推薦方案,根據(jù)用戶的真實(shí)行為數(shù)據(jù)反饋,統(tǒng)計(jì)不同分組方案得到的業(yè)務(wù)數(shù)據(jù),如留存率、點(diǎn)擊率、轉(zhuǎn)化率等,從而確定最優(yōu)推薦迭代版本,如圖6所示。本文基于spring boot+vue搭建了AB測(cè)試管理平臺(tái),主要有三個(gè)功能組成:“配置管理模塊”用于管理每個(gè)ab需求;“實(shí)時(shí)分流”模塊,根據(jù)用戶性別、設(shè)備等用戶信息進(jìn)行分流;“實(shí)時(shí)效果分析統(tǒng)計(jì)”將分流后程序點(diǎn)擊、瀏覽以echarts圖的形式進(jìn)行展示,如圖7所示。
5? 結(jié)? 論
推薦系統(tǒng)是人工智能領(lǐng)域一個(gè)重要的研究方向,有著巨大的應(yīng)用價(jià)值。本文以電商領(lǐng)域用戶行為原始日志數(shù)據(jù)作為數(shù)據(jù)源,通過(guò)數(shù)據(jù)清洗構(gòu)建用戶物品打分矩陣,通過(guò)召回與排序構(gòu)建了基于用戶的物品推薦列表,通過(guò)搭建AB實(shí)現(xiàn)管理平臺(tái),進(jìn)行AB實(shí)驗(yàn)實(shí)現(xiàn)推薦系統(tǒng)的擇優(yōu)迭代。隨著基于內(nèi)容的推薦系統(tǒng)、基于深度學(xué)習(xí)的推薦系統(tǒng)以及實(shí)時(shí)推薦系統(tǒng)研究,推薦系統(tǒng)將會(huì)更加廣泛應(yīng)用在社會(huì)其他領(lǐng)域并造福于社會(huì)。
參考文獻(xiàn):
[1] 顧軍林,劉瑋瑋,陳冠宇.基于Hadoop平臺(tái)的崗位推薦系統(tǒng)設(shè)計(jì) [J].現(xiàn)代電子技術(shù),2019,42(20):123-127.
[2] 秦道祥,路陽(yáng),張薺月,等.基于Spark技術(shù)的日志分析平臺(tái)設(shè)計(jì)與應(yīng)用 [J].中國(guó)教育信息化,2021(19):50-54.
[3] 李柯.基于Flume、Kafka的日志采集系統(tǒng)分析研究 [J].電子技術(shù)與軟件工程,2022(10):255-258.
[4] 程志強(qiáng).關(guān)于大數(shù)據(jù)時(shí)代的數(shù)據(jù)倉(cāng)庫(kù)建設(shè)研究 [J].長(zhǎng)江信息通信,2022,35(7):156-158.
[5] 李盼穎.基于協(xié)同過(guò)濾的個(gè)性化推薦算法 [D].張家口:河北建筑工程學(xué)院,2022.
[6] 崔麗莎.基于用戶特征和項(xiàng)目類型興趣的協(xié)同過(guò)濾推薦算法研究 [D].鄭州:河南財(cái)經(jīng)政法大學(xué),2022.
[7] 文雅.基于大數(shù)據(jù)的用戶個(gè)性化推薦策略研究 [D]. 北京:北京郵電大學(xué),2021.
[8] 周晶,劉丹,李慧超,等.考慮用戶興趣的個(gè)性化協(xié)同過(guò)濾推薦方法 [J].微型電腦應(yīng)用,2022,38(8):74-78.
作者簡(jiǎn)介:谷廣兵(1986—),男,漢族,河南舞陽(yáng)人,專任教師,講師,碩士,研究方向:大數(shù)據(jù)技術(shù)與應(yīng)用。
收稿日期:2022-10-24