尚夢(mèng)瑩 白宗 侯珂
(鄭州工業(yè)應(yīng)用技術(shù)學(xué)院 河南省新鄭市 451100)
本研究提出的個(gè)性化推薦系統(tǒng)設(shè)計(jì)基于搭建大數(shù)據(jù)平臺(tái)所需的Hadoop相關(guān)技術(shù)組件。Hadoopr分布式結(jié)構(gòu)可以實(shí)現(xiàn)多臺(tái)服務(wù)器同步工作,存儲(chǔ)同步,能夠滿足超大量數(shù)據(jù)分析的需求,它的出現(xiàn)實(shí)現(xiàn)了大規(guī)模的廉價(jià)分布式集群,因此近年來(lái)Hadoop逐漸成為最受歡迎的開(kāi)源分布式框架。Hadoop組件類(lèi)型包括:HDFS,其具有分布式存儲(chǔ)功能,是處于Hadoop最底層的系統(tǒng)根基,主要通過(guò)分塊化處理實(shí)現(xiàn)分布式的單個(gè)大文件的存儲(chǔ),并具備多重備份的功能,最大程度上保證了原始文件的安全性。Hive,具有分布式結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)功能,其配置相對(duì)簡(jiǎn)單,傳統(tǒng)結(jié)構(gòu)化SQL數(shù)據(jù)大部分操作該組件也都支持,采用元數(shù)據(jù)即可,Hive組件主要通過(guò)HiveSQL語(yǔ)句關(guān)聯(lián)對(duì)應(yīng)文件,無(wú)需真正存儲(chǔ)數(shù)據(jù),再用特定方式讀取HDFS中的文件,其可在多個(gè)分布式節(jié)點(diǎn)中并行查詢數(shù)據(jù),無(wú)需開(kāi)發(fā)額外的代碼。Kafka,支持超高的吞吐量,是Hadoop平臺(tái)中的消息傳遞組件,在個(gè)性化推薦系統(tǒng)中主要通過(guò)該組件實(shí)現(xiàn)用戶購(gòu)買(mǎi)、瀏覽等多種操作消息流的接收,通過(guò)日志分發(fā)、聚合等功能實(shí)現(xiàn)高并發(fā)海量消息流的處理,保證系統(tǒng)能夠及時(shí)處理所有數(shù)據(jù)信息;Kafka中包含隊(duì)列模式、發(fā)布與訂閱模式兩種,本研究中采用一個(gè)消息由一個(gè)人發(fā)出且只有一個(gè)人接收的隊(duì)列模式。Spark,是Hadoop中基于內(nèi)存計(jì)算的大型內(nèi)存分布式計(jì)算組件,其與MapReduce的思想一脈相承,但二者的區(qū)別在于后者需要多次讀寫(xiě)硬盤(pán),處理速度存在限制,而Spark在內(nèi)存中進(jìn)行全部的迭代運(yùn)算,Spark的運(yùn)算函數(shù)分別對(duì)不同的模塊進(jìn)行運(yùn)算,每個(gè)部分大小可靈活調(diào)整,且數(shù)據(jù)可容錯(cuò),大大提高了處理效率。在實(shí)際的系統(tǒng)設(shè)計(jì)中,可根據(jù)業(yè)務(wù)需求選擇不同的組件進(jìn)行搭配,以保證系統(tǒng)良好的穩(wěn)定性與可靠性。
電商平臺(tái)的推薦系統(tǒng)顧名思義就是向電商平臺(tái)的用戶推薦商品信息,通過(guò)數(shù)據(jù)分析確定消費(fèi)者的購(gòu)買(mǎi)意向商品,再將其與其它用戶協(xié)同過(guò)濾,分析不同用戶之間的關(guān)聯(lián)性,最終確定電商平臺(tái)用戶的消費(fèi)興趣,向其推薦相似的商品。要實(shí)現(xiàn)這一功能需求,系統(tǒng)就要獲取推薦算法需要的原始數(shù)據(jù),包括日志數(shù)據(jù)、商品數(shù)據(jù)及用戶數(shù)據(jù)等,將這些數(shù)據(jù)過(guò)濾后構(gòu)建個(gè)性化的推薦模型。用戶登錄系統(tǒng)后推薦系統(tǒng)會(huì)收到系統(tǒng)所發(fā)送的推薦列表請(qǐng)求,再根據(jù)每個(gè)消費(fèi)者的喜好構(gòu)建推薦列表。其具體流程如下:推薦系統(tǒng)會(huì)先獲取消費(fèi)者的購(gòu)買(mǎi)列表、商品列表等,分析其購(gòu)買(mǎi)日志,對(duì)商品進(jìn)行標(biāo)簽化、分類(lèi)化處理,再通過(guò)協(xié)同過(guò)濾算法建立矩陣,將分析結(jié)果存儲(chǔ)于數(shù)據(jù)庫(kù)中;分析用戶ID信息,篩選模型數(shù)據(jù)后即可生成個(gè)性化推薦列表,最后再將推薦列表發(fā)送給用戶端,用戶即可在終端看到推薦信息。由此可見(jiàn),個(gè)性化推薦系統(tǒng)從某種意義上來(lái)講屬于電商平臺(tái)的子系統(tǒng),因?yàn)槠湫枰獜碾娚唐脚_(tái)獲取相關(guān)的信息,包括用戶信息、商品信息及用戶行為信息等,這種特性使得推薦系統(tǒng)無(wú)法獨(dú)立于電商平臺(tái)單獨(dú)存在。推薦系統(tǒng)與電商平臺(tái)進(jìn)地交互,通過(guò)特定的方式向用戶展示商品信息,信息展示盡量詳細(xì),包括基本信息、縮略圖、簡(jiǎn)介等,以提高用戶的信任度。此外,通過(guò)推薦系統(tǒng)還能獲得用戶對(duì)推薦結(jié)果的反饋信息。
基于上述需求,本研究提出的推薦系統(tǒng)功能模塊包括數(shù)據(jù)處理、個(gè)性化推薦算法、推薦結(jié)果處理、推薦請(qǐng)求處理、商品管理及用戶管理等六大模塊。其中數(shù)據(jù)處理的主要作用是采集、存儲(chǔ)、計(jì)算由電商平臺(tái)處獲取的原始數(shù)據(jù);個(gè)性化推薦算法模塊主要采用基于用戶的協(xié)同過(guò)濾算法構(gòu)建個(gè)性化推薦列表;推薦結(jié)果處理模塊包括過(guò)濾子模塊與排名子模塊兩個(gè)部分,主要處理推薦列表,將用戶已購(gòu)買(mǎi)過(guò)的商品信息過(guò)濾掉,并針對(duì)需要推薦的商品進(jìn)行排名;推薦請(qǐng)求處理模塊在獲得前端推薦列表的請(qǐng)求后,從數(shù)據(jù)庫(kù)中獲取對(duì)應(yīng)的推薦列表并展示在客戶端;用戶管理模塊及商品管理模塊主要對(duì)用戶信息及商品信息進(jìn)行管理、維護(hù)。
數(shù)據(jù)處理模塊的主要作用是采集、處理并存儲(chǔ)用戶行為日志,為后續(xù)個(gè)性化算法模塊準(zhǔn)備訓(xùn)練數(shù)據(jù)。電商平臺(tái)中包含了大量的用戶信息,可以在采集到用戶的原始日志后將其存儲(chǔ)于HDFS文件系統(tǒng),再利用Hadoop的計(jì)算框架Map Reduce處理日志文件,數(shù)據(jù)處理完成后存儲(chǔ)于HDFS中。在系統(tǒng)完成用戶日志的采集后,利用hive或者編寫(xiě)MapReduce程序?qū)τ脩粜袨槿罩具M(jìn)行ETL過(guò)程 ,將將其存儲(chǔ)于HDFS。除了要對(duì)數(shù)據(jù)進(jìn)行ETL外,還要對(duì)數(shù)據(jù)進(jìn)行過(guò)濾、清洗,最后再按照個(gè)性化推薦算法模塊對(duì)數(shù)據(jù)格式的需求進(jìn)行處理。數(shù)據(jù)清洗主要是清除臨時(shí)文件的痕跡,記錄錯(cuò)誤的日志,并備份請(qǐng)求界面。數(shù)據(jù)清洗時(shí)先輸入原始日志,系統(tǒng)判定日志數(shù)據(jù)庫(kù)中是否有未處理的數(shù)據(jù)記錄,如果有則讀出一條日志記錄并進(jìn)行處理,將不需要的日志類(lèi)型過(guò)濾掉,再將處理好的日志存儲(chǔ)到數(shù)據(jù)庫(kù)中。針對(duì)系統(tǒng)對(duì)日志采集的需求需要實(shí)時(shí)采集日志文件,可以通過(guò)Linux下命令tail命令進(jìn)行實(shí)時(shí)監(jiān)聽(tīng),以實(shí)時(shí)發(fā)現(xiàn)新追加日志;日志文件通過(guò)日志采集模塊直接寫(xiě)入HDFS文件系統(tǒng),寫(xiě)入的過(guò)程需要支持SequenceFile、DataStream、ComperessedStream等三類(lèi)文件,并通過(guò)Elastics earch建立索引方式格式化存儲(chǔ)索引文件。
在整個(gè)個(gè)性化推薦系統(tǒng)中個(gè)性化推薦算法是核心模塊,其主要作用是通過(guò)協(xié)同過(guò)濾算法進(jìn)行用戶建模及商品建模,主要包括User-based協(xié)同過(guò)濾算法及Item-based協(xié)同過(guò)濾算法,前者主要將與目標(biāo)用戶興趣偏好相同或相近的其他用戶感興趣的商品信息推薦給目標(biāo)用戶;后者則是將與目標(biāo)用戶關(guān)注過(guò)的、相似度高的其它信息推薦給用戶。協(xié)同過(guò)濾算法包括建構(gòu)用戶、尋找用戶、預(yù)測(cè)評(píng)分、生成推薦列表等四個(gè)步驟,建構(gòu)用戶時(shí)形成項(xiàng)目評(píng)分矩陣,尋找用戶時(shí)采用余弦相似度、皮爾森相關(guān)相似度等方法確定最近鄰居,然后采用平均加權(quán)法計(jì)算目標(biāo)用戶對(duì)未評(píng)分項(xiàng)目的預(yù)測(cè)評(píng)分,最后是生成推薦列表,統(tǒng)計(jì)目標(biāo)用戶對(duì)不同項(xiàng)目的預(yù)測(cè)值Recommend_Value,選擇最前排N個(gè)項(xiàng)目組成的Top-N推薦集合。Item-based協(xié)同過(guò)濾算法包括三個(gè)步驟,一是從文件中讀取項(xiàng)目信息,二是采用皮爾森相關(guān)相似度計(jì)算項(xiàng)目之間的相似度,三是計(jì)算出相似度后查找K個(gè)鄰居。
通過(guò)上述兩個(gè)步驟獲取推薦列表后,要根據(jù)用戶需求將一些不符合需求的信息過(guò)濾掉,包括:用戶已經(jīng)產(chǎn)生過(guò)行為的物品,比如已經(jīng)購(gòu)買(mǎi)過(guò)的物品,以保證推薦結(jié)果的新鮮度;候選商品以外的商品;質(zhì)量很差的物品,電商平臺(tái)通常都有商品評(píng)價(jià)機(jī)制,推薦列表要將大部分用戶評(píng)價(jià)很差的物品自動(dòng)過(guò)濾掉,過(guò)濾標(biāo)準(zhǔn)以商品的歷史評(píng)分為準(zhǔn),比如將商品歷史評(píng)價(jià)平均分低于3分的信息過(guò)濾掉,以改善用戶體驗(yàn),提高用戶滿意度。
項(xiàng)目排名可根據(jù)新穎性、物品多樣性、時(shí)間多樣性等標(biāo)準(zhǔn)進(jìn)行排名。其中進(jìn)行新穎性排名主要是向用戶推薦存在長(zhǎng)尾中的物品。此處需要注意一點(diǎn),雖然過(guò)濾模塊將推薦列表中用戶有過(guò)行為的項(xiàng)目信息過(guò)濾掉,但是用戶在電商平臺(tái)對(duì)某個(gè)商品沒(méi)有行為,不能表示用戶沒(méi)有通過(guò)其它渠道了解過(guò)這個(gè)商品,當(dāng)然,要明確知道用戶是否已經(jīng)了解過(guò)沒(méi)有行為的商品十分困難,因此可以對(duì)推薦結(jié)果中熱門(mén)的物品進(jìn)行降權(quán)處理,以保證推薦結(jié)果的新穎性。個(gè)性化的推薦系統(tǒng)不僅要推薦新穎的商品,還要推薦多樣的商品,以覆蓋更多的用戶興趣,當(dāng)然,多樣性也要以照顧用戶體驗(yàn)為準(zhǔn),不能為了提高商品推薦的多樣性而忽略了用戶體驗(yàn)。時(shí)間多樣性主要是為了避免用戶在不同的時(shí)段登陸系統(tǒng)看到相同的推薦結(jié)果,因此用戶有新行為時(shí)要對(duì)推薦結(jié)果進(jìn)行實(shí)時(shí)調(diào)整,即使用戶沒(méi)有發(fā)生新行為也要每天調(diào)整推薦結(jié)果。
除上述推薦結(jié)果處理策略外,用戶反饋也是個(gè)性化推薦系統(tǒng)中重要的一環(huán),用戶會(huì)與推薦結(jié)果產(chǎn)生交互行為,分析交互日志可準(zhǔn)確預(yù)測(cè)出用戶對(duì)推薦結(jié)果的興趣度,當(dāng)然,個(gè)性化推薦系統(tǒng)的用戶反饋模塊與電商平臺(tái)中的搜索引擎所用的反饋是有所不同的,推薦系統(tǒng)中的用戶反饋主要是對(duì)推薦引擎推薦結(jié)果偏好的反饋。
推薦請(qǐng)求處理模塊在接收到前端的傳入請(qǐng)求后,判斷傳入?yún)?shù)的格式,在判斷參數(shù)格式是正確后即可將請(qǐng)求類(lèi)型準(zhǔn)確識(shí)別出來(lái),反之參數(shù)格式不正確則不予識(shí)別;系統(tǒng)在獲取請(qǐng)求類(lèi)型后,再采用不同的推薦算法向用戶推薦結(jié)果,比如基于用戶的推薦結(jié)果,或者基于商品的推薦結(jié)果等,將推薦結(jié)果融入場(chǎng)景中,最終向用戶端展現(xiàn)融合的推薦結(jié)果。推薦請(qǐng)求處理模塊的推薦列表調(diào)用接口通常采用http接口,通過(guò)包含了post、get方法的HttpUti1.java來(lái)實(shí)現(xiàn)。
商品管理模塊的主要作用是管理商品信息,主要由系統(tǒng)管理員進(jìn)行商品信息的查詢、庫(kù)存數(shù)據(jù)維護(hù)、商品的上架及下架等;用戶管理的主要作用是維護(hù)用戶信息。電商平臺(tái)的用戶通過(guò)賬號(hào)申請(qǐng)界面申請(qǐng)用戶名及密碼,登錄賬號(hào)后即可進(jìn)行商品的添加、修改、刪除及查詢等一系列操作。
總之,隨著電子商務(wù)的不斷發(fā)展,無(wú)論是商品數(shù)量還是用戶數(shù)量都越來(lái)越多,面對(duì)數(shù)以萬(wàn)計(jì)的數(shù)據(jù)信息,個(gè)性化的推薦系統(tǒng)就成為提高消費(fèi)者購(gòu)買(mǎi)率、提升用戶粘度的重要措施。數(shù)據(jù)的存儲(chǔ)與利用使得數(shù)據(jù)變現(xiàn)為電商平臺(tái)企業(yè)發(fā)展的關(guān)鍵,面對(duì)海量的數(shù)據(jù),電商平臺(tái)需要通過(guò)個(gè)性化的推薦系統(tǒng)幫助消費(fèi)者快速檢索到自己需要的商品,而電商平臺(tái)模式的轉(zhuǎn)變,使得電商平臺(tái)必須通過(guò)好的服務(wù)手段改善用戶體驗(yàn),才能留住客戶,產(chǎn)生更大的經(jīng)濟(jì)價(jià)值。因此,研究個(gè)性化的推薦系統(tǒng)具有重要的現(xiàn)實(shí)意義。本研究提出的基于Hadoop平臺(tái)的電商平臺(tái)個(gè)性化推薦系統(tǒng),可以提高用戶檢索商品的精準(zhǔn)度,改善用戶體驗(yàn),為電商平臺(tái)帶來(lái)更大的經(jīng)濟(jì)效益。