王玉珍 ,許艷茹 ,常 丹
(蘭州財經(jīng)大學a.絲綢之路經(jīng)濟研究院;b.信息工程學院,蘭州 730020)
隨著科學技術(shù)的發(fā)展,大量的信息出現(xiàn)在人們的生活中,歌曲、電影、新聞以及商品等是大多數(shù)人關(guān)注較多的信息。因此,為了滿足用戶迫切想獲取有用信息這一需求,推薦技術(shù)的使用已經(jīng)成為一種常態(tài)。而推薦技術(shù)的核心是推薦算法,目前,就應用領域來說,像貝葉斯方法[1]、神經(jīng)網(wǎng)絡方法[2]、聚類方法[3]等基于模型的協(xié)同過濾算法[4]的應用最為廣泛。近年來,人們對該領域的研究越來越深入,研究成果也越來越多。主要的研究成果如下:王曉耘等[5]提出一種基于粗糙用戶聚類的協(xié)同過濾推薦模型,采用粗糙K-means算法對用戶聚類,形成用戶的初始近鄰集,然后從目標用戶的初始近鄰集中搜索其最近鄰,根據(jù)搜索結(jié)果預測項目評分并進行推薦;Baltrunas等[6]將項目依據(jù)上下文分裂成兩個,然后按照特定的上下文關(guān)系來預測用戶評分并進行推薦;冷亞軍等[7]在對用戶聚類的基礎上,根據(jù)用戶偏好建立偏好矩陣,進行預測評分并推薦;張星等[8]為每個用戶根據(jù)其興趣愛好的差異性,創(chuàng)建了個性化的項目相似度的計算過程,因該過程與用戶的興趣愛好結(jié)合緊密,從而有效提高了推薦的精度;葉蘭平等[9]利用RBF神經(jīng)網(wǎng)絡能夠有效進行非線性逼近這一特點,利用用戶的相似度,進行評分預測;薛福亮[10]將Vague集融入電子商務推薦中,并且使用SOM算法改進RBF神經(jīng)網(wǎng)絡,降低了預測誤差;Jia等[11]將偏最小二乘法和遺傳算法引入RBF神經(jīng)網(wǎng)絡中,取得了更好的效果??梢?,雖然目前對基于模型的協(xié)同過濾方法已有一定的研究,但是在推薦領域采用RBF神經(jīng)網(wǎng)絡的研究成果還較少。因此,本文在優(yōu)化RBF神經(jīng)網(wǎng)絡的基礎上,提出了一種SGA-RBF神經(jīng)網(wǎng)絡模型,并將SGA-RBF神經(jīng)網(wǎng)絡與協(xié)同過濾算法結(jié)合,預測了未評分項目的分數(shù),從而提高了預測的準確性。
協(xié)同過濾算法作為使用最廣泛的推薦算法,其過程如下:
1.1.1 評分信息的預處理
Items代表項目,Users代表用戶,Suj表示用戶Usersu對項目Itemsj的評分(如表1所示)。
表1 用戶-項目評分矩陣R
1.1.2 最近鄰居集的建立
該步驟的任務是根據(jù)項目之間的相似度建立最近鄰集。通常,相似度可采用以下方法計算:
(1)余弦相似度
余弦相似度是根據(jù)向量空間中的兩個向量夾角的余弦值來度量的,見式(1)所示:
(2)修正的余弦相似度
為了彌補余弦相似度只在方向上區(qū)分差異的不足,修正的余弦相似度的計算方法應運而生。見式(2)所示:
(3)Pearson相關(guān)系數(shù)
該方法是根據(jù)項目之間的相關(guān)關(guān)系來度量相似度,見式(3)所示:
其中,Aui和Auj分別表示用戶對項目i和項目j的評分分別表示所有用戶對項目i、項目j評分的均值。
根據(jù)相似度的計算結(jié)果,將相似度較大的n個項目用來構(gòu)成最近鄰集。
1.1.3 進行預測評分并推薦
由以上兩步獲取每個項目的最近鄰居集,根據(jù)最近鄰居集中的評分數(shù)據(jù)預測用戶對某個項目的評分。見式(4)所示:
根據(jù)評分預測的結(jié)果,將分數(shù)排名靠前M個項目推薦給目標用戶。
徑向基函數(shù)(Radial Basis Function,RBF)神經(jīng)網(wǎng)絡[12]是20世紀80年代末,由J.Moody和C.Darken提出的,該神經(jīng)網(wǎng)絡是具有單隱層的三層前饋網(wǎng)絡,能有效進行非線性逼近,被廣泛應用于各領域。
(1)RBF網(wǎng)絡結(jié)構(gòu)
RBF網(wǎng)絡是一種三層前向網(wǎng)絡,其網(wǎng)絡結(jié)構(gòu)如圖1所示。在圖1中,xn代表輸入值,hn代表隱藏層的輸出值,wn代表隱藏層與輸出層的連接權(quán)值,Ym代表輸出層的輸出值。
圖1 RBF神經(jīng)網(wǎng)絡結(jié)構(gòu)
(2)RBF網(wǎng)絡的逼近
采用RBF網(wǎng)絡逼近一對象的結(jié)構(gòu)如圖2所示。
圖2 RBF神經(jīng)網(wǎng)絡逼近
其中,gi為節(jié)點j的基寬參數(shù),且為大于零的數(shù)。網(wǎng)絡的權(quán)向量為:
RBF網(wǎng)絡的輸出為:
RBF網(wǎng)絡逼近的性能指標函數(shù)為:
根據(jù)梯度下降法,輸出權(quán)、節(jié)點基寬參數(shù)及節(jié)點中心矢量的迭代算法如下:
式(10)至式(14)中,η為學習速率,α為動量因子,η∈[0,1],α∈[0,1]。將對象輸出對輸入的敏感度稱為Jacobian信息,其值由RBF神經(jīng)網(wǎng)絡辨識而得[13]。
辨識算法如下:取RBF網(wǎng)絡的第一個輸入為z(k),即x1=z(k),即:
本文使用的RBF網(wǎng)絡中,網(wǎng)絡隱藏層神經(jīng)元個數(shù)為4,網(wǎng)絡結(jié)構(gòu)2-4-1。
遺傳算法[14]是模仿生物生存的機理而形成的,Goldberg總結(jié)了一種最基本的遺傳算法——簡單遺傳算法(Simple Genetic Algorithms,簡稱SGA)。SGA包含了編碼、初始種群的生成、種群中個體適應度的檢測評估、選擇、交叉、變異5個基本步驟。
(1)問題編碼和適應度
SGA通常作用于確定長度的二進制串上,即I={0 ,1}l。比如,分量可以表示為串長為lx的二進制代碼,即譯碼函數(shù)為,式中,為參數(shù)xl的二進制表達,本文采用二進制編碼。適應度函數(shù)Φ(x)通常選為確保適應值為正值,并且最好個體的適應值最大的函數(shù)[13]。
(2)選擇
選擇(Selection)即從群體中按個體的適應度函數(shù)值選擇出較適應環(huán)境的個體。
(3)交叉
SGA中,交叉(Crossover)的目的是把兩個不同個體上的有用段組合在一起,從而實現(xiàn)進化。Holland的一點交換算子作用機理如下:設兩個父輩個體分別為隨機選擇交換點d=random(1,2,…,l-1),產(chǎn)生的兩個子代個體分別為
(4)變異
在SGA中,通常變異(Mutation)被認為是為確保每一代個體的多樣性而設置的輔助算子。Pm的值一般為0.001到0.1之間。個體,其中:
式中,?i∈(1,…,l);θi為0與1之間的隨機數(shù)。Pm的取值一般很小,否則SGA退化為簡單的隨機搜索。
在實際應用中,SGA的串長(1)、群體大小(n)、交叉概率(Pc)、變異概率(Pm)等參數(shù)的取值對其性能影響很大。通常情況下,各參數(shù)的取值如表2所示。
表2 SGA的各參數(shù)取值表
由于這些參數(shù)的選擇難度大,近年來更多學者已經(jīng)認識到研究這些參數(shù)隨遺傳進程而自適應變化問題的重要性。
RBF神經(jīng)網(wǎng)絡的參數(shù)初始值的選擇存在隨機性,容易給模型造成誤差。遺傳算法具有全局優(yōu)化的優(yōu)點,能夠使RBF神經(jīng)網(wǎng)絡的初值權(quán)值得到優(yōu)化,提高RBF神經(jīng)網(wǎng)絡模型的準確率。
由于RBF神經(jīng)網(wǎng)絡的初始參數(shù)很難確定,用簡單遺傳算法可以優(yōu)化其網(wǎng)絡參數(shù),使逼近更加準確,具體的算法步驟如圖3所示。
圖3 SGA優(yōu)化RBF神經(jīng)網(wǎng)絡算法流程
本文用遺傳算法優(yōu)化RBF神經(jīng)網(wǎng)絡的初始權(quán)值,提出了SGA-RBF神經(jīng)網(wǎng)絡模型,然后在項目相似度的基礎上,將SGA-RBF神經(jīng)網(wǎng)絡與協(xié)同過濾算法結(jié)合。本文以電影推薦為例來說明該算法,具體的算法步驟如下:
(1)構(gòu)建“Users-Items”矩陣
本文所構(gòu)建的“Users-Items”矩陣如表3所示。
表3 “Users-Items”評分矩陣
矩陣中的行向量代表m個用戶,列項代表n部電影,矩陣值代表每個用戶對每部電影的具體評分。
(2)建立項目的近鄰集
首先采用Pearson相關(guān)系數(shù)法計算出項目相似度,然后按照每個項目相似度由高到低進行排序,選出其中的前n個構(gòu)成近鄰集。
(3)構(gòu)建SGA-RBF神經(jīng)網(wǎng)絡模型并預測評分
獲得近鄰集之后,則可用目標項目i與其近鄰集的評分來訓練與仿真網(wǎng)絡。具體步驟如下[13]:
步驟1:生成集合S1和S2。其中S1是項目i與近鄰集中的項目的共同評分用戶集合,S2是對近鄰項目評分而未對項目i評分的用戶的評分數(shù)據(jù)集合;
步驟2:用遺傳算法優(yōu)化RBF神經(jīng)網(wǎng)絡的初始權(quán)值;
步驟3:設置神經(jīng)網(wǎng)絡的訓練樣本輸入為S1中項目j的評分數(shù)據(jù),訓練樣本輸出為S1中用戶對目標項目i的評分數(shù)據(jù);
步驟4:將S2中對j評分的數(shù)據(jù)輸入訓練好的網(wǎng)絡中,輸出值則為S2中的用戶對目標項目i的預測評分值;
步驟5:如果j是S1中的最后一個項目,則繼續(xù)步驟6,否則,返回步驟3;
步驟6:根據(jù)計算結(jié)果求出目標項目求平均值。
(4)推薦
根據(jù)評分預測的結(jié)果,從中選出評分較高的M個項目,作為目標項目推薦給用戶。
本文使用公開的數(shù)據(jù)集movielens來檢驗算法的有效性。數(shù)據(jù)集共10000條數(shù)據(jù),包括1682部電影和943個用戶,按時間排序后,取出每個用戶最后的10條數(shù)據(jù)為測試集,其余數(shù)據(jù)為訓練集,供實驗使用。
本文的實驗中,用平均絕對誤差(MAE)來評估實驗結(jié)果。其公式如式(17)所示:
其中mi表示預測評分,ki表示用戶對項目的實際評分。
本文共進行了兩個實驗,分別比較了不同近鄰數(shù)對應的MAE值與不同稀疏度對應的MAE值。
(1)不同近鄰數(shù)對應的MAE值
用movielens數(shù)據(jù)集來測試當近鄰數(shù)N變化時,采用SGA優(yōu)化前后的基于RBF神經(jīng)網(wǎng)絡的協(xié)同過濾算法MAE的變化情況,其結(jié)果如圖4所示。
圖4 不同近鄰數(shù)下的MAE變化
圖4顯示了當近鄰數(shù)N分別取5、10、15、20、25、30時,基于RBF的協(xié)同過濾算法和基于SGA-RBF的協(xié)同過濾算法的MAE值的變化。由圖可知,改進算法的MAE值明顯低于基于RBF的協(xié)同過濾算法的MAE值??梢?,經(jīng)過SGA優(yōu)化的RBF神經(jīng)網(wǎng)絡的性能優(yōu)于未優(yōu)化的RBF神經(jīng)網(wǎng)絡。
(2)不同稀疏度對應的MAE值
本文將movielens數(shù)據(jù)集按稀疏度劃分了五類,即0~0.05、0.05~0.1、0.1~0.15、0.15~0.2、0.2以上,比較每個稀疏度區(qū)間內(nèi)改進算法與原RBF協(xié)同過濾算法之間的差異。
圖5 不同稀疏度區(qū)間內(nèi)的MAE變化
由圖5可以看出,對于每個稀疏度區(qū)間,本文所提出的算法均優(yōu)于基于RBF的協(xié)同過濾算法,而且對于稀疏度越小的區(qū)間,優(yōu)化的效果越明顯。
本文首先用遺傳算法優(yōu)化RBF神經(jīng)網(wǎng)絡的初始權(quán)值,提出了SGA-RBF神經(jīng)網(wǎng)絡模型,然后在項目相似度的基礎上,將SGA-RBF神經(jīng)網(wǎng)絡與協(xié)同過濾算法結(jié)合,預測了未評分項目的分數(shù),最后將預測評分和實際評分進行比較,并計算了平均相對誤差。實驗結(jié)果顯示,用遺傳算法改進RBF神經(jīng)網(wǎng)絡的初始權(quán)值能有效的提高RBF神經(jīng)網(wǎng)絡的性能,減小平均絕對誤差,提高預測準確率。