丁 恒, 黃全舟
(西安石油大學(xué) 計(jì)算機(jī)學(xué)院, 西安 710065)
當(dāng)今正處在信息時(shí)代,每天都有各式各樣的信息不斷涌來(lái),信息過(guò)載問(wèn)題日益嚴(yán)重。目前,個(gè)性化推薦技術(shù)[1]是解決這一問(wèn)題的有力工具。個(gè)性化推薦技術(shù)是建立在大量的用戶(hù)行為數(shù)據(jù)之上的,有了用戶(hù)行為數(shù)據(jù)的強(qiáng)力依托,其身影遍布于互聯(lián)網(wǎng)各類(lèi)網(wǎng)站中,并已在電影、電子商務(wù)、圖書(shū)、音樂(lè)等領(lǐng)域取得了顯著的成效。推薦算法種類(lèi)繁多,其中協(xié)同過(guò)濾推薦算法在個(gè)性化推薦中得到了更為廣泛的應(yīng)用[2]。
近年來(lái),隨著旅游產(chǎn)業(yè)規(guī)模日漸龐大,大量旅游信息相繼產(chǎn)生,研究學(xué)界即已開(kāi)始將個(gè)性化推薦技術(shù)應(yīng)用于旅游行業(yè)。如何從海量數(shù)據(jù)中挖據(jù)出高質(zhì)量的旅游信息提供給用戶(hù)?協(xié)同過(guò)濾算法將是一個(gè)不錯(cuò)的選擇。本文在傳統(tǒng)協(xié)同過(guò)濾算法的基礎(chǔ)上,考慮了項(xiàng)目屬性對(duì)相似度計(jì)算的影響,提出了一種基于屬性特征的協(xié)同過(guò)濾算法,并將其應(yīng)用于個(gè)性化旅游推薦中,以提升旅游推薦的質(zhì)量。
協(xié)同過(guò)濾算法通過(guò)其它用戶(hù)的偏好,找出與目標(biāo)用戶(hù)興趣相似的用戶(hù)所喜好的物品,然后進(jìn)行推薦。協(xié)同過(guò)濾算法有基于記憶(內(nèi)存)的協(xié)同過(guò)濾和基于模型的協(xié)同過(guò)濾兩大類(lèi)。
研究可知,基于記憶的協(xié)同過(guò)濾算法可分為:基于用戶(hù)的協(xié)同過(guò)濾算法和基于項(xiàng)目的協(xié)同過(guò)濾算法。本節(jié)也將對(duì)這2種協(xié)同過(guò)濾算法進(jìn)行概述分析。
(1)基于用戶(hù)的協(xié)同過(guò)濾算法。作為最基本的推薦算法,基于用戶(hù)的協(xié)同過(guò)濾算法最先被應(yīng)用于推薦系統(tǒng)中[3]?;谟脩?hù)的協(xié)同過(guò)濾算法由用戶(hù)的興趣產(chǎn)生推薦,其基本思想是依據(jù)用戶(hù)對(duì)物品的偏好找出與其興趣相似的鄰居用戶(hù),再將鄰居用戶(hù)偏愛(ài)的、且目標(biāo)用戶(hù)不曾涉及到的物品推薦給目標(biāo)用戶(hù)。
(2)基于項(xiàng)目的協(xié)同過(guò)濾算法。該算法目前在互聯(lián)網(wǎng)行業(yè)的應(yīng)用很普及,Amazon、YouTube、Hulu的推薦算法都是由此演化而來(lái)。算法是依據(jù)項(xiàng)目之間的共性來(lái)進(jìn)行協(xié)同過(guò)濾,其基本思想是分析用戶(hù)的歷史偏好,將用戶(hù)以往所喜歡物品的相似物品推薦給用戶(hù)。
(1)精確性問(wèn)題。擁有高精確性的推薦算法能為用戶(hù)提供更加精準(zhǔn)的推薦,提升用戶(hù)滿(mǎn)意度??煽康耐扑]結(jié)果是一個(gè)推薦系統(tǒng)賴(lài)以生存的關(guān)鍵。顯然,如果一個(gè)推薦系統(tǒng)不能產(chǎn)生優(yōu)質(zhì)的推薦,就會(huì)失去大量的用戶(hù)。
(2)數(shù)據(jù)稀疏性問(wèn)題。相似度的計(jì)算依賴(lài)于用戶(hù)-項(xiàng)目評(píng)分矩陣,然而用戶(hù)只是對(duì)少量的項(xiàng)目進(jìn)行了評(píng)分,相對(duì)比例僅為1% ~ 2%[4]。這就造成評(píng)分矩陣過(guò)于稀疏,用戶(hù)尋找相似鄰居成為難題,大大降低了推薦的質(zhì)量。
(3)冷啟動(dòng)問(wèn)題。隨著新用戶(hù)、新項(xiàng)目的不斷加入,但在此之前并沒(méi)有任何有關(guān)新加入用戶(hù)或是新加入項(xiàng)目的記錄,從而導(dǎo)致系統(tǒng)無(wú)法進(jìn)行推薦。
協(xié)同過(guò)濾算法所涉及的數(shù)據(jù)為用戶(hù)對(duì)項(xiàng)目的歷史評(píng)分?jǐn)?shù)據(jù),可以將這些數(shù)據(jù)用m×n的評(píng)分矩陣R來(lái)表示,其中,m表示用戶(hù)數(shù),n表示項(xiàng)目數(shù),u表示用戶(hù),i表示項(xiàng)目,rij表示用戶(hù)ui對(duì)項(xiàng)目ij的評(píng)分值,評(píng)分值一般用整數(shù)1~5來(lái)表示(0表示用戶(hù)未對(duì)該項(xiàng)目進(jìn)行評(píng)價(jià)),評(píng)分越高則用戶(hù)越喜歡。研究中給出了一個(gè)用戶(hù)-項(xiàng)目評(píng)分矩陣的樣例見(jiàn)表1。
表1 用戶(hù)-項(xiàng)目評(píng)分矩陣
最近鄰的選取是協(xié)同過(guò)濾算法中至關(guān)重要的一部分,并直接影響著預(yù)測(cè)的準(zhǔn)確度,下面,將基于用戶(hù)的協(xié)同過(guò)濾算法作為例子,對(duì)最近鄰集合的產(chǎn)生過(guò)程進(jìn)行論述。首先,通過(guò)有關(guān)公式計(jì)算出不同用戶(hù)與目標(biāo)用戶(hù)u的相似性,由此找出與u最為相似的k個(gè)最近鄰所組成的最近鄰集合Ku={u1,u2,...,uk}。常見(jiàn)的相似度計(jì)算方法有:余弦相似性、歐幾里得距離、Pearson相關(guān)相似性。本文僅選取同等條件下性能相對(duì)優(yōu)越的Pearson相關(guān)相似性進(jìn)行說(shuō)明[5],Pearson相關(guān)相似性的數(shù)學(xué)定義即如式(1)所示:
(1)
在得到k最近鄰集合后,可根據(jù)集合中相似用戶(hù)的數(shù)據(jù)對(duì)目標(biāo)用戶(hù)未評(píng)分的項(xiàng)目進(jìn)行評(píng)分預(yù)測(cè),并將預(yù)測(cè)評(píng)分從高到低進(jìn)行排序,從而生成top-N推薦給目標(biāo)用戶(hù)進(jìn)行選擇。具體計(jì)算如表達(dá)式(2)所示:
(2)
其中,sim(x,u)是通過(guò)相似度計(jì)算公式所得出的兩用戶(hù)之間的相似性,ku表示用戶(hù)u的最近鄰集合。
基于項(xiàng)目的協(xié)同過(guò)濾算法預(yù)測(cè)和推薦過(guò)程與此基本類(lèi)似,這里,僅詳細(xì)探討闡述了基于用戶(hù)的協(xié)同過(guò)濾算法研究。
傳統(tǒng)的協(xié)同過(guò)濾算法基于項(xiàng)目整體評(píng)分進(jìn)行相似度的計(jì)算,并沒(méi)有衡量項(xiàng)目各屬性對(duì)推薦結(jié)果的影響,這樣的推薦往往不夠準(zhǔn)確。結(jié)合屬性特征從多個(gè)維度進(jìn)行分析計(jì)算能提升整個(gè)算法的精度,使推薦的結(jié)果更能符合用戶(hù)需求。同時(shí),結(jié)合屬性特征能夠很好地解釋用戶(hù)為什么喜歡這些項(xiàng)目,體現(xiàn)不同用戶(hù)所重視的不同方面,從而進(jìn)行個(gè)性化的推薦。
下面將結(jié)合旅游這一領(lǐng)域,通過(guò)2個(gè)具體的例子來(lái)進(jìn)行說(shuō)明,內(nèi)容表述詳見(jiàn)如下。
假設(shè)有3個(gè)用戶(hù)(u1,u2,u3)和4個(gè)景點(diǎn)(i1,i2,i3,i4),其中有些景點(diǎn)評(píng)分已知,由此預(yù)測(cè)用戶(hù)u1對(duì)景點(diǎn)i4的評(píng)分。傳統(tǒng)協(xié)同過(guò)濾算法用戶(hù)-景點(diǎn)評(píng)分見(jiàn)表2。 通過(guò)表2中的數(shù)據(jù)進(jìn)行相似性計(jì)算發(fā)現(xiàn)u1和u2是相似用戶(hù),從而得出用戶(hù)u1對(duì)景點(diǎn)i4的預(yù)測(cè)評(píng)分為5分。
在表2的基礎(chǔ)上,研究給出對(duì)各個(gè)景點(diǎn)的總體評(píng)分(總體評(píng)分為各屬性評(píng)分和的平均值)以及景點(diǎn)分別在美麗、人文、休閑、刺激、特色、浪漫六個(gè)屬性上的評(píng)分,評(píng)分結(jié)果見(jiàn)表3。其中,括號(hào)內(nèi)為各屬性的評(píng)分值。
表2 傳統(tǒng)協(xié)同過(guò)濾算法用戶(hù)-景點(diǎn)評(píng)分表
Tab. 2 Traditional collaborative filtering algorithm user-site rating table
UserItemi1i2i3i4u1543?u25435u32413
表3 多屬性用戶(hù)-景點(diǎn)評(píng)分表
由表3可知,根據(jù)以往單個(gè)評(píng)分的計(jì)算來(lái)看,用戶(hù)u1和用戶(hù)u3最為相似。但在引入多屬性的評(píng)分準(zhǔn)則后,則需要從多維度進(jìn)行考慮,從而找出相似用戶(hù)。這樣不僅體現(xiàn)了用戶(hù)不同的偏好,而且所得出的推薦結(jié)果會(huì)更加令人滿(mǎn)意。顯然,用戶(hù)u1和用戶(hù)u3在各屬性的評(píng)分值上存在較大偏差,用戶(hù)u2和用戶(hù)u3各屬性值更為相似,因此u2和u3為最相似用戶(hù)??傮w評(píng)分的預(yù)測(cè)也應(yīng)該依據(jù)u2來(lái)決定。
由上述兩個(gè)例子可以看出,雖然總體的評(píng)分在一定程度上表達(dá)了用戶(hù)的喜愛(ài)程度,但多屬性的評(píng)分更能體現(xiàn)用戶(hù)對(duì)不同方面的偏好,很好地解釋了用戶(hù)喜愛(ài)的理由,使得推薦結(jié)果更加精確。因此,本文將采用基于屬性特征的方式來(lái)對(duì)傳統(tǒng)協(xié)同過(guò)濾算法進(jìn)行改進(jìn),以求能夠提升推薦的質(zhì)量,得到更多用戶(hù)的滿(mǎn)意評(píng)價(jià)。
在合理評(píng)分的前提下,景點(diǎn)的總體評(píng)分與各屬性評(píng)分之間存在一定的關(guān)聯(lián)性??傮w評(píng)分的高低是用戶(hù)對(duì)各屬性特征滿(mǎn)意程度的體現(xiàn),如果用戶(hù)對(duì)各個(gè)方面都不是很滿(mǎn)意,那么對(duì)于整體印象就會(huì)大打折扣,評(píng)分就會(huì)較低。只有在各方面都滿(mǎn)意的前提下,整體才會(huì)得到高分。因此,研究通過(guò)景點(diǎn)的多屬性特征評(píng)分來(lái)代替?zhèn)鹘y(tǒng)單一的總體評(píng)分計(jì)算各用戶(hù)之間的相似度,最終使得最近鄰集合更加準(zhǔn)確,提高推薦算法的精度。
(3)
假設(shè)用戶(hù)u和用戶(hù)v共同評(píng)分過(guò)的景點(diǎn)數(shù)目表示為I(u,v),則可用如下公式計(jì)算兩用戶(hù)間的總體距離,其數(shù)學(xué)公式可表示為:
(4)
距離和相似度之間存在反比關(guān)系,因此在使用距離來(lái)代表用戶(hù)間的相似性時(shí),擬用以下公式進(jìn)行轉(zhuǎn)換,其數(shù)學(xué)公式可表示為:
(5)
上述方法基于屬性特征,用多屬性評(píng)分的方式來(lái)代替?zhèn)鹘y(tǒng)單一的總體評(píng)分,從而改變了傳統(tǒng)協(xié)同過(guò)濾算法在相似度方面的計(jì)算方式。在下一節(jié),將通過(guò)旅評(píng)網(wǎng)上的評(píng)分?jǐn)?shù)據(jù)進(jìn)行實(shí)驗(yàn)分析,來(lái)評(píng)估這種改進(jìn)方式是否能對(duì)傳統(tǒng)協(xié)同過(guò)濾算法在計(jì)算精度上有所提高,提升推薦的質(zhì)量。
基于屬性特征的協(xié)同過(guò)濾算法的流程描述如下。
輸入:多屬性用戶(hù)-景點(diǎn)評(píng)分矩陣R,最近鄰個(gè)數(shù)k
輸出:用戶(hù)u所對(duì)應(yīng)的Top-N推薦列表
(1)利用構(gòu)建好的多屬性用戶(hù)-景點(diǎn)評(píng)分矩陣R,依據(jù)公式(3)~(5)計(jì)算出用戶(hù)間的相似度sim(u,v) ,并取最為相似的k個(gè)用戶(hù)組成最近鄰集合Ku={u1,u2,...,uk}。
(2)根據(jù)最近鄰ku集合中相似用戶(hù)的數(shù)據(jù),利用公式(2)計(jì)算出用戶(hù)u未評(píng)分景點(diǎn)i的預(yù)測(cè)評(píng)分值pu,i。
(3)將預(yù)測(cè)評(píng)分值進(jìn)行降序排列后,產(chǎn)生Top-N推薦列表給用戶(hù)進(jìn)行選擇。
實(shí)驗(yàn)中的數(shù)據(jù)取自“旅評(píng)網(wǎng)”。該網(wǎng)站用戶(hù)量充足,可提供足夠多的景點(diǎn)評(píng)分?jǐn)?shù)據(jù)。對(duì)于景點(diǎn)的評(píng)定,用戶(hù)可分別從“美麗”、“人文”、“休閑”、“刺激”、“特色”、“浪漫”六個(gè)屬性特征進(jìn)行評(píng)分,評(píng)分值區(qū)間為1-5分。采用網(wǎng)絡(luò)爬蟲(chóng)技術(shù)采集了5 216名注冊(cè)用戶(hù)對(duì)3 260個(gè)景點(diǎn)的23 563條評(píng)分?jǐn)?shù)據(jù),將數(shù)據(jù)分為訓(xùn)練集和測(cè)試集兩部分,其中80%為訓(xùn)練集,其余20%為測(cè)試集。用戶(hù)評(píng)分的數(shù)據(jù)片段見(jiàn)表4。
對(duì)表4中數(shù)據(jù)進(jìn)行預(yù)處理后,構(gòu)建多屬性特征用戶(hù)-景點(diǎn)評(píng)分矩陣。
表4 用戶(hù)評(píng)分?jǐn)?shù)據(jù)片段
本文采用平均絕對(duì)誤差MAE作為評(píng)判推薦結(jié)果優(yōu)劣的標(biāo)準(zhǔn)[6]。MAE值越小,表示該推薦算法的推薦質(zhì)量就越高,相應(yīng)的計(jì)算公式為:
(6)
其中,pi是用戶(hù)真實(shí)的評(píng)分值;qi為該算法所預(yù)測(cè)的評(píng)分值;N為預(yù)測(cè)評(píng)分的總條目數(shù)。
為了檢驗(yàn)本文所提出算法的實(shí)際推薦效果,將其與傳統(tǒng)協(xié)同過(guò)濾算法在同一數(shù)據(jù)集上進(jìn)行了比較,結(jié)果如圖1所示。
圖1 推薦算法精度比較圖
由圖1可知,本文算法在相同鄰居數(shù)目的條件下有著更小的MAE值,推薦性能顯著優(yōu)于傳統(tǒng)方法。
本文針對(duì)傳統(tǒng)協(xié)同過(guò)濾算法采用單一評(píng)分,導(dǎo)致相似度計(jì)算存在偏差,影響整個(gè)算法的精確性。提出了一種基于屬性特征的協(xié)同過(guò)濾算法并應(yīng)用于個(gè)性化旅游推薦中,以景點(diǎn)多屬性評(píng)分代替單一評(píng)分來(lái)計(jì)算用戶(hù)間的相似性。實(shí)驗(yàn)結(jié)果表明,本文算法能夠解決推薦精確度的問(wèn)題,使推薦的質(zhì)量得到了一定程度的提升。