丁 麗,方 曉,董 娜
(亳州職業(yè)技術(shù)學(xué)院信息工程系,安徽亳州 236800)
推薦系統(tǒng)是解決現(xiàn)在信息過載問題的有效技術(shù)手段,能更好地解決互聯(lián)網(wǎng)上“噪聲”數(shù)據(jù),為用戶提供想要的信息. 推薦系統(tǒng)的核心是推薦算法,在工業(yè)界中,協(xié)同算法是目前應(yīng)用比較廣泛的技術(shù). 其主要分為三類:一是基于項(xiàng)目和用戶協(xié)同過濾算法,主要思想是利用用戶對項(xiàng)目的評分矩陣的關(guān)系,預(yù)測某一用戶對未知項(xiàng)目的評分;二是基于項(xiàng)目內(nèi)容的推薦算法,主要使用的方法是分析項(xiàng)目內(nèi)容,用標(biāo)簽來表示項(xiàng)目的特征,對于特征的提取有語義分析和統(tǒng)計(jì)的兩種方法;三是基于模型的推薦算法,主要是運(yùn)行機(jī)器學(xué)習(xí)中的眾多模型的思想來解決推薦系統(tǒng)中排序的問題.
當(dāng)前推薦系統(tǒng)存在的問題是推薦精確度不高、召回率低、數(shù)據(jù)稀疏、用戶冷啟動(dòng)等. 為解決這些問題,基于多維度融合的推薦算法已成為當(dāng)前研究的熱點(diǎn)之一. 其一,互聯(lián)網(wǎng)上的標(biāo)注技術(shù)得到飛快的發(fā)展,每個(gè)用戶或者是每個(gè)項(xiàng)目在互聯(lián)網(wǎng)上形成的數(shù)據(jù),系統(tǒng)會(huì)自動(dòng)標(biāo)注,形成特定的標(biāo)簽. 對于用戶來說,社會(huì)化標(biāo)簽是反映用戶的喜好和興趣,而對于項(xiàng)目來說則是項(xiàng)目特征的一種表現(xiàn). 在推薦算法的研究中,有許多學(xué)者把社會(huì)化標(biāo)簽融合到推薦算法當(dāng)中. 文獻(xiàn)[1]提出了基于標(biāo)簽的擴(kuò)展的途徑算法;文獻(xiàn)[2]將標(biāo)簽和協(xié)同過濾相結(jié)合,利用標(biāo)簽計(jì)算用戶對資源的喜好程度和資源相似性,得到用戶偏好矩陣進(jìn)行top_n推薦;文獻(xiàn)[3]通過挖掘用戶的標(biāo)簽的權(quán)重,產(chǎn)生用戶的個(gè)性化推薦列表. 但在這些研究中忽忽略了上下文在標(biāo)簽中的作用,即標(biāo)簽的語義. 在文本標(biāo)簽中公認(rèn)最好的模型是LDA,在文獻(xiàn)[4]中即運(yùn)用LDA 模型結(jié)合對項(xiàng)目的評分,計(jì)算相似度,得到推薦算法.
其二,隨時(shí)間的變化,用戶的喜好是會(huì)發(fā)生改變的. 用戶給項(xiàng)目打標(biāo)簽的時(shí)間越短,越能反映用戶當(dāng)前的偏好就越高;間隔時(shí)間越長,則相反. 時(shí)間與用戶偏好程一定的負(fù)相關(guān)性,因此,本文針對文獻(xiàn)[5-8],分析時(shí)間對用戶的偏好影響,計(jì)算用戶的偏好變化率,并應(yīng)用到推薦算法中,主要是在用戶-項(xiàng)目評分矩陣中分解,以提高推薦的精準(zhǔn)度.
其三,社交因素影響用戶的偏好. 在用戶間的社交關(guān)系中,運(yùn)用用戶間的社交關(guān)系數(shù)據(jù)計(jì)算用戶的關(guān)系度,從而擴(kuò)大了用戶相似的領(lǐng)域范圍. 由此可構(gòu)建用戶間的相似矩陣,再結(jié)合用戶-項(xiàng)目評分矩陣,進(jìn)行矩陣分解產(chǎn)生推薦.
本文結(jié)合上述的用戶社交關(guān)系、時(shí)間因素和文本分析三者的因素,構(gòu)建用戶偏好模型,其算法的主要思想是:首先采用LDA 模型分析標(biāo)簽之間的語義關(guān)系,得到用戶對項(xiàng)目的偏好概率;其次,結(jié)合時(shí)間因素和用戶標(biāo)簽相似性,采用動(dòng)態(tài)權(quán)重技術(shù)融入用戶-項(xiàng)目偏好模型中;再次,將用戶間社交關(guān)系度融合到用戶對項(xiàng)目偏好概率的計(jì)算中;最后通過用戶-項(xiàng)目偏好矩陣產(chǎn)生推薦集合.
在一個(gè)推薦系統(tǒng)中,項(xiàng)目集合G={g1,g2,…gn}和用戶集合U={u1,u2…um},通過推薦算法技術(shù)來預(yù)測用戶對項(xiàng)目的評分,即:
其中f(uj,uk)表示用戶uj∈U對項(xiàng)目gk∈G的預(yù)測評分,R(uj)為用戶uj的推薦項(xiàng)目集合.
協(xié)同過濾算法核心思想是:利用用戶在系統(tǒng)中的歷史行為數(shù)據(jù),運(yùn)用模型計(jì)算用戶或項(xiàng)目的相似度,即:
綜上對傳統(tǒng)協(xié)同過濾算法分析可以得到,傳統(tǒng)的協(xié)同過濾算法適合與復(fù)雜非結(jié)構(gòu)化的項(xiàng)目推薦,對內(nèi)容異構(gòu)度高的項(xiàng)目有很好的適應(yīng)性,善于發(fā)現(xiàn)新的興趣點(diǎn),但對數(shù)據(jù)稀疏和冷啟動(dòng)沒有很好地解決. 用戶-項(xiàng)目評分矩陣是協(xié)同過濾算法的基礎(chǔ),在數(shù)據(jù)稀疏以及在新用戶加入、沒有評分?jǐn)?shù)據(jù)情況下,利用推薦算法推薦出的項(xiàng)目集是不準(zhǔn)確的.
本文模型(UTGLDA)的主要思想是:運(yùn)用LDA模型構(gòu)建用戶-商品UG矩陣,通過時(shí)間因素計(jì)算用戶間的相似度sim(u,v),依據(jù)用戶間相似度,推薦給top_n商品集、用戶-標(biāo)簽矩陣UT和標(biāo)簽-商品矩陣TG,算法主要步驟如下:
Setp1:構(gòu)建用戶-標(biāo)簽矩陣UT和標(biāo)簽-商品矩陣TG.
Setp2:通過LDA 主題模型計(jì)算得到用戶-商品矩陣UTG.
Setp3:融合時(shí)間因素計(jì)算用戶相似度sim(u,v).
Setp4:依據(jù)用戶間相似度得到推薦商品集top_n.
LDA 是自然語言處理領(lǐng)域中的主題模型,每篇文檔中每個(gè)主題以概率分布的形式給出,從而分析文檔,抽取主題,并進(jìn)行聚類,對文檔進(jìn)行分類. 在LDA 建模中,首先計(jì)算標(biāo)簽主題在每篇文檔中的分布p(z/d),其次計(jì)算標(biāo)簽在標(biāo)簽主題上的分布p(t/z),即:
其中:K為標(biāo)簽主題數(shù)目,zi為標(biāo)簽主題,t為標(biāo)簽,d表示標(biāo)簽類比文檔.
首先構(gòu)建用戶-標(biāo)簽矩陣和標(biāo)簽-商品矩陣,其次通過LDA 主題模型,計(jì)算得到標(biāo)簽主題下用戶的分布概論p(z/u)和每個(gè)標(biāo)簽主題下特定標(biāo)簽的分布概論p(t/z),然后根據(jù)公式(3)計(jì)算特定標(biāo)簽下用戶的概論分布p(t/u). 同理可計(jì)算特定標(biāo)簽下商品的概論分布p(t/g):
式中g(shù)為商品.
標(biāo)簽是一個(gè)系統(tǒng)中為研究某一對象的行為關(guān)系給定的特有的屬性,標(biāo)簽有多重含義或是行為、屬性、關(guān)系等. 在個(gè)性化推薦系統(tǒng)中,標(biāo)簽有顯性和隱性之分.設(shè)標(biāo)簽主題集合Z={z1,z2,…zk},標(biāo)簽集合T={t1,t2…tl},UT是n×k矩陣(n為用戶數(shù)),表示為X=[X1,X2…XK],則xi,j表示為:
式中c為用戶ui在標(biāo)簽主題zj中使用標(biāo)簽的次數(shù).
同理,標(biāo)簽-商品GT矩陣是k×m矩陣(m為用戶數(shù)),表示為Y=[Y1,Y2…YK]T,則yi,j表示為:
其中g(shù)c為商品gj在標(biāo)簽主題zi中使用標(biāo)記的次數(shù).
首先對用戶-標(biāo)簽矩陣UT利用LDA分析技術(shù),得到用戶U的主題分布概率p(z/u),同時(shí)得到每個(gè)主題Z的標(biāo)簽分布概率p(t/z),根據(jù)公式(4)得到用戶-標(biāo)簽分布概率矩陣p(t/u).然后利用LDA分析技術(shù)得到標(biāo)簽的主題分布概率p(z/t),同時(shí)可以得到主題下的項(xiàng)目分布概率p(g/z),根據(jù)公式(4)可以得到標(biāo)簽的項(xiàng)目分布矩陣p(g/t). 則根據(jù)公式(4)可求得在標(biāo)簽tk下用戶U對項(xiàng)目G的偏好概率:
同理,一個(gè)用戶對項(xiàng)目整個(gè)偏好概率為:
用戶的偏好會(huì)隨時(shí)間的推移而發(fā)生變化,在傳統(tǒng)的協(xié)同過濾算法中沒有考慮到時(shí)間的因素,因此本文研究中引入時(shí)間因素. 設(shè)當(dāng)前時(shí)間點(diǎn)為Tn,在時(shí)間Ts時(shí)用戶u1對項(xiàng)目g進(jìn)行標(biāo)注;而在時(shí)間Tn時(shí),用戶u2和u3對項(xiàng)目g也進(jìn)行標(biāo)注. 因此,用戶相似度sim(u2,u1)小于sim(u2,u3),可利用公式
計(jì)算時(shí)間權(quán)重,式中α即為時(shí)間權(quán)重參數(shù).
將時(shí)間因素引入用戶相似度計(jì)算公式中,可減少真實(shí)用戶相似度與理論用戶相似度之間的誤差.把用戶對項(xiàng)目的標(biāo)記代替協(xié)同過濾算法中用戶對項(xiàng)目的打分,結(jié)合時(shí)間因素權(quán)重,根據(jù)皮爾斯用戶相似度計(jì)算公式得:
式中:sim(ui,uj)為用戶ui和uj為時(shí)間因素下的相似度,wtui,g為用戶ui對項(xiàng)目g標(biāo)注的時(shí)間權(quán)重,nui,g為用戶ui對項(xiàng)目g的標(biāo)記次數(shù).
用戶ui和uj之間的相似度定義權(quán)重wi,j,用戶ui對項(xiàng)目g的偏好概率p(g/ui),即用戶uj在用戶ui影響下對項(xiàng)目g的偏好概率為:
若用戶集合規(guī)模為N,那么,用戶uj對項(xiàng)目g的偏好概率為:
由公式(12)得到用戶-項(xiàng)目的偏好矩陣,然后對矩陣的值進(jìn)行排序,取排名靠前的N個(gè)項(xiàng)目推薦給用戶,當(dāng)新用戶加入用戶集合時(shí),將標(biāo)記次數(shù)高的項(xiàng)目推薦給用戶,避免推薦中的冷啟動(dòng)問題.
實(shí)驗(yàn)數(shù)據(jù)集采用delicious-2k,數(shù)據(jù)集有用戶對bookmark 的標(biāo)記信息、用戶間的關(guān)系、bookmark 的標(biāo)題和url,具體數(shù)據(jù)如表1.
表1 delicious-2k數(shù)據(jù)集信息
首先對數(shù)據(jù)集進(jìn)行預(yù)處理,剔除用戶標(biāo)記數(shù)少于37 的用戶,然后按照標(biāo)記時(shí)間進(jìn)行排序,按照前75%為訓(xùn)練集,后25%為測試集,14 次實(shí)驗(yàn)求平均值.
本文采用分類準(zhǔn)確率這一評價(jià)指標(biāo),其中包括準(zhǔn)確率、召回率和F1衡量指標(biāo)[9].
準(zhǔn)確率是標(biāo)記項(xiàng)目數(shù)與總項(xiàng)目數(shù)的比重,即:
其中:Ntag為用戶u的標(biāo)記過的項(xiàng)目總數(shù),N為用戶u的項(xiàng)目集合數(shù)目.
召回率是指用戶標(biāo)記過的項(xiàng)目數(shù)與理論上可能標(biāo)記的最大值的比重,即:
式中Ntest為用戶在測試集中可能的項(xiàng)目最大推薦數(shù)值.
F1是對召回率recall和準(zhǔn)確率precision的加權(quán)平均,以平衡兩者之間的誤差:
F1的值越大,反應(yīng)模型的效果越佳.
依據(jù)文獻(xiàn)和實(shí)際實(shí)驗(yàn)總結(jié),對LDA 中參數(shù)α和η的取值分別為0.1和0.01,迭代次數(shù)為600.
(1)LDA 主題數(shù)與F1的關(guān)系分析. 將LDA 主題數(shù)目分別取值20、40、60、80、100,推薦項(xiàng)目數(shù)topN取不同值時(shí),F(xiàn)1值發(fā)生變化,如圖1所示.
從圖1 可以看出,F(xiàn)1值隨LDA 主題數(shù)目變化而變化,且有整體上升趨勢. 但在topN=45 時(shí)波動(dòng)范圍較大,LDA 在達(dá)到100 時(shí)F1值最大. 實(shí)驗(yàn)發(fā)現(xiàn),隨著LDA 數(shù)目增加,建模的時(shí)間復(fù)雜度隨之增加. 以topN=55 為例,LDA 主題建模消耗時(shí)間與數(shù)目之間的關(guān)系如表2所示.
表2 消耗時(shí)間表
圖1 LDA主題數(shù)與F1的變化關(guān)系
(2)項(xiàng)目推薦數(shù)目N與F1關(guān)系分析. 設(shè)N分別為35、45、55、65、75,LDA 主題數(shù)目分別為20、40、60、80、100進(jìn)行5組實(shí)驗(yàn),結(jié)果如圖2所示.
圖2 項(xiàng)目推薦數(shù)目N與F1變化關(guān)系
從圖2 可以看出,隨著N的變化,F(xiàn)1值發(fā)生改變,N值增加,F(xiàn)1趨勢性增加;但F1值整體趨勢在N=45 和N=55 間出現(xiàn)遞減現(xiàn)象. 本文確定N=50為最佳項(xiàng)目推薦數(shù)目.
為了驗(yàn)證UTGLDA 算法的質(zhì)量,與其他3 種常見的推薦算法進(jìn)行對比分析.它們分別是:(1)PB推薦算法(Profile-based),該算法主要在user 與user 之間計(jì)算相似性,然后將相似度高推薦給目標(biāo)用戶[10].(2)傳統(tǒng)的協(xié)同過濾算法CF,該方法直接利用用戶關(guān)系間聯(lián)系,計(jì)算用戶間的相似性,然后推薦前topN個(gè)最相似的用戶給目標(biāo)用戶.(3)基于主題模型的個(gè)性化推薦算法LDA[11].
在delicious-2k 數(shù)據(jù)集上,以75%為訓(xùn)練集,25%為測試集,各算法在不同推薦項(xiàng)目數(shù)(top35、top45、top55、top65、top75)下的F1指標(biāo)對比分析如圖3所示.
從圖3 可以看出,隨著topN的變換,F(xiàn)1值也隨之改變,4 種算法在本實(shí)驗(yàn)中F1值的趨同性是一致的.不同的topN下本文的UTGLDA 算法優(yōu)于其他3 種算法.
圖3 不同算法的F1指標(biāo)對比
LDA 推薦算法主要是挖掘用戶-項(xiàng)目的潛在信息,相比CF 算法在用戶和項(xiàng)目的相似度上的計(jì)算,推薦質(zhì)量有所提高. 而本文的UTGLDA 算法在LDA 技術(shù)的基礎(chǔ)上,從時(shí)間維度上對用戶和項(xiàng)目標(biāo)記次序進(jìn)行計(jì)算,融合時(shí)間權(quán)重,更能體現(xiàn)用戶偏好的先進(jìn)性和有效性,因此本文提出的UTGLDA 推薦算法有效地提高了推薦質(zhì)量.
在推薦系統(tǒng)中,用戶與用戶之間的社交關(guān)系對用戶的偏好度有著重要的影響,隨時(shí)間的推移用戶間的社交關(guān)系也隨之改變. 本文把時(shí)間因素融合到用戶間相似度計(jì)算中,使用LDA 技術(shù)建立偏好算法模型,增強(qiáng)推薦的有效性,提高推薦的質(zhì)量.
下一步研究重點(diǎn)將在用戶評論和項(xiàng)目評論的社交數(shù)據(jù)的基礎(chǔ)上,通過文本分析技術(shù)挖掘用戶間的社交關(guān)系的程度和社交主題,計(jì)算用戶的偏好概率,更好反映現(xiàn)實(shí)用戶的偏好情況,有效提高系統(tǒng)推薦質(zhì)量.