高海超 常祎雯 楊文峰 馮學偉 鄧 哲 白 濤
(延安大學 數學與計算機科學學院,陜西 延安 716000)
當下正處于大數據時代,用戶在網絡中的各種操作都會留下數據,數據背后的價值性毋庸置疑。各行各業對挖掘數據價值的需求日益劇增。對于電商企業來說,用戶的點擊、分享、加購物車、收藏、購買等歷史數據可以對電商企業的發展和規劃起到極大地指導作用,能夠提高用戶黏度,增強用戶購物體驗,幫助企業實現更好的運營效果。
為了更好的利用數據背后的價值,可利用計算機對歷史數據進行分析。由于數據龐大,需要算力極高。可考慮采用分布式計算,以PC 機集群來對大數據進行處理,來彌補小型企業計算機性能低下的問題。同時采用分布式存儲,還能更好的對數據進行存儲及備份,提高系統容錯性。
為使用戶在購物時,能夠得到系統推薦的,更貼合用戶需求的商品。則需要對用戶的過往操作數據進行分析,通過歷史數據得出規律,并為用戶推薦合適的商品是大數據運營系統最重要的目的。本文以商品推薦為例,通過Hadoop 分布式大數據處理框架,對銷售數據以及用戶行為數據進行清洗及分析,同時還使用Spark 提供的機器學習庫中的多種算法來訓練模型,并通過模型計算得到推薦值。使得用戶在購物時,能夠從多種維度收到來自平臺的個性化推薦。以實現增強用戶的購物體驗,提高用戶黏度,進而增大平臺銷售量。
由于本項目需要根據大量歷史數據進行分析,才能得到更好的推薦結果,面對大規模數據,采用分布式的存儲是非常有必要的。Hadoop 提供的HDFS(Hadoop distributed file system)就是一個分布式文件系統,如圖1 所示。

圖1 HDFS 結構圖
將文件默認按128M分為多個block,進而存儲在多個Data Node 節點上,每個block 默認保存3 個備份。
數據清洗部分主要依賴于Hadoop 下的MapReduce 來進行,本項目編程語言使用Java,在開發過程中,可直接用Java 調用Hadoop 接口,覆寫map 和reduce 方法,根據實際數據及需求,來對數據進行清洗和補償。
在數據處理過程中,發現存在一些操作數據產生時間相同,分析是系統運行過程中被惡意訪問,或者存在刷點擊量的行為,而這些行為數據對實際數據分析毫無用處,故需要對其進行清除,這里考慮使用MapReduce 將完全相同數據只讀取其中一個,將其它的無用數據進行清除,以達到去重目的。
由于需要按地域區分用戶,并按地域進行分析,故要對IP地址進行補償。將一串IP 地址其視為256 進制數,然后將其轉為整型數,將其視為地址最大數,進而在0 和最大數中間隨機生成1 個數,再通過位運算,將其轉為IP 地址格式,即可得出隨機IP 地址。
根據用戶登陸與操作情況進行分析,設用戶操作分別為瀏覽、收藏、加購、付款四種類型,分別賦值1-4 分可得用戶評分向量。
活躍用戶記錄可利用位圖來實現,以1 作為登錄,0 作為登錄,以此來記錄用戶的具體登錄情況。以此方法,可以將一個月的數據合并為一條數據,這樣可以極大的減少數據的空間占用,同時實現對用戶活躍度的記錄。
基于用戶的協同過濾,通過不同用戶對物品的評分來評測用戶之間的相似性,基于用戶之間的相似性做出推薦,如圖2 所示。

圖2 對相似用戶的物品推薦
為實現以上算法,引入Co-occurrence Matrix(同現矩陣)與User Preference Vector(用戶評分向量),以同現矩陣與用戶評分向量相乘得到Recommended Vector(推薦向量)。最后按照排序高低對用戶進行推薦,如圖3 所示。

圖3 基于協同過濾的商品推薦算法示意圖
直接調用Spark 的Mllib 庫中的算法實現。將用戶對商品的評分矩陣分解為2 個矩陣分別設為X 與Y。

隨機生成X,Y,固定Y,使用公式3 更新Xu,固定X,使用公式(4)更新Yi,重復交替執行公式(3)和公式(4),直到均方根誤差RMSE 收斂。ALS 算法流程圖如圖4 所示。

圖4 ALS 算法流程圖
以HDFS 作為存儲系統,借助kafka 與flume 對數據進行采集,之后調用Spark 的Mllib,使用位圖、同現矩陣、ALS(交替最小二乘法)等算法實現了對數據進行處理與分析,并得到推薦結果。對提升用戶體驗與增強用戶黏性,做出了巨大的幫助。