趙晨陽(yáng),王俊嶺
(1.河南工業(yè)大學(xué)信息科學(xué)與工程學(xué)院,河南 鄭州 450001;2.河南工業(yè)大學(xué)理學(xué)院,河南 鄭州 450001)
Web 服務(wù)是自描述的軟件實(shí)體,可以通過(guò)互聯(lián)網(wǎng)發(fā)布、定位和使用,服務(wù)計(jì)算和云計(jì)算技術(shù)的快速發(fā)展使Web 服務(wù)成為IT 資源共享的重要手段之一。然而,隨著具有相同功能而服務(wù)質(zhì)量各異的服務(wù)在互聯(lián)網(wǎng)上井噴式涌現(xiàn),用戶很難找到他們需要的服務(wù),從而造成“信息過(guò)載”問(wèn)題。推薦系統(tǒng)被認(rèn)為是解決該問(wèn)題的方法之一。
目前,國(guó)內(nèi)外研究者對(duì)服務(wù)推薦問(wèn)題已經(jīng)做了大量的工作,并取得了一些重要的成果。根據(jù)推薦算法工作機(jī)制的不同,可以將當(dāng)前主流的服務(wù)推薦方法分為基于內(nèi)容的服務(wù)推薦、基于協(xié)同過(guò)濾的服務(wù)推薦、混合服務(wù)推薦、上下文感知的服務(wù)推薦及其他相關(guān)的服務(wù)推薦方法。
早期的服務(wù)推薦方法研究主要集中于基于內(nèi)容的服務(wù)推薦。它的基本思想是主動(dòng)提取用戶已使用服務(wù)的特征,利用這些特征建立用戶偏好模型,然后將待推薦服務(wù)的特性與用戶偏好模型比較,找出符合用戶偏好的服務(wù)向用戶推薦。Shu 等[1]根據(jù)用戶對(duì)多媒體學(xué)習(xí)資源的個(gè)性化需求,提出一種基于內(nèi)容的服務(wù)推薦方法?;趦?nèi)容的推薦方法抽取某些服務(wù)的內(nèi)容特征比較困難,因此其應(yīng)用范圍具有局限性。基于協(xié)同過(guò)濾的服務(wù)推薦方法不存在該問(wèn)題,它是目前應(yīng)用最為廣泛和成功的方法。該推薦方法主要分為基于內(nèi)存的方法和基于模型的方法?;趦?nèi)存的方法包括基于用戶的方法和基于服務(wù)的方法,兩者都使用近鄰技術(shù)預(yù)測(cè)用戶未使用服務(wù)的評(píng)分,然后為用戶推薦具有較高評(píng)分的服務(wù)。Li等[2]使用MapReduce大數(shù)據(jù)處理平臺(tái)實(shí)現(xiàn)了一種基于服務(wù)的協(xié)同推薦算法,該算法與傳統(tǒng)的協(xié)同過(guò)濾算法相比,在處理大數(shù)據(jù)集時(shí)具有較好的效率。Li 等[3]提出了一種帶有隱私保護(hù)的基于服務(wù)的協(xié)同過(guò)濾方法。AI-Hassan 等[4]結(jié)合本體相似性和基于服務(wù)的協(xié)同過(guò)濾技術(shù),提出了一種語(yǔ)義增強(qiáng)的混合旅游服務(wù)推薦方法。孟恒羽等[5]提出一種基于改進(jìn)K近鄰模型的協(xié)同過(guò)濾推薦算法,將傳統(tǒng)的協(xié)同過(guò)濾算法和改進(jìn)的K 近鄰算法相結(jié)合?;谀P偷姆?wù)推薦方法是另外一種類型的協(xié)同過(guò)濾推薦方法。該方法首先建立了一個(gè)基于用戶歷史數(shù)據(jù)的預(yù)測(cè)模型,然后利用該模型預(yù)測(cè)用戶對(duì)未使用服務(wù)的偏好程度,從而為用戶做出推薦。該方法采用的預(yù)測(cè)模型主要包括線性回歸、支持向量機(jī)(SVM,support vector machine)、神經(jīng)網(wǎng)絡(luò)、貝葉斯模型、矩陣分解、深度學(xué)習(xí)等。李改等[6]提出了一種基于評(píng)分預(yù)測(cè)與排序預(yù)測(cè)的協(xié)同過(guò)濾算法,該算法采用概率矩陣分解技術(shù)。Kushwaha 等[7]提出一種基于概率矩陣分解的語(yǔ)義推薦系統(tǒng)。Ren 等[8]提出了一種基于SVM 的協(xié)同過(guò)濾服務(wù)推薦算法。Oku 等[9]結(jié)合SVM,提出了一種上下文感知的服務(wù)推薦方法。Ma 等[10]利用用戶偏好信息的差異提出了一種偏好增強(qiáng)的SVM,用于分類問(wèn)題。Wei 等[11]提出一種結(jié)合協(xié)同過(guò)濾方法和深度神經(jīng)網(wǎng)絡(luò)的電影服務(wù)推薦方法,用于解決新服務(wù)問(wèn)題。黃立威等[12]對(duì)基于深度學(xué)習(xí)的推薦系統(tǒng)研究進(jìn)行了綜述和比較。
為了發(fā)揮多種推薦方法的優(yōu)勢(shì),近年來(lái),許多研究者關(guān)注混合推薦方法,該方法使用2 種或多種不同推薦技術(shù),或者與其他技術(shù)相結(jié)合進(jìn)行服務(wù)推薦。Yao 等[13]考慮到用戶相似性和服務(wù)語(yǔ)義內(nèi)容的相似性,提出了一種混合服務(wù)推薦方法。Afify 等[14]結(jié)合基于模型和基于內(nèi)存的協(xié)同過(guò)濾方法,提出了一種混合的云服務(wù)推薦方法。同時(shí),為了進(jìn)一步提高服務(wù)推薦的個(gè)性化和精度,近年來(lái),出現(xiàn)了上下文感知服務(wù)推薦方法,這些上下文主要包括時(shí)間、位置、同伴、信任關(guān)系等信息。Zhao 等[15]基于上下文和用戶信任關(guān)系,提出一種視頻推薦算法。Yin 等[16]基于用戶的信任模型,提出一種大數(shù)據(jù)云服務(wù)推薦方法。
雖然上述服務(wù)推薦方法在服務(wù)推薦領(lǐng)域做出了重要貢獻(xiàn),但仍然存在一些問(wèn)題,主要表現(xiàn)在以下3 個(gè)方面。第一,目前多數(shù)推薦方法對(duì)目標(biāo)用戶所有未使用服務(wù)的偏好值進(jìn)行整體預(yù)測(cè),這種預(yù)測(cè)包含了對(duì)目標(biāo)用戶不感興趣服務(wù)的預(yù)測(cè),這是不必要的,因此這種基于預(yù)測(cè)的推薦方法往往比較耗時(shí)。第二,多數(shù)推薦方法基于用戶的歷史數(shù)據(jù)進(jìn)行推薦,事實(shí)上,用戶的歷史數(shù)據(jù)與特定的上下文信息存在一定的關(guān)聯(lián),因此,推薦方法需要引入上下文信息以提高推薦精度。第三,多數(shù)推薦方法在計(jì)算用戶相似度時(shí),僅使用用戶的歷史行為數(shù)據(jù),很少使用用戶的人口統(tǒng)計(jì)學(xué)信息,因此,在推薦方法中需要引入用戶人口統(tǒng)計(jì)學(xué)信息以提高相似度計(jì)算精度,并緩解冷啟動(dòng)問(wèn)題。
為了解決上述問(wèn)題,本文借鑒現(xiàn)有的研究成果,提出了一種基于隱含上下文支持向量機(jī)的服務(wù)推薦方法(SRM-CESVM,service recommendation method based on context-embedded support vector machine)。與其他推薦方法相比,本文所提方法具有以下特點(diǎn)。第一,根據(jù)上下文信息,修正用戶評(píng)分矩陣,使其帶有隱含的上下文信息;將帶有上下文信息的服務(wù)評(píng)分向量作為服務(wù)的特征向量,使用SVM 構(gòu)造用戶分類超平面對(duì)服務(wù)進(jìn)行分類。采用隱含上下文信息的服務(wù)特征向量不僅使上下文信息在服務(wù)分類中起到指導(dǎo)作用,而且不會(huì)增加服務(wù)特征向量的維數(shù),因此不會(huì)增加支持向量機(jī)的計(jì)算復(fù)雜度。第二,分類超平面將用戶不感興趣的服務(wù)從待推薦服務(wù)集合中分離出來(lái),在計(jì)算用戶對(duì)未評(píng)分服務(wù)的偏好程度,即預(yù)測(cè)未評(píng)分服務(wù)的評(píng)分時(shí),可以只考慮用戶感興趣的未評(píng)分服務(wù),從而極大地縮短了算法的計(jì)算時(shí)間。第三,考慮從目標(biāo)用戶的歷史評(píng)分?jǐn)?shù)據(jù)和相似用戶2 個(gè)方面為目標(biāo)用戶做出服務(wù)推薦。首先,根據(jù)SVM 預(yù)測(cè)模型選出目標(biāo)用戶較為感興趣的候選推薦服務(wù)集合;然后,根據(jù)目標(biāo)用戶的相似用戶的服務(wù)推薦得出另一個(gè)候選推薦服務(wù)集合;最后,綜合2 個(gè)候選推薦服務(wù)集合得出最終的服務(wù)推薦集合。
SRM-CESVM 模型如圖1 所示。用戶使用服務(wù)后,通常會(huì)顯式地為服務(wù)給出一個(gè)評(píng)價(jià)分?jǐn)?shù),以此表達(dá)該用戶對(duì)已使用服務(wù)的滿意程度,從而形成用戶評(píng)分?jǐn)?shù)據(jù)。對(duì)于某目標(biāo)用戶,服務(wù)集合被分為兩部分:用戶使用過(guò)的服務(wù)集合(已評(píng)分服務(wù)集合)和用戶未使用的服務(wù)集合(未評(píng)分服務(wù)集合)。
圖1 SRM-CESVM 模型
一方面,將目標(biāo)用戶已評(píng)分服務(wù)集合作為訓(xùn)練集,利用SVM 構(gòu)造目標(biāo)用戶的SVM 預(yù)測(cè)模型。然后,結(jié)合目標(biāo)用戶推薦時(shí)所處的上下文信息,根據(jù)分類超平面,將未評(píng)分服務(wù)集合分為2 個(gè)部分:用戶感興趣的服務(wù)集合和用戶不感興趣的服務(wù)集合。對(duì)于目標(biāo)用戶不感興趣的服務(wù)集合直接過(guò)濾,不需要預(yù)測(cè)目標(biāo)用戶對(duì)這些服務(wù)的評(píng)分值。而對(duì)于用戶感興趣的服務(wù)集合,則結(jié)合服務(wù)所對(duì)應(yīng)的服務(wù)特征向量點(diǎn)與超平面的距離預(yù)測(cè)目標(biāo)用戶對(duì)這些服務(wù)的偏好程度,給出預(yù)測(cè)值,并根據(jù)預(yù)測(cè)值的大小排序,排名靠前的服務(wù)組成一個(gè)候選推薦服務(wù)集合。
另一方面,根據(jù)目標(biāo)用戶與其他用戶的SVM預(yù)測(cè)模型的相似性及目標(biāo)用戶與其他用戶的人口統(tǒng)計(jì)學(xué)信息,計(jì)算目標(biāo)用戶與其他用戶的相似度,得出目標(biāo)用戶的最近鄰相似用戶集合。結(jié)合目標(biāo)用戶推薦時(shí)所處的上下文信息,將相似用戶感興趣且已使用的,同時(shí)目標(biāo)用戶未使用的服務(wù)組成目標(biāo)用戶的另一個(gè)候選推薦服務(wù)集合。最后,綜合兩類候選推薦服務(wù)集合,為目標(biāo)用戶給出合理的服務(wù)推薦。
本節(jié)詳細(xì)描述SRM-CESVM。首先,按照?qǐng)?zhí)行的先后順序介紹方法的具體步驟;然后,對(duì)推薦方法進(jìn)行整體描述。
用戶評(píng)分矩陣記錄了用戶對(duì)服務(wù)的評(píng)分?jǐn)?shù)據(jù)。設(shè)推薦系統(tǒng)中存在m個(gè)用戶和n個(gè)服務(wù),則用戶評(píng)分矩陣的定義如式(1)所示。
其中,ri,j為用戶ui對(duì)服務(wù)sj的評(píng)分,0≤i≤m,0≤j≤n。ri,j=0,表示用戶ui沒(méi)有使用過(guò)服務(wù)sj,即對(duì)服務(wù)sj沒(méi)有進(jìn)行過(guò)評(píng)分,服務(wù)sj屬于用戶ui的待推薦服務(wù)集合;ri,j> 0,表示用戶ui使用過(guò)服務(wù)sj,即對(duì)服務(wù)sj進(jìn)行過(guò)評(píng)分,其值越大說(shuō)明用戶對(duì)該服務(wù)越滿意,服務(wù)sj屬于用戶ui的訓(xùn)練服務(wù)集合。
由于用戶評(píng)分的服務(wù)數(shù)量一般比較稀少,用戶評(píng)分矩陣中存在大量的零值,因此用戶評(píng)分矩陣通常十分稀疏,其稀疏程度用矩陣中非零值所占比例即用戶評(píng)分矩陣密度來(lái)度量。從而,用戶評(píng)分?jǐn)?shù)據(jù)越稀疏,零值越多,用戶評(píng)分矩陣密度越小。
在用戶評(píng)分矩陣中,用戶對(duì)服務(wù)的評(píng)分是在一定的上下文環(huán)境下做出的[15],例如,使用服務(wù)的時(shí)間、用戶所處的地點(diǎn)、當(dāng)時(shí)的天氣情況和用戶的人口統(tǒng)計(jì)學(xué)信息(性別、年齡、職業(yè)、教育背景等),本文稱這些上下文信息的集合為“評(píng)分上下文”。對(duì)于目標(biāo)用戶,如果相似用戶對(duì)某個(gè)待推薦服務(wù)的評(píng)分較高,并且評(píng)分上下文信息與目標(biāo)用戶推薦時(shí)所處的上下文信息十分相似,那么推薦系統(tǒng)為目標(biāo)用戶推薦該服務(wù)更加具有說(shuō)服力。推薦系統(tǒng)為目標(biāo)用戶推薦服務(wù)時(shí)用戶所處的上下文信息集合,本文稱之為“推薦上下文”或“實(shí)時(shí)上下文”。因此,需要修正用戶評(píng)分?jǐn)?shù)據(jù),使其帶有隱含的上下文信息,使上下文信息在服務(wù)分類中起到指導(dǎo)作用,從而進(jìn)一步提高推薦精度。
上下文信息可以通過(guò)各種傳感器、公共服務(wù)平臺(tái)或推薦服務(wù)系統(tǒng)本身提供。在本文實(shí)驗(yàn)部分,主要采用MovieLens 數(shù)據(jù)集已收集的上下文信息進(jìn)行相關(guān)實(shí)驗(yàn)。根據(jù)其取值的數(shù)據(jù)類型,上下文信息主要分為離散型上下文信息(例如教育背景、職業(yè)等)和連續(xù)型上下文信息(例如時(shí)間、年齡、溫度等)。本節(jié)對(duì)上下文信息進(jìn)行形式化描述,并提出上下文信息相似度的計(jì)算方法。
假設(shè)推薦系統(tǒng)中有L種不同類型的上下文信息,記(1 ≤i≤m,1≤j≤n)為用戶ui使用服務(wù)sj時(shí)的評(píng)分上下文信息,其中,為第k種類型的上下文信息。記是系統(tǒng)為目標(biāo)用戶推薦服務(wù)時(shí)目標(biāo)用戶所處的推薦上下文信息,其中,為第k種類型的上下文信息。定義評(píng)分上下文信息ci,j和推薦上下文信息ccurrent的相似度計(jì)算方法如式(2)所示。
如果第k種類型的上下文信息是離散型數(shù)據(jù),根據(jù)上下文信息的特點(diǎn),有2 種相似度的計(jì)算方法。如果上下文信息的所有取值具有一定的相關(guān)性,則上下文信息相似度計(jì)算方法如式(3)所示。
例如,對(duì)于離散型上下文信息“教育背景”,規(guī)定D=(1,2,3,4,5,6)分別對(duì)應(yīng)教育程度(小學(xué),初中,高中,本科,碩士,博士),這些值之間具有相關(guān)性,因此采用式(3)的計(jì)算方法,例如,博士和小學(xué)的上下文相似度為simk(博士,小學(xué))=,而simk(博士,碩士)=。其他類似的上下文信息(如天氣情況等),相似度計(jì)算方法與此類似。對(duì)于另一種離散型上下文信息“職業(yè)”,規(guī)定D=(1,2,3,4,5,6,7,8)分別對(duì)應(yīng)國(guó)家職業(yè)大類劃分的8 個(gè)類,這些值之間沒(méi)有相關(guān)性,因此采用式(4)的計(jì)算方法,例如,專業(yè)技術(shù)人員與商業(yè)人員的上下文相似度為0。對(duì)其他類似上下文信息(如性別等),相似度計(jì)算方法與此類似。
如果第k種類型的上下文信息是連續(xù)型數(shù)據(jù),首先將連續(xù)數(shù)據(jù)離散化,然后采用離散型上下文信息相似度的計(jì)算方法進(jìn)行計(jì)算。離散化方法如式(5)所示。
其中,Ti(1≤i≤N)為分段閾值點(diǎn),離散化后,上下文信息相似度的計(jì)算方法如式(3)所示。
例如,連續(xù)型上下文信息“時(shí)間”,根據(jù)距離當(dāng)前時(shí)間的間隔,以6 個(gè)月為段,將時(shí)間離散化為D=(1,2,3,4,5,6,7),分別對(duì)應(yīng)時(shí)間段(1~6 個(gè)月,7~12 個(gè)月,13~18 個(gè)月,19~24 個(gè)月,25~30 個(gè)月,31~36 個(gè)月,37 個(gè)月及以上),則simk(25~30個(gè)月,13~18個(gè)月)=,而simk(37個(gè)月及以上,1~6個(gè)月)=1-。對(duì)其他類似連續(xù)型上下文信息(如溫度等),相似度計(jì)算方法與此類似。
設(shè)用戶ui為目標(biāo)用戶,為便于描述,不失一般性,設(shè)推薦系統(tǒng)中所有服務(wù)組成的集合中前K個(gè)服務(wù)屬于目標(biāo)用戶已評(píng)分服務(wù)集合,記為Sr={sj|1≤j≤K},相應(yīng)地,Sur={sj|K+1≤j≤n}為目標(biāo)用戶未評(píng)分服務(wù)集合。
對(duì)于任意服務(wù)sj∈Sr,所有用戶對(duì)該服務(wù)的評(píng)分形成該服務(wù)的評(píng)分向量 (r1,j,r2,j,…,rk,j,…,rm,j),其分量rk,j(1≤k≤m)是用戶uk對(duì)服務(wù)sj的評(píng)分,由于目標(biāo)用戶對(duì)該服務(wù)的評(píng)分ri,j的值是確定的,即偏好確定,因此將該服務(wù)作為目標(biāo)用戶的訓(xùn)練服務(wù)。
對(duì)于任意服務(wù)sj∈Sur,所有用戶對(duì)該服務(wù)的評(píng)分形成服務(wù)的評(píng)分向量 (r1,j,r2,j,…,rk,j,…,rm,j),目標(biāo)用戶對(duì)該服務(wù)的評(píng)分ri,j的值是未知的,即沒(méi)有使用過(guò)該服務(wù),因此,將該服務(wù)作為目標(biāo)用戶的待推薦服務(wù)。
利用上下文信息的相似度修正目標(biāo)用戶評(píng)分矩陣,使其具有隱含的上下文信息,具體方法如下。
對(duì)于目標(biāo)用戶ui,從目標(biāo)用戶已評(píng)分服務(wù)和未評(píng)分服務(wù)2 個(gè)方面對(duì)用戶評(píng)分矩陣進(jìn)行修正。對(duì)于任意的已評(píng)分服務(wù)sj∈Sr,其對(duì)應(yīng)的評(píng)分向量修正時(shí),上下文相似度計(jì)算中采用的上下文信息是目標(biāo)用戶使用該服務(wù)的評(píng)分上下文和其他用戶使用該服務(wù)的上下文。對(duì)于任意的未評(píng)分服務(wù)sj∈Sur,其對(duì)應(yīng)的評(píng)分向量修正時(shí),上下文相似度計(jì)算中采用的上下文信息是為目標(biāo)用戶推薦該服務(wù)時(shí)的推薦上下文和其他用戶使用該服務(wù)時(shí)的上下文。本文實(shí)驗(yàn)中使用的上下文(評(píng)分上下文和推薦上下文)來(lái)自公開的MovieLens 數(shù)據(jù)集。本文提出的上下文修正方法的思想借鑒于蟻群算法中路徑信息素的更新規(guī)則,即保留原始評(píng)分?jǐn)?shù)據(jù)信息的同時(shí),在評(píng)分?jǐn)?shù)據(jù)中增加上下文信息,這樣既保留了原始評(píng)分信息,又融入了新的上下文因素用于推薦。
目標(biāo)用戶已評(píng)分服務(wù)sj∈Sr對(duì)應(yīng)的評(píng)分向量的修正過(guò)程如下。對(duì)于目標(biāo)用戶ui,如果服務(wù)sj是訓(xùn)練服務(wù),即sj∈Sr,說(shuō)明目標(biāo)用戶對(duì)該服務(wù)做出過(guò)評(píng)分,該評(píng)分具有評(píng)分上下文信息。因此,以目標(biāo)用戶ui使用服務(wù)sj時(shí)的評(píng)分上下文信息ci,j為參照,修改服務(wù)sj對(duì)應(yīng)的評(píng)分向量 (r1,j,r2,j,…,rk,j,…,rm,j),其修正規(guī)則如式(6)所示。
其中,ρ∈[0,1]為遺留因子,表示原始評(píng)分信息的保留程度;sim(ck,j,ci,j)為用戶uk評(píng)分服務(wù)sj時(shí)的評(píng)分上下文信息ck,j和目標(biāo)用戶ui評(píng)分服務(wù)sj時(shí)的評(píng)分上下文信息ci,j的相似度,其計(jì)算方法如式(2)所示。修正后,目標(biāo)用戶的已評(píng)分服務(wù)sj∈Sr的修正評(píng)分向量記為。
目標(biāo)用戶未評(píng)分服務(wù)sj∈Sur對(duì)應(yīng)的評(píng)分向量的修正過(guò)程如下。對(duì)于目標(biāo)用戶ui,如果服務(wù)sj是待推薦服務(wù),即sj∈Sur,說(shuō)明目標(biāo)用戶對(duì)該服務(wù)未做出過(guò)評(píng)分。應(yīng)該比較其他用戶使用服務(wù)sj時(shí)的評(píng)分上下文信息ci,j與目標(biāo)用戶ui推薦時(shí)所處的上下文信息ccurrent之間的相似性,因此,以目標(biāo)用戶ui推薦時(shí)所處的上下文信息ccurrent為參照,修改服務(wù)sj對(duì)應(yīng)的評(píng)分向量(r1,j,r2,j,…,rk,j,…,rm,j),其修正規(guī)則如式(7)所示。
其中,ρ∈[0,1]為遺留因子,sim(ck,j,ccurrent)為用戶uk評(píng)分服務(wù)sj時(shí)的評(píng)分上下文信息ck,j和目標(biāo)用戶ui推薦時(shí)所處的上下文信息ccurrent的相似度,其計(jì)算方法如式(2)所示。修正后,目標(biāo)用戶的未評(píng)分服務(wù)sj∈Sur的修正評(píng)分向量記為。
通過(guò)上述2 個(gè)方面對(duì)用戶評(píng)分矩陣的修正,使用戶對(duì)服務(wù)的評(píng)分隱含了上下文信息,有助于推薦精度的提高。修正后的隱含上下文用戶評(píng)分矩陣如式(8)所示。
隱含上下文用戶評(píng)分矩陣之所以稱為“隱含”的,其目的是不僅使上下文信息在服務(wù)分類時(shí)起到指導(dǎo)作用,而且將修正后的服務(wù)評(píng)分向量作為服務(wù)特征向量用于訓(xùn)練和推薦時(shí),不增加服務(wù)特征向量的維數(shù)和支持向量機(jī)的計(jì)算復(fù)雜度。
如上文所述,對(duì)于目標(biāo)用戶ui,為便于描述,不失一般性,將服務(wù)集合中前K個(gè)服務(wù)設(shè)為目標(biāo)用戶已評(píng)分服務(wù),它們屬于集合Sr;后n-K個(gè)服務(wù)設(shè)為目標(biāo)用戶未評(píng)分服務(wù),它們屬于集合Sur。
如圖2 所示,將所有屬于Sr的目標(biāo)用戶已評(píng)分的服務(wù)組成訓(xùn)練服務(wù)集。對(duì)于任意服務(wù)sj∈Sr,采用 3.4 節(jié)所述的修正方法得到修正評(píng)分向量,該修正評(píng)分向量作為該訓(xùn)練服務(wù)的特征向量,記為,用于訓(xùn)練目標(biāo)用戶的SVM 預(yù)測(cè)模型。于是,對(duì)于目標(biāo)用戶,記TSi=為訓(xùn)練服務(wù)集合,其中,yi,j∈{1,-1 }是服務(wù)sj是否被目標(biāo)用戶感興趣的標(biāo)簽,“1”表示感興趣,“-1”表示不感興趣。設(shè)ε為推薦系統(tǒng)設(shè)定的用戶偏好閾值,如果目標(biāo)用戶ui對(duì)服務(wù)sj的評(píng)分≥ε,則yi,j=1;否則yi,j=-1 。
圖2 訓(xùn)練服務(wù)集合和待推薦服務(wù)集合
相應(yīng)地,將所有屬于Sur的目標(biāo)用戶未評(píng)分的服務(wù)組成待推薦服務(wù)集合。對(duì)于任意服務(wù)sj∈Sur,采用 3.4 節(jié)所述的修正方法得到修正評(píng)分向量,該修正評(píng)分向量作為該待推薦服務(wù)的特征向量,記為。于是,對(duì)于目標(biāo)用戶,記為待推薦服務(wù)集合,由于=0,故不能判斷yi,j的值,需要根據(jù)訓(xùn)練好的SVM 預(yù)測(cè)模型評(píng)估目標(biāo)用戶ui對(duì)該服務(wù)的偏好程度。
對(duì)于目標(biāo)用戶ui,獲得訓(xùn)練服務(wù)集TSi后,SRM-CESVM 服務(wù)推薦方法使用SVM 為目標(biāo)用戶構(gòu)建分類超平面,求解過(guò)程本質(zhì)上是求解凸二次規(guī)劃問(wèn)題,如式(9)所示。
其中,懲罰參數(shù)C> 0,C越大對(duì)誤分類的懲罰越大;ξi> 0是松弛變量;K是訓(xùn)練服務(wù)集合TSi中服務(wù)的數(shù)量;w和b為分類超平面的法向量和截距。
通常,SVM 采用核函數(shù)的方法,將數(shù)據(jù)從低維的數(shù)據(jù)空間映射到高維的數(shù)據(jù)空間,最終求解得到如式(10)所示的分類超平面。
其中,fi(s v)是目標(biāo)用戶ui的分類超平面,φ(sv,svp)是核函數(shù),αp是支持向量svp對(duì)應(yīng)的拉格朗日乘子,nspv是支持向量的數(shù)量。
這樣,通過(guò)分類超平面fi(sv)得到了目標(biāo)用戶的SVM 預(yù)測(cè)模型。
在SVM 預(yù)測(cè)模型中,根據(jù)目標(biāo)用戶未使用服務(wù)的特征向量,通過(guò)fi(sv)可以將該服務(wù)歸屬于目標(biāo)用戶感興趣的服務(wù)集合PRSi或不感興趣的服務(wù)集合NRSi。
具體地,對(duì)于目標(biāo)用戶ui的任意一個(gè)未評(píng)分服務(wù)sj,其對(duì)應(yīng)的服務(wù)特征向量為。如果,則說(shuō)明目標(biāo)用戶對(duì)該服務(wù)不感興趣,將該服務(wù)從待推薦服務(wù)集合中刪除,不再計(jì)算其用戶偏好值,這樣可以極大地縮減算法的執(zhí)行時(shí)間。如果,說(shuō)明目標(biāo)用戶對(duì)該服務(wù)感興趣。目標(biāo)用戶對(duì)該服務(wù)的偏好程度可以用代表該服務(wù)的特征向量點(diǎn)到分類超平面的距離表示。服務(wù)的評(píng)分向量點(diǎn)離超平面距離越遠(yuǎn),表示目標(biāo)用戶對(duì)服務(wù)越感興趣。根據(jù)距離的遠(yuǎn)近對(duì)服務(wù)特征向量點(diǎn)進(jìn)行排序,然后選出距離超平面距離較遠(yuǎn)的N個(gè)服務(wù)特征向量點(diǎn)對(duì)應(yīng)的服務(wù)組成目標(biāo)用戶基于SVM 預(yù)測(cè)模型的候選推薦服務(wù)集合,記為。
目標(biāo)用戶ui與相似用戶具有相似的偏好,因此考慮相似用戶的推薦也很重要,其過(guò)程如下:首先,計(jì)算目標(biāo)用戶與其他用戶之間的相似度,找出比較相似的用戶集合;然后,將相似用戶感興趣且目標(biāo)用戶沒(méi)有使用過(guò)的服務(wù)集合推薦給目標(biāo)用戶。在本文所提推薦方法中,用戶相似度的計(jì)算通過(guò)SVM預(yù)測(cè)模型和用戶人口統(tǒng)計(jì)學(xué)信息加權(quán)獲得。用戶人口統(tǒng)計(jì)學(xué)信息是計(jì)算用戶相似度時(shí)需要考慮的重要因素,并且在用戶評(píng)分?jǐn)?shù)據(jù)稀疏或新用戶問(wèn)題中,這些信息起到十分關(guān)鍵的作用,能夠一定程度上提高推薦精度和有效地緩解算法的冷啟動(dòng)問(wèn)題。具體步驟如下。
首先,介紹基于SVM 預(yù)測(cè)模型的用戶相似度計(jì)算方法。Oku 等[9]提出用戶相似度可以通過(guò)計(jì)算用戶的SVM 模型的相似性獲得,本文借鑒該方法并做出一些改進(jìn),提出目標(biāo)用戶ui和其他用戶uj關(guān)于SVM 預(yù)測(cè)模型的用戶相似度simsvm(ui,uj)的計(jì)算方法,如式(11)所示。
然后,介紹基于人口統(tǒng)計(jì)學(xué)信息的用戶相似度計(jì)算方法。人口統(tǒng)計(jì)學(xué)信息是指用戶的年齡、性別、教育程度、職業(yè)等一系列自然與社會(huì)屬性。這些信息分為離散型信息和連續(xù)型信息。首先需要進(jìn)行數(shù)值化,具體方法類似于式(3)~式(5)的處理方法,最后采用式(12)所示的計(jì)算方法得出目標(biāo)用戶ui和用戶uj關(guān)于人口統(tǒng)計(jì)學(xué)信息的相似度 simdem(ui,uj)。
其中,H為用戶人口統(tǒng)計(jì)學(xué)信息的個(gè)數(shù),simk(ui,uj)為用戶ui與用戶uj的第k種類型的人口統(tǒng)計(jì)學(xué)信息的相似度。
通過(guò)上述方法,獲得基于SVM 預(yù)測(cè)模型的用戶相似度和基于用戶人口統(tǒng)計(jì)學(xué)信息的相似度,根據(jù)式(13)得到目標(biāo)用戶ui和用戶uj的相似度。特殊情況下,當(dāng)目標(biāo)用戶的訓(xùn)練服務(wù)數(shù)量極少或?yàn)榱銜r(shí),目標(biāo)用戶與其他用戶的相似度計(jì)算式退化為基于用戶人口統(tǒng)計(jì)學(xué)信息的相似度。
根據(jù)式(13)得到目標(biāo)用戶ui的最近鄰用戶,組成目標(biāo)用戶的相似用戶集合。對(duì)于每一個(gè)相似用戶uj,在其SVM 預(yù)測(cè)模型中,首先,選取服務(wù)特征向量點(diǎn)距離分類超平面距離大于零且該用戶感興趣同時(shí)評(píng)分過(guò)的服務(wù)。其次,從最近鄰用戶選取的服務(wù)集合中刪除重復(fù)的服務(wù),形成一個(gè)臨時(shí)服務(wù)集合。然后,對(duì)于屬于該臨時(shí)集合的任何一個(gè)服務(wù)sj,如果該服務(wù)的評(píng)分上下文和目標(biāo)用戶當(dāng)前所處上下文相似且該服務(wù)不屬于集合,則將該服務(wù)映射到目標(biāo)用戶ui的SVM 預(yù)測(cè)模型中,如果目標(biāo)用戶也對(duì)該服務(wù)感興趣,則計(jì)算服務(wù)sj的特征向量點(diǎn)到超平面fi(sv)的距離。最后,根據(jù)距離的遠(yuǎn)近進(jìn)行排序,選出前N個(gè)服務(wù),得到目標(biāo)用戶ui的相似用戶推薦的N個(gè)服務(wù),這些服務(wù)組成目標(biāo)用戶ui基于相似用戶的候選推薦服務(wù)集合,記為。
SRM-CESVM 服務(wù)推薦方法從2 個(gè)方面為目標(biāo)用戶做出最終服務(wù)推薦。這2 個(gè)方面分別來(lái)自基于SVM 預(yù)測(cè)模型的服務(wù)推薦和基于相似用戶的服務(wù)推薦。
其中,N(CSi)、分別是3個(gè)集合中服務(wù)的個(gè)數(shù),δ是選擇權(quán)重參數(shù)。CSi中的服務(wù)一部分來(lái)源于中的前個(gè)服務(wù),另一部分來(lái)源于中的前個(gè)服務(wù)。
最終的推薦結(jié)果來(lái)源于兩方面。一方面,基于目標(biāo)用戶的歷史評(píng)分?jǐn)?shù)據(jù),利用SVM 預(yù)測(cè)模型為目標(biāo)用戶進(jìn)行推薦,具有很好的解釋性,用戶更加信服。另一方面,目標(biāo)用戶與相似用戶具有相似的偏好,因此,根據(jù)相似用戶的偏好為目標(biāo)用戶進(jìn)行推薦,同樣具有很好的解釋性。值得注意的是,在特別情況下,只采用基于人口統(tǒng)計(jì)學(xué)信息的相似用戶的推薦,這是因?yàn)楫?dāng)目標(biāo)用戶的訓(xùn)練服務(wù)數(shù)量極少或?yàn)榱銜r(shí),基于SVM 預(yù)測(cè)模型的服務(wù)推薦精度嚴(yán)重下降或者不起作用,為了緩解數(shù)據(jù)稀疏性和冷啟動(dòng),最終候選推薦服務(wù)集合全部來(lái)源于基于相似用戶的推薦。
SRM-CESVM 算法描述如算法1 所示。
算法1SRM-CESVM 推薦方法
實(shí)驗(yàn)采用MovieLens 100K 數(shù)據(jù)集,其包括943 個(gè)用戶對(duì)1 682 部電影的評(píng)分?jǐn)?shù)據(jù)(評(píng)分?jǐn)?shù)據(jù)為1~5 分)。實(shí)驗(yàn)中,隨機(jī)選擇80%的數(shù)據(jù)構(gòu)建訓(xùn)練集,剩余20%的數(shù)據(jù)構(gòu)建測(cè)試集。該數(shù)據(jù)集還提供了一些額外的信息,包括用戶人口統(tǒng)計(jì)學(xué)信息和用戶評(píng)論電影時(shí)的時(shí)間戳,這些信息作為上下文信息用于驗(yàn)證本文提出的推薦方法。具體地,在本文實(shí)驗(yàn)中涉及的上下文信息包括用戶人口統(tǒng)計(jì)學(xué)上下文信息(年齡、性別、職業(yè)等)和用戶評(píng)分上下文信息(評(píng)論時(shí)間以及由其推導(dǎo)出的季節(jié)、星期等)。在模型訓(xùn)練中,訓(xùn)練集中的上下文信息作為“評(píng)分上下文”應(yīng)用于訓(xùn)練集中服務(wù)的評(píng)分向量的修正,而在模型測(cè)試中,測(cè)試集中的上下文信息作為“推薦上下文”應(yīng)用于測(cè)試集中服務(wù)的評(píng)分向量的修正。實(shí)驗(yàn)環(huán)境如下:Matlab2016b 軟件,系統(tǒng)為Windows 7,Intel core i7,CPU 為3.6 GHz,內(nèi)存為8 GB。
分類準(zhǔn)確率通常作為衡量推薦方法性能的一種評(píng)價(jià)標(biāo)準(zhǔn)。其中,分類準(zhǔn)確率A用于衡量推薦方法的整體分類能力,如式(15)所示;正例分類準(zhǔn)確率A+用于衡量推薦方法對(duì)正例樣本分類的準(zhǔn)確度,如式(16)所示;負(fù)例分類準(zhǔn)確率A-用于衡量推薦方法對(duì)負(fù)例樣本分類的準(zhǔn)確度,如式(17)所示。
對(duì)于目標(biāo)用戶ui,TPi表示正例樣本被正確分為正例的樣本數(shù)量,F(xiàn)Pi表示負(fù)例樣本被錯(cuò)誤分為正例的樣本數(shù)量,TNi表示負(fù)例樣本被正確分為負(fù)例的樣本數(shù)量,F(xiàn)Ni表示正例樣本被錯(cuò)誤分為負(fù)例的樣本數(shù)量。
在服務(wù)推薦中,通常還采用準(zhǔn)確率P、召回率R和F值衡量推薦方法的性能,分別如式(18)~式(20)所示。P衡量推薦列表中預(yù)測(cè)到目標(biāo)用戶感興趣服務(wù)的概率。R衡量推薦列表中目標(biāo)用戶感興趣的服務(wù)占目標(biāo)用戶所有感興趣服務(wù)的比重。P和R分別表示模型的預(yù)測(cè)和覆蓋能力,但有時(shí)準(zhǔn)確率和召回率是相互影響的,即準(zhǔn)確率高而召回率低,或召回率高而準(zhǔn)確率低,需要綜合考慮兩者。而F值是P和R的加權(quán)調(diào)和均值,可以很好地衡量推薦算法整體推薦性能,在推薦系統(tǒng)中經(jīng)常被采用。
其中,RLi表示為目標(biāo)用戶ui推薦的服務(wù)集合,TLi表示測(cè)試集中目標(biāo)用戶ui感興趣的服務(wù)集合。
在核函數(shù)選取實(shí)驗(yàn)中,根據(jù)文獻(xiàn)[8,17]的相關(guān)分析,核函數(shù)在用戶評(píng)分矩陣密度d=0.06 下進(jìn)行,同時(shí)根據(jù)文獻(xiàn)和常識(shí)習(xí)慣,設(shè)置用戶偏好閾值ε=3 。由于線性核函數(shù)φ(xi,xj)=xixj在之前實(shí)驗(yàn)中效果不太理想,故實(shí)驗(yàn)中不考慮線性核函數(shù),只比較采用多項(xiàng)式核函數(shù)φ(xi,xj)=(xixj+1)p(p≥ 1)和高斯核函數(shù)φ(xi,xj)=(σ> 0)的分類準(zhǔn)確率。
圖3 是參數(shù)p取不同值時(shí)采用多項(xiàng)式核函數(shù)的分類準(zhǔn)確率。隨著p值增大,A+值緩慢上升,A-值快速下降,A值緩慢下降??梢钥闯?,p=2 時(shí),A值達(dá)到最大。因此,采用多項(xiàng)式核函數(shù)時(shí),p=2 是最佳參數(shù)。
圖3 不同參數(shù)值時(shí)多項(xiàng)式核函數(shù)的分類準(zhǔn)確率
圖4 是參數(shù)σ取不同值時(shí)采用高斯核函數(shù)的分類準(zhǔn)確率。隨著σ值增大,A+值前期緩慢下降,后期快速下降;A-值前期緩慢上升,后期快速上升;A值緩慢到達(dá)頂峰后又緩慢下降??梢钥闯?,σ=7時(shí),A值達(dá)到最大,因此,采用高斯核函數(shù)時(shí),σ=7是最佳參數(shù)。
圖4 不同參數(shù)值時(shí)高斯核函數(shù)的分類準(zhǔn)確率
圖5 是多項(xiàng)式核函數(shù)和高斯核函數(shù)取最佳參數(shù)時(shí),A、A+和A-值的比較。在負(fù)例分類準(zhǔn)確率方面,多項(xiàng)式核函數(shù)比高斯核函數(shù)相比效果較差。在正例分類準(zhǔn)確率方面,多項(xiàng)式核函數(shù)比高斯核函數(shù)稍低。從兩者整體分類準(zhǔn)確率而言,高斯核函數(shù)比多項(xiàng)式核函數(shù)相比效果更好,且正例和負(fù)例分類準(zhǔn)確率比較均衡,因此,在后面的實(shí)驗(yàn)中,選取高斯核函數(shù)作為SVM 分類的核函數(shù)。
圖5 不同核函數(shù)時(shí)分類準(zhǔn)確率比較
在不同的用戶評(píng)分矩陣密度下,本文對(duì)原始評(píng)分信息保留程度參數(shù)ρ對(duì)推薦結(jié)果的影響進(jìn)行實(shí)驗(yàn),找出F的最優(yōu)值。圖6 是ρ取不同值時(shí)的F值。從圖6 可以看出,在評(píng)分矩陣密度d=0.06 和d=0.05,ρ=0.7 時(shí),F(xiàn)達(dá)到最優(yōu)值,在評(píng)分矩陣密度d=0.04,ρ=0.8 時(shí),F(xiàn)達(dá)到最優(yōu)值。
圖6 不同ρ值時(shí)推薦的F值
在不同的用戶評(píng)分矩陣密度下,本文對(duì)服務(wù)選擇權(quán)重參數(shù)δ對(duì)推薦結(jié)果的影響進(jìn)行實(shí)驗(yàn)。圖7 是δ取不同值時(shí)的F值。從圖可以看出,在不同的評(píng)分矩陣密度下,δ=0.7 時(shí),F(xiàn)值達(dá)到最優(yōu),原因如下:一方面,目標(biāo)用戶傾向于選擇基于SVM 預(yù)測(cè)模型的服務(wù)推薦,這是因?yàn)樵撏扑]基于目標(biāo)用戶的歷史評(píng)分?jǐn)?shù)據(jù)得出,具有很好的解釋性,用戶更加信服,因此,從中選取較多的服務(wù)個(gè)數(shù);另一方面,目標(biāo)用戶與相似用戶具有相似的偏好,因此,從中選取剩余的部分。
圖7 不同δ值時(shí)推薦的F值
圖8~圖 10 分別顯示了在評(píng)分矩陣密度d=0.06、0.05 和0.04 下,該方法的推薦性能。在不同的密度下,隨著推薦服務(wù)數(shù)量N的增加,P值不斷下降,R值不斷上升,F(xiàn)值緩慢上升后緩慢下降。當(dāng)d=0.06,N=15 時(shí),F(xiàn)值達(dá)到最高值0.26;N為10~25 時(shí),F(xiàn)值保持在0.25 左右。當(dāng)d=0.05 時(shí),N=20 時(shí),F(xiàn)值達(dá)到最高值0.22;N為15~30 時(shí),F(xiàn)值保持在0.2 左右。當(dāng)d=0.04,N=25 時(shí),F(xiàn)值達(dá)到最高值0.19;N為15~25 時(shí),F(xiàn)值保持在0.18 左右。實(shí)驗(yàn)結(jié)果說(shuō)明,隨著密度的下降,評(píng)分?jǐn)?shù)據(jù)變得越來(lái)越稀疏,特別地,當(dāng)d=0.04 時(shí),數(shù)據(jù)極度稀疏,但該推薦方法仍保持了不錯(cuò)的性能。
為了驗(yàn)證本文提出的方法對(duì)冷啟動(dòng)問(wèn)題的解決能力。本文從數(shù)據(jù)集中隨機(jī)選擇100 個(gè)用戶和300 部電影作為新用戶和新服務(wù),即人工刪除評(píng)分信息。實(shí)驗(yàn)中,為每個(gè)新用戶推薦20 個(gè)服務(wù),同時(shí)將一個(gè)新服務(wù)推薦給20 個(gè)用戶。實(shí)驗(yàn)中,對(duì)于每個(gè)新用戶記錄用戶滿意的服務(wù)(即服務(wù)評(píng)分大于等于用戶偏好閾值)占推薦服務(wù)數(shù)的比例。同時(shí),對(duì)于每個(gè)新服務(wù),記錄推薦用戶中用戶滿意的用戶數(shù)占推薦用戶數(shù)的比例。圖11 顯示了不同矩陣評(píng)分密度時(shí),本文方法與文獻(xiàn)[6]提出URA-CF 方法的比較結(jié)果,其值是針對(duì)所有用戶或所有服務(wù)的平均比例值。從實(shí)驗(yàn)結(jié)果可以得出本文提出的方法由于加入了上下文信息,特別是人口統(tǒng)計(jì)學(xué)信息,在解決冷啟動(dòng)問(wèn)題方面是可行的,同時(shí)結(jié)果優(yōu)于文獻(xiàn)[6]中的推薦方法。
圖8 d=0.06 時(shí)推薦方法的性能
圖9 d=0.05 時(shí)推薦方法的性能
圖10 d=0.04 時(shí)推薦方法的性能
圖11 解決冷啟動(dòng)問(wèn)題的性能比較
將SRM-CESVM 方法與目前最新的協(xié)同過(guò)濾推薦方法進(jìn)行比較,對(duì)比方法具體如下。
URA-CF[6],一種最新的基于評(píng)分預(yù)測(cè)與排序預(yù)測(cè)的協(xié)同過(guò)濾推薦方法。該方法是基于概率矩陣分解的改進(jìn)協(xié)同過(guò)濾算法。
SVM-CF[8,17],一種最新的基于SVM 的協(xié)同過(guò)濾推薦算法。
UI-CF[18],一種最新的基于用戶和項(xiàng)目的混合改進(jìn)協(xié)同過(guò)濾方法。
圖12~圖14 分別顯示了在評(píng)分矩陣密度d=0.06、0.05 和0.04 下4 種推薦方法的性能比較。不同評(píng)分矩陣密度下,SRM-CESVM 方法的性能均優(yōu)于其他3 種推薦方法,特別是在數(shù)據(jù)極其稀疏的情況下,SRM-CESVM 方法明顯優(yōu)于其他方法。這是由于SRM-CESVM 推薦方法使用了高效的SVM預(yù)測(cè)模型,并引入隱含的上下文信息以提高精度,同時(shí)使用用戶人口統(tǒng)計(jì)學(xué)信息緩解數(shù)據(jù)稀疏性帶來(lái)的推薦算法效率不高的問(wèn)題。
圖12 d=0.06 時(shí)4 種推薦方法的性能比較
圖13 d=0.05 時(shí)4 種推薦方法的性能比較
圖14 d=0.04 時(shí)4 種推薦方法的性能比較
為了比較4 種推薦方法的時(shí)間效率,在3 種評(píng)分矩陣密度d=0.06、0.05 和0.04 下分別統(tǒng)計(jì)4 種推薦方法的推薦時(shí)間消耗,結(jié)果如圖15 所示。一方面,隨著數(shù)據(jù)密度的降低,推薦時(shí)間減少,這是由于數(shù)據(jù)密度降低表示推薦服務(wù)的數(shù)量減少,因此推薦時(shí)間消耗減少。另一方面,本文提出的方法的時(shí)間消耗比UI-CF 方法減少了約40%,比URA-CF方法減少了約35%,表明SRM-CESVM 方法具有很高的時(shí)間效率,這是由于采用SVM 的方法過(guò)濾了用戶不感興趣的服務(wù),節(jié)約了大量的時(shí)間。同時(shí),SRM-CESVM 方法的時(shí)間消耗比SVM-CF 方法增加了約10%,這是由于引入了上下文信息及相似用戶的推薦,因此時(shí)間消耗略有增加,但推薦精度有所提高。
圖15 不同矩陣密度下4 種推薦方法的時(shí)間消耗
本文提出了基于隱含上下文支持向量機(jī)的服務(wù)推薦方法。該方法首先利用上下文信息修正用戶評(píng)分矩陣,然后利用SVM 訓(xùn)練出用戶的分類超平面,最后根據(jù)SVM 預(yù)測(cè)模型和相似用戶為目標(biāo)用戶做出服務(wù)推薦。與其他基于預(yù)測(cè)的方法相比,該方法使用隱含上下文的服務(wù)特征向量,即不增加SVM 的計(jì)算復(fù)雜度,又使上下文信息用于指導(dǎo)推薦。實(shí)驗(yàn)結(jié)果表明,提出的方法在推薦精度和推薦時(shí)間消耗方面均得到有效提升。