吳嘉澍 饒華梟 范小朋 王 洋*
1(中國科學(xué)院深圳先進技術(shù)研究院 深圳 518055)
2(墨爾本大學(xué)計算與信息系統(tǒng)學(xué)院 墨爾本 3052)
3(中國科學(xué)院大學(xué) 北京 100049)
隨著數(shù)字時代的到來以及智能移動設(shè)備的廣泛應(yīng)用,人們可獲取的信息量急劇增多,信息過載問題也因此變得日趨嚴重[1]。為應(yīng)對信息過載帶來的弊端,將真正有用的信息以個性化的形式推薦給用戶,推薦系統(tǒng)[2]成為解決信息過載問題的有力工具之一[3-4],其應(yīng)用也變得愈發(fā)廣泛,且受到了眾多的關(guān)注和研究。面對海量的信息,推薦系統(tǒng)可以根據(jù)用戶的信息需求、興趣愛好等,將用戶可能感興趣的信息、產(chǎn)品等進行個性化推薦。與傳統(tǒng)的搜索引擎相比,推薦系統(tǒng)可以通過收集用戶的興趣偏好[5],進行個性化的學(xué)習(xí),從而自動化地發(fā)現(xiàn)用戶的興趣點,無需用戶人為輸入其興趣點。這使得推薦系統(tǒng)在引導(dǎo)用戶發(fā)現(xiàn)其信息需求的同時更加簡潔易用。
雖然經(jīng)過了長期的發(fā)展與演化,但推薦系統(tǒng)算法仍存在一些不足[6]。例如,有限的數(shù)據(jù)收集能力無法應(yīng)對當前海量的信息,以及數(shù)據(jù)收集過程較差的連續(xù)性造成較嚴重的數(shù)據(jù)稀疏性等問題[7-8]。這勢必會給推薦系統(tǒng)算法對用戶行為的分析、用戶興趣的挖掘帶來困難。同時,現(xiàn)有的絕大多數(shù)推薦系統(tǒng)算法著重于對用戶和所推薦的商品屬性進行分析并輔助推薦,在推薦過程中往往缺失對用戶所處情境[9-10]的考慮,如用戶上一個瀏覽的應(yīng)用類型、用戶在某類應(yīng)用中的啟動次數(shù)、停留時間等,從而使得推薦系統(tǒng)的推薦效果欠佳。此外,推薦系統(tǒng)算法還面臨著推薦同質(zhì)化的問題[11]。絕大多數(shù)的推薦系統(tǒng)更善于推薦與用戶歷史興趣相似的資源,推薦的內(nèi)容缺乏新穎性,同類資源的重復(fù)推薦無法引導(dǎo)用戶發(fā)現(xiàn)更多新的潛在興趣點,從而使得推薦系統(tǒng)存在較大的局限性,其推薦準確性也因此而受損[12]。
針對上述推薦系統(tǒng)面臨的局限性,以及推薦過程中對用戶自身所處情境考慮的缺失,本文旨在對傳統(tǒng)推薦系統(tǒng)算法做進一步優(yōu)化,提出基于用戶特征聚類聯(lián)合場景特征的多維度應(yīng)用推薦系統(tǒng)。該推薦系統(tǒng)將根據(jù)不同用戶群體、不同應(yīng)用軟件特征以及用戶所處情境信息為用戶進行個性化的應(yīng)用程序推薦。具體地,首先對用戶群體的特征矩陣進行奇異值分解(Singular Value Decomposition)操作,得到降維并且去噪的用戶向量表示。其中,對用戶群體特征進行的奇異值分解可以去除數(shù)據(jù)中重要性較低的成分,從而對用戶特征的表示進行精簡。同時,這種精簡同樣可以使得所提出推薦系統(tǒng)的運行更加高效。其次,對用戶群體的特征向量進行層次聚類分析,從而將具有相似用戶特征的用戶聚類,并利用各用戶類的均值向量作為其特征表示。在此基礎(chǔ)上,算法結(jié)合用戶所處情境因素,以用戶為出發(fā)點、情境為補充,依據(jù)貝葉斯模型預(yù)測最佳的應(yīng)用推薦列表,從而實現(xiàn)為用戶進行更為優(yōu)化的應(yīng)用軟件推薦,提高用戶對海量信息的使用精準度與使用效率。
在推薦系統(tǒng)運行性能及拓展性能方面,為滿足推薦系統(tǒng)的高并發(fā)處理海量數(shù)據(jù)的需求,本文使用分布式集群服務(wù)器運行所提出的系統(tǒng),使得數(shù)據(jù)存儲、模型運算等方面的性能有了極大提升。此外,計算集群使得本文推薦系統(tǒng)具備良好的拓展性,對推薦系統(tǒng)在運行中的穩(wěn)定性起到了重要的作用。
為驗證所提出算法的有效性,本文將所提出的基于奇異值分解的用戶特征層次聚類結(jié)合情境特征信息,并利用貝葉斯模型的推薦系統(tǒng)算法與傳統(tǒng)的推薦系統(tǒng)算法進行推薦質(zhì)量及模型量化指標的效果對比,從而驗證系統(tǒng)的有效性與優(yōu)勢。
本文將在第 2 小節(jié)介紹所涉及算法的相關(guān)理論研究;第 3 小節(jié)陳述所提出算法的細節(jié)以及其在現(xiàn)有研究基礎(chǔ)上的創(chuàng)新性;第 4 小節(jié)介紹推薦系統(tǒng)的架構(gòu)與具體實現(xiàn);第 5 小節(jié)展示本文推薦系統(tǒng)的實驗驗證結(jié)果;最后小節(jié)對本文進行概括與總結(jié)。
聚類算法是一種探索性的分析方法,在聚類過程中,無需事先給出聚類的具體標準。聚類算法能夠從樣本數(shù)據(jù)出發(fā),自動發(fā)現(xiàn)空間實體的屬性間所具有的關(guān)聯(lián)關(guān)系并進行聚類[13],從而將本身沒有類別的樣本聚集成不同的類(簇),其目的在于使屬于同一個類的樣本之間能夠彼此相似,而屬于不同類的樣本之間在特征上應(yīng)該足夠疏遠。同時,聚類算法對大型數(shù)據(jù)集具有良好的可拓展性,這對于數(shù)據(jù)需求量大的推薦系統(tǒng)而言是極其適用的。此外,聚類結(jié)果的可解釋性以及運行的高效性也為其能夠應(yīng)用在推薦系統(tǒng)中打下了良好的基礎(chǔ)。Shinde 和 Kulkarni[14]提出了基于用戶評價聚類的個性化推薦系統(tǒng)算法。該算法首先將用戶根據(jù)其對商品的評價進行分類,之后,對商品具有類似評價、類似興趣與偏好的用戶組進行個性化的商品推薦,從而使得推薦系統(tǒng)的推薦更加精準。經(jīng)過驗證,聚類算法有效地提升了推薦系統(tǒng)對于商品的推薦質(zhì)量。Hsu[15]則在為學(xué)生推薦英語學(xué)習(xí)課程的推薦系統(tǒng)中運用聚類算法,先將具有不同學(xué)習(xí)行為習(xí)慣的學(xué)生聚類為不同的學(xué)生組,隨后優(yōu)化推薦系統(tǒng)算法,為具有不同學(xué)習(xí)習(xí)慣的學(xué)生組推薦適合他們的英語課程,從而使得推薦系統(tǒng)更加人性化。
然而,上述聚類算法應(yīng)用于推薦系統(tǒng)中的工作時,存在兩個缺點。首先,這些方法均未在聚類前使用矩陣分解的方法對用戶特征信息進行降維并去噪,這使得特征信息中不僅存在冗余以及表示能力弱的特征,而且具有較高的維度,從而損害推薦系統(tǒng)的運行效率。其次,這些方法并未充分利用用戶自身所處的情境信息,使得推薦系統(tǒng)在進行推薦時具有局限性。
情境信息[16]可以輔助推薦系統(tǒng)分析用戶的背景、興趣愛好等個性化信息。在推薦系統(tǒng)模型中,情境可以是用戶打開某類應(yīng)用的次數(shù)、用戶在某類應(yīng)用中的停留時長以及用戶上一個使用的應(yīng)用種類等能夠反映用戶決策的額外信息。例如,通過用戶上一個使用的應(yīng)用可以輔助預(yù)測用戶下一個可能會使用的應(yīng)用,通過實時地獲取用戶所處的情境信息,進而在原有用戶數(shù)據(jù)和應(yīng)用數(shù)據(jù)的基礎(chǔ)上,更為人性化、智能化地分析用戶的信息需求,從而提高應(yīng)用推薦的效果。
然而,當前基于情境因素的推薦系統(tǒng)算法均利用用戶情境信息來分析所推薦產(chǎn)品的特征,而并非對用戶自身喜好特征進行分析。Hu 等[17]在為用戶推薦電視節(jié)目的推薦系統(tǒng)中借助了用戶瀏覽歷史、購買歷史、搜索歷史甚至是用戶鼠標移動等用戶情境信息,對電視節(jié)目特征進行分析,并將電視節(jié)目更好地推薦給用戶。而 Abbas 等[18]則利用 YouTube 視頻的用戶評分與評價信息,獲得對視頻更好的特征分析與定位,從而輔助推薦系統(tǒng)為用戶推薦更加準確、合適的 YouTube 視頻。
然而,上述算法均利用用戶情境信息分析產(chǎn)品的特征,而現(xiàn)有的推薦系統(tǒng)算法較少有利用用戶情境信息對用戶喜好進行分析。此外,用戶評分、評價等信息不僅需要用戶的額外參與,而且不同用戶擁有不同的評分、評價標準,這導(dǎo)致此類用戶情境信息收集困難,且利用難度大,從而對推薦系統(tǒng)的推薦效果產(chǎn)生影響。
為了更加準確高效地為用戶進行應(yīng)用推薦,本文提出了基于用戶特征聚類聯(lián)合情境特征的多維度推薦系統(tǒng)。首先,對用戶特征進行奇異值分解;然后,對分解后的用戶特征進行層次聚類操作,并用每一個用戶類的均值向量作為代表該類用戶的特征信息;最后,結(jié)合用戶所處情境信息,利用貝葉斯模型,對用戶可能感興趣的應(yīng)用進行預(yù)測并按照概率降序排序,形成應(yīng)用推薦列表。
首先,推薦系統(tǒng)所需的用戶特征將以矩陣形式進行初始化。每一個用戶都使用T維的向量表示該用戶的T個特征(A1-AT),如年齡、性別、愛好、所在地區(qū)等。因此,N個用戶(U1-UN)將構(gòu)成一個N行T列的用戶特征矩陣,如圖 1 所示。
圖1 用戶-特征矩陣 M 示意圖Fig. 1 Illustration of user-feature matrix M
然而,對于表示用戶特征的T個特征維度而言,并非每個特征維度都能有效地用來表示用戶信息,其中部分特征包含噪聲、或是大量的冗余信息,從而使得其不具備良好的表示能力。同時,不同特征也擁有不同的重要程度,并非所有的特征維度在表示用戶時都具有相同的重要程度。此外,初始時的特征維度T可能較大,從而造成用戶特征矩陣維度較高,若直接將龐大的用戶特征矩陣輸入至推薦系統(tǒng)算法,將使得算法運行效率較低。為解決上述問題,本文算法使用奇異值分解算法對用戶特征矩陣進行分解,從而達到降維和去噪的效果。
奇異值分解算法可以將用戶-特征矩陣M分解為用戶-精簡特征空間矩陣U、奇異值對角矩陣Σ和精簡特征空間-特征矩陣V的矩陣乘積,如公式(1)所示。通過奇異值分解操作,用戶特征表示能力最強的一部分特征將會被保留,而特征中影響程度不大或表示能力不強的次要特征將會被剔除[19]。通過將主要的影響因素保留,可以使得特征具有對用戶更強的表示能力。此外,在經(jīng)過奇異值分解后,特征維度的下降也使得所生成的用戶-精簡特征空間矩陣U擁有較低的維數(shù),從而使得后續(xù)的推薦運算變得更加高效。
在對用戶特征矩陣進行奇異值分解之后,算法基于用戶特征使用層次聚類算法(Hierarchical Clustering)[20]對用戶進行聚類,從而將用戶們聚類到特征相似、興趣愛好相仿的用戶組中。從下至上的層次聚類算法的算法流程如圖 2 所示。首先,算法將所有用戶數(shù)據(jù)都初始化為一個葉子節(jié)點。在每一次迭代中,算法會計算葉子節(jié)點之間的相似性(如歐氏距離);隨后,葉子節(jié)點之間的這種相似性信息將決定它們是否會被合并至新的聚類簇。層次聚類算法會不斷地進行迭代合并,直到迭代終止條件達成,比如算法已經(jīng)生成指定數(shù)目的聚類簇,或聚類簇之間的距離滿足一定的條件。
圖2 層次聚類訓(xùn)練流程圖Fig. 2 Description of the training process of the hierarchical clustering
本文算法將奇異值分解后的用戶特征信息輸入至層次聚類算法中進行迭代,直到每組聚類簇的均值向量之間的距離都大于或等于一個距離閾值λ時,停止聚類迭代。每一次迭代后,各個聚類簇的均值向量之間的歐式距離均會被計算。在圖 3 中,圖左側(cè)的λ值表示當前聚類狀態(tài)下各個類的均值向量之間的最小距離。若預(yù)先設(shè)定的聚類迭代停止閾值λ為 1.5,則聚類算法會在生成 4個聚類簇時停止迭代,因為此時聚類簇之間的歐式距離均已大于預(yù)先設(shè)定的閾值λ。此時,用戶G1、G2、G8 會被分為一類,用戶 G3、G4、G9會被分為一類,用戶 G5 和 G7 會被分為一類,用戶 G6 自成一類。迭代停止條件的滿足意味著每個用戶聚類簇之間已經(jīng)擁有一定的差異性,從而能夠避免用戶被模棱兩可地錯分入其本不應(yīng)屬于的用戶組。
圖3 聚類過程的譜系圖Fig. 3 Dendrogram of the hierarchical clustering process
表1 情境特征及其表示示例Table 1 Some user behavioural features and their corresponding examples
通過層次聚類算法,具有較相似特征的用戶會被聚合至同一類中,之后,每一類的均值向量將會被用來表示該類用戶的特征,進行后續(xù)的推薦運算,如公式(2)所示。第c類用戶的用戶特征表示 為被分至該類的所有I個用戶的用戶特征向量的均值。
通過這種方式,雖然同處一類的用戶具有大體相似的特征,但處于同類的用戶與用戶之間也多少存在一定的差異性與多樣性,并非完全相同。對每一類用戶的特征取均值向量可以很好地將同類用戶的特征進行融合,在不破壞用戶原有興趣取向的同時適當?shù)匾胪愑脩魩淼亩鄻有裕瑥亩沟盟惴梢越柚c某一用戶興趣大體相同的同類用戶的平均特征,來幫助該用戶發(fā)現(xiàn)同類用戶具有的其他興趣點,從而引導(dǎo)該用戶發(fā)現(xiàn)同類用戶可能擁有的潛在興趣,使得推薦算法更加有效。
與傳統(tǒng)的推薦系統(tǒng)算法不同的是,本文算法在利用數(shù)據(jù)特征進行分析與應(yīng)用推薦時,不再局限于用戶自身特征(如年齡、性別、愛好等)。在傳統(tǒng)的用戶特征與應(yīng)用特征的基礎(chǔ)上,通過聯(lián)合實時用戶情境信息,實現(xiàn)利用多個維度的信息進行推薦的應(yīng)用推薦系統(tǒng)。通過聯(lián)合用戶情境因子信息,推薦系統(tǒng)可以將實時獲得的用戶情境與原有的用戶特征融合為多維度的特征空間,從而使得推薦系統(tǒng)更人性化、智能化地分析用戶所需,優(yōu)化應(yīng)用推薦效果。本文算法所使用的部分用戶情境特征及其表示示例見表 1。
根據(jù)公式(3),算法可以計算出對于一個給出的用戶特征及其所處情境特征,不同的應(yīng)用被使用的概率。公式(3)中,按照A被使用條件下U的概率、A被使用條件下S的概率、以及U和S同時發(fā)生的概率,可計算得到在給定用戶特征U與情境特征S的情況下,不同應(yīng)用A被使用的概率值。其中,所得到的概率越高,該應(yīng)用就越值得被推薦。故概率最大的前K個應(yīng)用,即是最值得被推薦的K個應(yīng)用。由此,算法得到一個以概率降序排列的應(yīng)用推薦列表。
同時,所提出算法可以接受并處理用戶所處情境信息容易隨時間發(fā)生變化的特點,算法可以通過用戶反饋的實時用戶行為信息,如直接點擊、收藏、停留時長長短、點擊次數(shù)等,更新公式(3)中的概率信息,從而達到算法的實時更新,以使得應(yīng)用推薦具有更好的實時性。
本文算法的整體流程如圖 4 中花括號所指部分所示。首先,算法對用戶數(shù)據(jù)進行奇異值分解,并在分解得到的降維并去噪的用戶特征上進行層次聚類迭代,直到滿足終止條件,得到距離較遠的各組用戶聚類簇,并用各簇的均值向量作為該聚類簇中的用戶特征;然后,利用貝葉斯模型,聯(lián)合用戶特征與情境特征,對應(yīng)用被使用的概率進行預(yù)測并排序,最終形成應(yīng)用推薦列表。
圖4 系統(tǒng)架構(gòu)Fig. 4 The architecture of the proposed system
本文系統(tǒng)的總體架構(gòu)分為 5 個部分,如圖 4所示。位于最底層的基礎(chǔ)數(shù)據(jù)層主要包含用戶基礎(chǔ)屬性數(shù)據(jù),如年齡、性別、所在地、手機設(shè)備屬性等基礎(chǔ)數(shù)據(jù);應(yīng)用的基本信息,如某款應(yīng)用屬于某類、評分高低等,以及用戶訪問應(yīng)用的數(shù)據(jù),即算法所需要用到的情境信息。為獲取所需數(shù)據(jù)信息,需要進行數(shù)據(jù)采集,其主要目標是將業(yè)務(wù)系統(tǒng)的數(shù)據(jù)同步至數(shù)據(jù)存儲系統(tǒng)中進行保存,供下一步處理和使用。
本文推薦系統(tǒng)的第 2 層為離線計算層,其職責(zé)是進行數(shù)據(jù)處理與模型訓(xùn)練。首先,對所收集到的數(shù)據(jù)進行數(shù)據(jù)清洗與整理;其次,按照本文第 3 小節(jié)的算法流程進行模型訓(xùn)練;最后,形成可以為用戶推薦應(yīng)用的模型。算法流程如圖 4 中圓括號所指部分所示。
推薦系統(tǒng)的第 3~5 層分別為存儲及接口封裝層、業(yè)務(wù)處理層和應(yīng)用層。首先,系統(tǒng)會在推薦的排序內(nèi)容基礎(chǔ)上做數(shù)據(jù)接口的封裝;然后,如有必要,業(yè)務(wù)處理層將按照市場變化等信息對推薦內(nèi)容信息做必要的微調(diào);最后,將業(yè)務(wù)干預(yù)的推薦數(shù)據(jù)傳送至前端用戶。整套系統(tǒng)需滿足以下幾點要求:
(1)建立及時、全面的互聯(lián)網(wǎng)信息處理能力,通過探索網(wǎng)絡(luò)資源對各種不同類型的常用應(yīng)用軟件信息進行基礎(chǔ)抓??;
(2)基于云計算框架,建立分布式存儲[22]、大規(guī)模數(shù)據(jù)并行計算水平拓展的技術(shù)能力,實現(xiàn)對系統(tǒng)橫向擴展,方便進行大量數(shù)據(jù)的流式處理;
(3)建立高內(nèi)聚低耦合的架構(gòu),復(fù)用基礎(chǔ)能力,完善系統(tǒng)之間的接口設(shè)計,減少抓取、分析、可視化以及應(yīng)用之間的強關(guān)聯(lián);
(4)在增強推薦的準確度時,不斷提高用戶體驗,利用所提出算法,提高推薦的精確度和召回率。
本文系統(tǒng)通過在傳統(tǒng)推薦系統(tǒng)的基礎(chǔ)上做出優(yōu)化,將奇異值分解后的用戶特征進行聚類,并與情境信息聯(lián)合,通過貝葉斯模型分析預(yù)測用戶所需要的應(yīng)用,實現(xiàn)應(yīng)用推薦效果的增強。同時,系統(tǒng)充分考慮了運行性能及擴展性,以及系統(tǒng)應(yīng)對實時數(shù)據(jù)反饋補充、快速適應(yīng)用戶的特征屬性變化的實時處理能力,通過在分布式架構(gòu)上構(gòu)建應(yīng)用推薦系統(tǒng),實現(xiàn)海量數(shù)據(jù)并行化處理,從而有效提高系統(tǒng)的吞吐量性能。
在本文所提出的多維度應(yīng)用推薦系統(tǒng)的構(gòu)建過程中,使用了如下技術(shù):本文系統(tǒng)采用MySQL[23]存儲用戶屬性數(shù)據(jù),采用 HBase[24]存儲用戶畫像數(shù)據(jù)。存儲數(shù)據(jù)時使用 HDFS[25]分布式文件系統(tǒng)。系統(tǒng)采用了基于 Spark[26]搭建的底層平臺,利用 Spark Streaming 進行實時計算、特征向量計算與排序列表的生成。系統(tǒng)在轉(zhuǎn)發(fā)數(shù)據(jù)時使用 Kafka[27]實現(xiàn)實時數(shù)據(jù)的集群轉(zhuǎn)發(fā)。因為所構(gòu)建的系統(tǒng)需要對數(shù)據(jù)庫進行大量的復(fù)雜數(shù)據(jù)檢索,所以,使用 ElasticSearch[28]分布式系統(tǒng)架構(gòu)成為一個良好的解決方案。此外,本文系統(tǒng)的可視化平臺使用流行的 J2EE[29]應(yīng)用架構(gòu),平臺層采用 JAVA 標準庫以及 J2EE 服務(wù)器,J2EE 項目在 Tomcat[30]服務(wù)上運行,通過 SpringMVC 框架集成實現(xiàn)網(wǎng)頁開發(fā)。通過利用上述技術(shù)并合理協(xié)調(diào)配合,使得本文系統(tǒng)可以高效地滿足所需的要求。本文所構(gòu)建的系統(tǒng)可以支持系統(tǒng)實時獲取并處理數(shù)據(jù),系統(tǒng)在采集與處理數(shù)據(jù)時,可以支持至少百萬級的數(shù)據(jù)處理吞吐量。在進行應(yīng)用推薦時,本系統(tǒng)可以支持至少百級別的并發(fā)操作,并保持系統(tǒng)可用。在數(shù)據(jù)實時查詢時,時延不會超過 4 s。與此同時,為滿足系統(tǒng)拓展性的要求,增加系統(tǒng)處理數(shù)據(jù)的能力,本文系統(tǒng)額外準備了備用服務(wù)器,以避免出現(xiàn)數(shù)據(jù)處理量過大而導(dǎo)致的負荷超限。
本文對所實現(xiàn)的應(yīng)用推薦系統(tǒng)進行了充分且系統(tǒng)的測試,首先驗證了所采用的奇異值分解與層次聚類具有良好的效果,隨后從推薦結(jié)果與度量指標兩個層面驗證了所提出算法整體的有效性。同時,本文還對系統(tǒng)性能進行了測試,從而驗證了系統(tǒng)的高效性與穩(wěn)定性。
為驗證在層次聚類前進行奇異值分解的有效性,本文分別對進行與未進行奇異值分解的用戶特征進行層次聚類,并隨機抽取用戶 #1056 所在的用戶聚類簇,計算同組用戶的屬性平均差值。經(jīng)過對比,層次聚類前未進行奇異值分解的數(shù)據(jù)平均差值可高達 0.6,而經(jīng)過奇異值分解處理后數(shù)據(jù)的差值范圍最大為 0.4。這表明用戶特征數(shù)據(jù)在經(jīng)過奇異值分解消除冗余信息之后進行層次聚類,其得到的聚類簇內(nèi)保留了原始數(shù)據(jù)的主要信息,且數(shù)據(jù)更加精煉,聚類效果更好。圖 5 則進一步地對算法的聚類效果進行了可視化:經(jīng)過奇異值分解后進行層次聚類的聚類簇中出現(xiàn)錯分的次數(shù)得到了明顯的降低,這表明經(jīng)過奇異值分解后進行聚類的有效性。
圖5 進行與不進行奇異值分解后聚類的效果對比Fig. 5 Comparison between clustering quality with and without performing singular value decomposition before clustering
為進一步驗證基于奇異值分解的層次聚類算法的有效性,將本文方法與傳統(tǒng)的機器學(xué)習(xí)聚類算法進行對比,并以用戶聚類結(jié)果召回率作為衡量不同算法有效性的指標。本文在基于 Hadoop生態(tài)系統(tǒng)的 Mahout[31]上做用戶聚類,如圖 6 所示,對比試驗中所采用的對比方法分別為決策樹模型、K-means 算法以及數(shù)據(jù)未經(jīng)過奇異值分解的傳統(tǒng)層次聚類方法。通過將進行了去除錯誤數(shù)據(jù)等預(yù)處理步驟之后的用戶數(shù)據(jù)集M′輸入到不同聚類算法中,使用不同聚類算法得到 R1、R2、R3 與 R4 四種不同的聚類結(jié)果。其中,聚類結(jié)果 R4 是將數(shù)據(jù)M′先通過奇異值分解算法進行數(shù)據(jù)分解,之后輸入至層次聚類算法中得到的聚類結(jié)果。
在驗證過程中,本文采用 10 份交叉驗證的方式,分別對上述 3 種傳統(tǒng)聚類算法以及本文算法進行驗證,并計算召回率。
圖6 不同聚類算法得到用戶聚類結(jié)果的算法流程及召回率結(jié)果Fig. 6 User clustering algorithm procedures and their corresponding recall
如圖 6~7 所示,采用傳統(tǒng)的 K-means 聚類方式,平均召回率約為 57%,決策樹算法的平均召回率則達 60% 左右。層次聚類前未進行奇異值分解的方法的平均召回率約為 68%,而進行奇異值分解后再進行層次聚類的方法的平均召回率可達 73% 左右,比前者提高約 5%。這充分表明本文方法相較于傳統(tǒng)聚類算法的有效性。
圖7 不同聚類算法的召回率對比Fig. 7 Comparison of clustering recall of different clustering algorithms
如圖 4 算法流程圖所示,在用戶特征數(shù)據(jù)通過奇異值分解并進行層次聚類后,算法將采用每一個用戶聚類簇的均值向量代表該用戶聚類簇中的用戶特征。隨后,算法將聯(lián)合情境特征,通過貝葉斯模型輸出最后為用戶推薦的應(yīng)用結(jié)果列表。
為將本文算法與傳統(tǒng)算法推薦結(jié)果的質(zhì)量進行對比分析,本文采用基于協(xié)同過濾的推薦算法以及基于關(guān)聯(lián)規(guī)則的推薦算法作為對比方法。在基于協(xié)同過濾的推薦算法[32]中,算法通過分析其他具有相似特征的用戶的喜好,為用戶推薦可能喜歡的應(yīng)用。而基于關(guān)聯(lián)規(guī)則的推薦算法[32]則利用發(fā)掘到的應(yīng)用之間的關(guān)聯(lián)規(guī)則,根據(jù)用戶使用的部分應(yīng)用信息為用戶推薦可能感興趣的應(yīng)用。在所對比的兩種方法中,均未利用奇異值分解處理特征表示、層次聚類以及用戶所處的情境信息。
表 2 為不同算法針對同一用戶的推薦效果。以所收集的數(shù)據(jù)集中隨機抽取的用戶 #0013 作為示例,在分布式框架上運行不同算法的預(yù)測應(yīng)用結(jié)果中,概率值最高的前 5 個推薦結(jié)果的數(shù)據(jù)如表 2 所示。在 3 種方法中,只有本文方法為用戶推薦的應(yīng)用與用戶實際所使用的應(yīng)用相匹配,且相比其他算法而言,本文算法所推薦的其他應(yīng)用也與用戶實際所使用的應(yīng)用具有較高的相關(guān)性,表明本文方法在推薦效果上的優(yōu)越性。
為進一步對本文算法與現(xiàn)有傳統(tǒng)的推薦算法進行推薦結(jié)果質(zhì)量的量化對比,本文根據(jù)應(yīng)用推薦的相關(guān)性計算了平均絕對誤差(Mean Absolute Error,MAE),即實際使用應(yīng)用與推薦應(yīng)用的匹配程度。推薦應(yīng)用與實際使用應(yīng)用類別一致時的MAE 值低于類別不同時的 MAE 值,故更小的MAE 值意味著更高的搜索結(jié)果質(zhì)量。此外,貝葉斯模型產(chǎn)生的均方根誤差(Root Mean Squared Error,RMSE)與推薦結(jié)果的 Recall 值也被用作算法推薦結(jié)果質(zhì)量的量化對比指標。其中,更小的 RMSE 值與更大的 Recall 值都表明模型具有更理想的效果。實驗對比結(jié)果如圖 8 所示。
圖8 推薦算法結(jié)果量化指標對比Fig. 8 Quantitative analysis of evaluation metrics of recommendation results
在驗證過程中,本文采用了常用的 10 份交叉驗證方法,并對 10 組結(jié)果求平均結(jié)果。從圖 8 可明顯看出,與傳統(tǒng)推薦算法對比,本文算法擁有最小的 MAE 與 RMSE 值,且擁有最大的 Recall值。本文方法的 MAE、RMSE 值都小于 0.6,基于關(guān)聯(lián)規(guī)則算法的 RMSE 值則約為 0.7,而對于基于協(xié)同過濾的算法而言,其 RMSE 值則接近0.8。與此同時,本文算法所產(chǎn)生的 Recall 值較兩種對比方法而言也有較大提升。因此,這充分地從量化指標的角度表明了本文算法推薦結(jié)果的有效性與準確性。
表2 使用不同應(yīng)用算法為用戶推薦應(yīng)用的效果對比Table 2 Comparison between the quality of the recommendation results produced by different algorithms
在實際測試過程中,本文還對所構(gòu)建系統(tǒng)的性能進行了充分的測試與分析,以檢測其在真實運行環(huán)境下的系統(tǒng)負載能力。
在性能檢測過程中,通過添加 2 000 個虛擬用戶,以此測試系統(tǒng)的平均響應(yīng)時間。測試單頁面用戶點擊時的事務(wù)平均響應(yīng)時間情況如圖 9所示。經(jīng)檢測,系統(tǒng)功能的平均響應(yīng)時間約為1.4 s,最長響應(yīng)時間約為 3.8 s,最短響應(yīng)時間約0.1 s,符合系統(tǒng)的并發(fā)要求。
圖9 事務(wù)平均響應(yīng)時間Fig. 9 Transaction average response time
與此同時,本文還對所構(gòu)建系統(tǒng)進行了性能測試并將結(jié)果匯總在表 3 中。測試結(jié)果充分表明了所構(gòu)建系統(tǒng)的高效性與可靠性。
表3 系統(tǒng)性能記錄Table 3 System performance records
綜合來看,本文推薦系統(tǒng)在應(yīng)用推薦方面相較于所對比方法而言具有較大的提升,推薦有效性較高,且在系統(tǒng)性能方面高效可靠。通過實驗驗證與結(jié)果分析,相比于對比方法而言,本文系統(tǒng)在算法上的優(yōu)化使得應(yīng)用推薦更為準確,從而為用戶更好地推薦適合的應(yīng)用。同時,系統(tǒng)還可以接受實時更新的數(shù)據(jù),智能化程度提升,從而減少運營復(fù)雜度。最后,本文所使用的系統(tǒng)架構(gòu)確保了系統(tǒng)運行的高效性、可靠性與高擴展性,使得系統(tǒng)可以被更廣泛的應(yīng)用。
本文通過在應(yīng)用推薦系統(tǒng)中利用奇異值分解算法對用戶特征信息進行降維去噪、利用層次聚類算法對用戶信息進行聚類,同時考慮用戶所處情境信息,從而提升應(yīng)用推薦系統(tǒng)為用戶推薦應(yīng)用的準確性。相較于文獻[14-15]中未在聚類前使用矩陣分解對用戶特征信息進行降維并去噪的方法而言,本文方法通過奇異值分解算法,既去除了用戶特征信息中的冗余成分,增強了特征信息的表示能力,又提升了算法的運行效率。此外,對用戶特征信息進行層次聚類,并利用聚類均值向量作為用戶類的表示有效地在不破壞用戶組大體特征的情況下提升了特征的多樣性,從而提升了推薦系統(tǒng)的推薦有效性。相較于文獻[17-18]中利用用戶情境信息分析產(chǎn)品特征的方法,本文方法利用用戶情境信息分析用戶的喜好特征,從而更好地輔助推薦系統(tǒng)為用戶推薦更加適合的應(yīng)用。綜上所述,本文推薦系統(tǒng)算法相較于上文所述對比方法具有更好的應(yīng)用推薦能力。
本文針對傳統(tǒng)的推薦系統(tǒng)方法在為用戶推薦應(yīng)用時所面臨的對用戶所處情境考慮的缺失等問題,提出一種新的基于用戶特征聚類聯(lián)合情境特征的多維度推薦系統(tǒng)。所提出推薦系統(tǒng)使用的算法的關(guān)鍵技術(shù)在于,首先利用奇異值分解對用戶特征進行降維、去噪,使得分解后的用戶數(shù)據(jù)不再冗余,具有更強的表示能力,且更低的維度使得所提出推薦系統(tǒng)運行更加高效。隨后,基于分解過的用戶特征對用戶進行層次聚類,并用聚類簇的均值向量作為代表該聚類簇中用戶的特征信息。這種做法在不破壞聚類簇內(nèi)用戶相似性的基礎(chǔ)上通過求聚類簇的均值將簇內(nèi)用戶的特征融合,適當為用戶特征引入多樣性,從而避免推薦過于乏味單一導(dǎo)致長久以來用戶對自己感興趣的事物產(chǎn)生疲勞。之后,算法利用得到的用戶特征聯(lián)合情境特征信息組成多維度的特征并利用貝葉斯模型對推薦應(yīng)用的概率進行預(yù)測,從而得到應(yīng)用關(guān)于推薦概率降序排列的推薦應(yīng)用列表,實現(xiàn)向用戶進行更加高質(zhì)量的應(yīng)用推薦。與此同時,算法可以應(yīng)對隨時間發(fā)生改變的用戶情境特征,從而使得推薦具有實時性。
本文基于分布式架構(gòu)實現(xiàn)了所提出的推薦系統(tǒng),并通過充分的測試數(shù)據(jù)驗證,表明系統(tǒng)在具備準確的應(yīng)用推薦能力的同時,同樣具備運行的高效性與穩(wěn)定性,為所提出推薦系統(tǒng)的應(yīng)用打下堅實基礎(chǔ)。