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