歐衛(wèi)紅 楊永琴
(廣州科技職業(yè)技術(shù)大學(xué),廣東廣州 510550)
隨著第四次工業(yè)革命的不斷推進(jìn),以云計算、5G、人工智能、區(qū)塊鏈、大數(shù)據(jù)為代表的技術(shù)迅猛發(fā)展,人們正在用數(shù)字時刻記錄著我們的生產(chǎn)與生活,數(shù)據(jù)量呈爆炸式增加,出現(xiàn)了信息過載現(xiàn)象,人們越來越難在大數(shù)據(jù)里快速得到想要的結(jié)果。而大數(shù)據(jù)正在悄悄改變我們的生活,它蘊(yùn)含著豐富的信息資源,在智能家居、智能制造、社會服務(wù)、生物醫(yī)療等領(lǐng)域已被廣泛應(yīng)用。但大數(shù)據(jù)不同于傳統(tǒng)的數(shù)據(jù),它具有形式多樣性、數(shù)據(jù)量特別巨大、價值密度低等特性。數(shù)據(jù)信息爆炸式的增長使得信息的有效性和利用率大大降低[1]。面對數(shù)量巨大的信息,用戶無法快速準(zhǔn)確地獲取需求,個性化推薦作為大數(shù)據(jù)領(lǐng)域中重要的應(yīng)用之一,解決了信息過載和信息利用的問題,讓用戶能輕松獲取自己想要的資源。目前,在京東、淘寶網(wǎng)、優(yōu)酷、網(wǎng)易云音樂等眾多網(wǎng)絡(luò)應(yīng)用平臺都使用了個性化推薦系統(tǒng)來提升用戶的體驗和業(yè)績,在圖書方面,當(dāng)當(dāng)網(wǎng)就使用了推薦系統(tǒng)來為用戶生成個性化的書單,方便用戶閱讀和購買。因此,在大數(shù)據(jù)環(huán)境下,個性化推薦系統(tǒng)對社會中各行各業(yè)有重要作用,因此,研究大數(shù)據(jù)平臺下的圖書推薦算法及應(yīng)用具有重要的意義。
推薦系統(tǒng)最早在1992年以單機(jī)模式出現(xiàn),但隨著網(wǎng)絡(luò)技術(shù)和信息技術(shù)的發(fā)展,推薦系統(tǒng)也在不斷升級,到如今推薦系統(tǒng)已演變成大數(shù)據(jù)分布式模式,形式雖然發(fā)生了改變,但不管是單機(jī)模式還是大數(shù)據(jù)分布式模式的推薦系統(tǒng),其核心還是推薦算法。經(jīng)過多年的發(fā)展與完善,目前,大家一般把現(xiàn)有的推薦算法分為以下幾種類型:基于內(nèi)容的推薦算法(Content-based Recommendations,CB)、基于協(xié)同過濾的推薦算法(Collaborative Filtering Recommendations,CF)、基于隱語義模型的推薦算法和混合推薦算法[2],這些算法都是成熟的、有著廣泛應(yīng)用場景且比較傳統(tǒng)的推薦算法,隨著人工智能技術(shù)不斷發(fā)展出現(xiàn)了基于深度學(xué)習(xí)的推薦算法。
CB算法就是利用被推薦物與推薦事件相關(guān)的屬性信息及用戶與推薦事件相關(guān)的屬性,再結(jié)合被推薦物與用戶的交互歷史信息來計算推薦結(jié)果。它的可解釋性是比較強(qiáng)的,它從事物的輔助信息出發(fā),依靠相關(guān)輔助信息,基本解決了數(shù)據(jù)的稀疏性問題和冷啟動問題。文獻(xiàn)[3]提出了一種基于內(nèi)容的注意協(xié)作過濾算法(Attentive Collaborative Filtering,ACF),文獻(xiàn)[4]中基于內(nèi)存的計算方式實現(xiàn)了基于內(nèi)容的推薦算法,以上這些都是CB算法的典型應(yīng)用。
CF算法就是利用用戶反饋的顯性和隱式數(shù)據(jù),挖掘用戶信息,獲取用戶的信息規(guī)律和趨勢,對用戶與被推薦物的歷史交互信息進(jìn)行分析來計算推薦結(jié)果。它是目前應(yīng)用最廣的推薦算法,文獻(xiàn)[5]提出了一種從評論中學(xué)習(xí)改進(jìn)的分布式推薦算法(LDR-CF),文獻(xiàn)[6]提出了一種獲取用戶興趣變化的推薦算法(FCCF)。雖然CF算法是流行的推薦算法之一,但在大數(shù)據(jù)場景下也存在不少需要解決的問題,因數(shù)據(jù)量大、分布式存放且高度稀疏,導(dǎo)致無法快速、正確地獲取用戶和被推薦物品之間的相似度,無法精準(zhǔn)推薦,文獻(xiàn)[7]提出了基于雙圖正則化的稀疏潛模型用于協(xié)同過濾算法,部分解決了相關(guān)問題。
基于隱語義模型的推薦算法就是利用被推薦物的隱含特征,再聯(lián)系用戶興趣和被推薦的物品來計算推薦結(jié)果。文獻(xiàn)[8]提出了貝葉斯概率矩陣分解模型(BPMF)就是基于隱語義模型的推薦算法?;旌贤扑]算法是多種單一算法的結(jié)合,避免了單一算法的缺點,融合各算法的優(yōu)點,在當(dāng)前應(yīng)用較多,文獻(xiàn)[9]提出了基于遺傳算法的聚類與協(xié)同過濾組合推薦算法進(jìn)行項目推薦,部分解決了大數(shù)據(jù)環(huán)境下低效率和推薦質(zhì)量低的問題。
基于深度學(xué)習(xí)的推薦算法其實質(zhì)也是一種混合推薦算法,包括多層感知機(jī)(MLP)、自編碼器(Auto-Encoder)、卷積神經(jīng)網(wǎng)絡(luò)(CNN)、遞歸神經(jīng)網(wǎng)絡(luò)(RNN)等多種技術(shù)的結(jié)合,文獻(xiàn)[10]提出的基于深度學(xué)習(xí)(DNN、CNN等深度模型)的混合協(xié)同過濾模型,攜程網(wǎng)就采用了該算法模型,應(yīng)用效果很好。
在圖書領(lǐng)域混合推薦算法得到了廣泛的應(yīng)用,文獻(xiàn)[11]為了解決圖書借閱服務(wù)中種類繁多的推薦問題,通過關(guān)聯(lián)規(guī)則和協(xié)同過濾相結(jié)合的方式提出了基于混合規(guī)則的圖書推薦模型。然而,隨著圖書的數(shù)字化加快,圖書領(lǐng)域數(shù)據(jù)量快速增長,高度稀疏的圖書數(shù)據(jù),使得為用戶提供精準(zhǔn)的圖書推薦還需進(jìn)一步研究。
Mahout框架起源于2008年,目前它是Apache基金會下面一個開源項目,它是Hadoop大數(shù)據(jù)生態(tài)中實現(xiàn)數(shù)據(jù)挖掘與構(gòu)建推薦系統(tǒng)的重要項目,它完整地封裝了“協(xié)同過濾”算法,并實現(xiàn)了并行化,提供非常簡單的API接口。它主要由四大模塊組成即分類模塊、關(guān)聯(lián)規(guī)則模塊、聚類模塊、推薦模塊,每個模塊都提出并實現(xiàn)了多種算法。其中分類模塊主要是提供一種簡單的決策形式,從正確決策樣本中進(jìn)行學(xué)習(xí)并作出預(yù)測分析,分類依賴于有指導(dǎo)的學(xué)習(xí),是一種通過分析低代價變量組合來確定高代價變量值的方法。聚類模塊主要是實現(xiàn)在大數(shù)據(jù)中將類似的項目自動組織,或集聚到一起實現(xiàn)“物以類聚”,實現(xiàn)事物的分組分類。推薦模塊主要提供協(xié)同過濾taste引擎,實現(xiàn)基于事物的協(xié)同過濾、基于用戶的協(xié)同過濾、基于模型的協(xié)同過濾,再根據(jù)歷史用戶和項目歷史向系統(tǒng)的當(dāng)前用戶提供推薦。表1列舉了各個模塊中典型算法。
Mahout開源項目其主要功能是提供人工智能處理,它是一個Hadoop大數(shù)據(jù)處理平臺的人工智能算法庫,用于完成各種各樣的任務(wù),如智能分類、評價性的聚類和模式挖掘等,如表1所示。它已經(jīng)實現(xiàn)了多種經(jīng)典算法,并一直在擴(kuò)充中,成為大數(shù)據(jù)處理平臺中一個可擴(kuò)容的主流的開源算法庫,Mahout能幫助開發(fā)人員更加方便快捷地創(chuàng)建智能應(yīng)用程序,廣泛應(yīng)用于人工智能、數(shù)據(jù)挖掘等領(lǐng)域。用Mahout來構(gòu)建推薦系統(tǒng),是一件既簡單方便又復(fù)雜且困難的事情,簡單方便是指各種算法已經(jīng)用程序?qū)崿F(xiàn),并提供相應(yīng)的API,我們在使用時直接調(diào)用即可;困難復(fù)雜是因為業(yè)務(wù)場景的多樣性和復(fù)雜性,再加上我們不了解算法細(xì)節(jié),因此,在進(jìn)行具體業(yè)務(wù)與算法組合、配置、調(diào)優(yōu)就是一件相當(dāng)困難且復(fù)雜的事情。
表1 Mahout框架主流算法
本文基于Mahout框架中的協(xié)同混合過濾推薦算法,再結(jié)合知識分類與用戶興趣提出基于知識分類和用戶興趣的協(xié)同過濾推薦算法,來解決因數(shù)據(jù)稀疏性而導(dǎo)致的推薦精度不高、不準(zhǔn)確的問題。
在Mahout框架基于項目(物品)的協(xié)同過濾的推薦中,如何快速、準(zhǔn)確地搜索與項目(物品)相似的近鄰是推薦過程中關(guān)鍵的一步,其核心是推薦所用的數(shù)據(jù)和計算相似性的方法。我們以知識結(jié)構(gòu)、用戶興趣為項目類別,分別構(gòu)建知識項目類別分布矩陣P、用戶興趣分布矩陣T、用戶項目評價矩陣E。P是一個n×k矩陣P(n,k),其中k表示知識項目類別的個數(shù),n表示項目的個數(shù);T是一個m×k矩陣T(m,k),其中k表示用戶興趣種類數(shù)量,m表示用戶的數(shù)量;E是一個m×n的矩陣E(m,n),其中m表示用戶數(shù),n表示項目數(shù),Eij表示用戶i對項目j的評價。計算相似性的方法有多種,如:歐氏距離、余弦相似度、皮爾遜相關(guān)系數(shù)、修正余弦相似度、漢明距離、曼哈頓距離。在推薦系統(tǒng)中主要用到余弦相似度、皮爾遜相關(guān)系數(shù)、修正余弦相似度三種方法,本文基于三種計算方法提出一種改進(jìn)相似度的算法,其算法描述如下:
(1)跟據(jù)知識分類的數(shù)據(jù)集中項目分類信息構(gòu)建一個知識項目分類分布矩陣P(n,k);
(2)跟據(jù)以知識分類的項目分類信息和用戶項目評價矩陣E相互作用,計算出用戶興趣分布矩陣T(m,k);
(3)通過步驟(1)(2)的結(jié)果,計算出用戶對知識分類項目所屬興趣類別的平均評價分;
(4)找出用戶對知識分類項目i和用戶對知識分類項目j都有評價的用戶的并集;
(5)采用用戶興趣分布的協(xié)同過濾算法對并集中用戶對知識分類項目i或知識分類項目j未評分的項進(jìn)行預(yù)填充;
(6)重構(gòu)用戶項目評價矩陣,計算出知識分類項目i和知識分類項目j有著共同評價分的用戶集U;
(7)用基于項目分類的修正余弦相似性算法計算出知識分類項目之間的相似度,組成相似度最大的k個知識分類項目鄰居;
(8)對比步驟(7)得到的知識分類相似鄰居與相似度值來預(yù)測目標(biāo)用戶對知識分類項目的評價分;
(9)排序預(yù)測評價分,推薦排名靠前的知識分類項目給目標(biāo)用戶。
通過對知識分類和用戶興趣的優(yōu)化組合,引入隱語義模型(Latent Factor Model,LMF),并結(jié)合實際將各種推薦算法混合使用而形成混合推薦算法來提高推薦精確度,本文構(gòu)建一種混合模型來提升推薦的效果,如圖1基于Mahout下知識分類興趣分布的混合推薦模型圖。
圖1 基于Mahout下知識分類興趣分布的混合推薦模型圖
為了測試基于知識分類和用戶興趣的協(xié)同過濾推薦算法的優(yōu)缺點,我們搭建了一個基于Hadoop2.7.2的大數(shù)據(jù)處理平臺,Mahout子項目分別采用本文使用的基于知識分類項目分類的修正余弦相似性算法(ItemCF-CMC)、基于修正余弦相似性的項目推薦(ItemCF-MC)、基于余弦相似性的項目推薦(ItemCF-C)作對比分析。測試時把數(shù)據(jù)集分成兩部分,一部分為訓(xùn)練集,另一部分為測試集,把數(shù)據(jù)集用隨機(jī)的方式分成10份,先選一部分作測試集,剩下的作訓(xùn)練集,并進(jìn)行交叉實驗測試。采用評估預(yù)測評價分準(zhǔn)確度的標(biāo)準(zhǔn),即用平均絕對誤差(MAE)來進(jìn)行評測,MAE值越低表明性能越好,準(zhǔn)確度越高,通過調(diào)用Mahout中RecommenderEvaluator得到MAE值。測試結(jié)果如圖2基于知識分類項目的MAE值對比圖。
圖2 基于知識分類項目的MAE值對比圖
從圖2中可以看出基于知識分類項目分類的修正余弦相似性算法,隨著項目最近鄰居數(shù)的增加MAE的值是在逐漸減小的,而且其性能優(yōu)于另外兩種協(xié)同過濾的方法,因為它考慮了知識分類項目和用戶興趣分布的因素,從而使計算出來的最近鄰居相似度更加貼近現(xiàn)實,也更加準(zhǔn)確,再通過較高的準(zhǔn)確的最近鄰居用戶群體,來獲取更加貼近目標(biāo)用戶的預(yù)測評價分,因此它能提供更加精細(xì)的個性化推薦和更高的推薦質(zhì)量。
Mahout項目是 Apache Software Foundation(ASF)旗下的基于Hadoop生態(tài)的一個非常成熟的、應(yīng)用廣泛的開源框架,包含了聚類、分類、推薦過濾、頻繁子項挖掘等多種算法,其推薦引擎(協(xié)同過濾)在實際應(yīng)用中也非常普遍,但如何利用業(yè)務(wù)場景選擇最優(yōu)的算法組合及調(diào)優(yōu)仍然是一個需要不斷探索和實踐的過程。本文利用Mahout項目的協(xié)同過濾推薦算法結(jié)合知識分類和興趣分布提出基于知識分類和用戶興趣的協(xié)同過濾推薦算法應(yīng)用于圖書的推薦系統(tǒng)中,實驗證明效果良好,它提供了更加個性化和更高質(zhì)量的推薦。但實驗中的數(shù)據(jù)量比較少,不是真正的“大數(shù)據(jù)”,因此也存在一些問題需要在后續(xù)的實踐和研究中去改進(jìn)和優(yōu)化。