高海超 常祎雯 楊文峰 馮學(xué)偉 鄧 哲 白 濤
(延安大學(xué) 數(shù)學(xué)與計算機科學(xué)學(xué)院,陜西 延安 716000)
當(dāng)下正處于大數(shù)據(jù)時代,用戶在網(wǎng)絡(luò)中的各種操作都會留下數(shù)據(jù),數(shù)據(jù)背后的價值性毋庸置疑。各行各業(yè)對挖掘數(shù)據(jù)價值的需求日益劇增。對于電商企業(yè)來說,用戶的點擊、分享、加購物車、收藏、購買等歷史數(shù)據(jù)可以對電商企業(yè)的發(fā)展和規(guī)劃起到極大地指導(dǎo)作用,能夠提高用戶黏度,增強用戶購物體驗,幫助企業(yè)實現(xiàn)更好的運營效果。
為了更好的利用數(shù)據(jù)背后的價值,可利用計算機對歷史數(shù)據(jù)進(jìn)行分析。由于數(shù)據(jù)龐大,需要算力極高??煽紤]采用分布式計算,以PC 機集群來對大數(shù)據(jù)進(jìn)行處理,來彌補小型企業(yè)計算機性能低下的問題。同時采用分布式存儲,還能更好的對數(shù)據(jù)進(jìn)行存儲及備份,提高系統(tǒng)容錯性。
為使用戶在購物時,能夠得到系統(tǒng)推薦的,更貼合用戶需求的商品。則需要對用戶的過往操作數(shù)據(jù)進(jìn)行分析,通過歷史數(shù)據(jù)得出規(guī)律,并為用戶推薦合適的商品是大數(shù)據(jù)運營系統(tǒng)最重要的目的。本文以商品推薦為例,通過Hadoop 分布式大數(shù)據(jù)處理框架,對銷售數(shù)據(jù)以及用戶行為數(shù)據(jù)進(jìn)行清洗及分析,同時還使用Spark 提供的機器學(xué)習(xí)庫中的多種算法來訓(xùn)練模型,并通過模型計算得到推薦值。使得用戶在購物時,能夠從多種維度收到來自平臺的個性化推薦。以實現(xiàn)增強用戶的購物體驗,提高用戶黏度,進(jìn)而增大平臺銷售量。
由于本項目需要根據(jù)大量歷史數(shù)據(jù)進(jìn)行分析,才能得到更好的推薦結(jié)果,面對大規(guī)模數(shù)據(jù),采用分布式的存儲是非常有必要的。Hadoop 提供的HDFS(Hadoop distributed file system)就是一個分布式文件系統(tǒng),如圖1 所示。
圖1 HDFS 結(jié)構(gòu)圖
將文件默認(rèn)按128M分為多個block,進(jìn)而存儲在多個Data Node 節(jié)點上,每個block 默認(rèn)保存3 個備份。
數(shù)據(jù)清洗部分主要依賴于Hadoop 下的MapReduce 來進(jìn)行,本項目編程語言使用Java,在開發(fā)過程中,可直接用Java 調(diào)用Hadoop 接口,覆寫map 和reduce 方法,根據(jù)實際數(shù)據(jù)及需求,來對數(shù)據(jù)進(jìn)行清洗和補償。
在數(shù)據(jù)處理過程中,發(fā)現(xiàn)存在一些操作數(shù)據(jù)產(chǎn)生時間相同,分析是系統(tǒng)運行過程中被惡意訪問,或者存在刷點擊量的行為,而這些行為數(shù)據(jù)對實際數(shù)據(jù)分析毫無用處,故需要對其進(jìn)行清除,這里考慮使用MapReduce 將完全相同數(shù)據(jù)只讀取其中一個,將其它的無用數(shù)據(jù)進(jìn)行清除,以達(dá)到去重目的。
由于需要按地域區(qū)分用戶,并按地域進(jìn)行分析,故要對IP地址進(jìn)行補償。將一串IP 地址其視為256 進(jìn)制數(shù),然后將其轉(zhuǎn)為整型數(shù),將其視為地址最大數(shù),進(jìn)而在0 和最大數(shù)中間隨機生成1 個數(shù),再通過位運算,將其轉(zhuǎn)為IP 地址格式,即可得出隨機IP 地址。
根據(jù)用戶登陸與操作情況進(jìn)行分析,設(shè)用戶操作分別為瀏覽、收藏、加購、付款四種類型,分別賦值1-4 分可得用戶評分向量。
活躍用戶記錄可利用位圖來實現(xiàn),以1 作為登錄,0 作為登錄,以此來記錄用戶的具體登錄情況。以此方法,可以將一個月的數(shù)據(jù)合并為一條數(shù)據(jù),這樣可以極大的減少數(shù)據(jù)的空間占用,同時實現(xiàn)對用戶活躍度的記錄。
基于用戶的協(xié)同過濾,通過不同用戶對物品的評分來評測用戶之間的相似性,基于用戶之間的相似性做出推薦,如圖2 所示。
圖2 對相似用戶的物品推薦
為實現(xiàn)以上算法,引入Co-occurrence Matrix(同現(xiàn)矩陣)與User Preference Vector(用戶評分向量),以同現(xiàn)矩陣與用戶評分向量相乘得到Recommended Vector(推薦向量)。最后按照排序高低對用戶進(jìn)行推薦,如圖3 所示。
圖3 基于協(xié)同過濾的商品推薦算法示意圖
直接調(diào)用Spark 的Mllib 庫中的算法實現(xiàn)。將用戶對商品的評分矩陣分解為2 個矩陣分別設(shè)為X 與Y。
隨機生成X,Y,固定Y,使用公式3 更新Xu,固定X,使用公式(4)更新Yi,重復(fù)交替執(zhí)行公式(3)和公式(4),直到均方根誤差RMSE 收斂。ALS 算法流程圖如圖4 所示。
圖4 ALS 算法流程圖
以HDFS 作為存儲系統(tǒng),借助kafka 與flume 對數(shù)據(jù)進(jìn)行采集,之后調(diào)用Spark 的Mllib,使用位圖、同現(xiàn)矩陣、ALS(交替最小二乘法)等算法實現(xiàn)了對數(shù)據(jù)進(jìn)行處理與分析,并得到推薦結(jié)果。對提升用戶體驗與增強用戶黏性,做出了巨大的幫助。