王 紅,陳功平
(六安職業(yè)技術(shù)學(xué)院 信息與電子工程學(xué)院,安徽 六安 237158)
推薦系統(tǒng)[1]將用戶(User)可能感興趣但無關(guān)的項目(Item)生成列表提供給用戶.推薦系統(tǒng)已普遍應(yīng)用于電子商務(wù)、新聞、視頻等各種應(yīng)用系統(tǒng)中,在計算機和各種移動終端設(shè)備的應(yīng)用中起到良好的推薦效果.推薦結(jié)果的準(zhǔn)確度是評價推薦算法[2]優(yōu)劣的主要依據(jù),此外還要考慮時間和空間復(fù)雜度.
推薦算法在研究用戶和項目的歷史行為后,才可以更好地為用戶完成推薦,將項目更準(zhǔn)確地推薦給客戶.推薦系統(tǒng)多采用預(yù)測模式,認(rèn)為用戶的興趣不會在短時間內(nèi)劇烈變動、改變原有喜好.比如,通過歷史行為得出某人喜歡武俠小說,那么系統(tǒng)會將和該用戶喜好高度一致的用戶已閱讀的武俠類圖書推薦給該用戶.
隱含語義模型[3](Latent Factor Model,LFM)是通過隱含特征(Latent factor)將用戶和項目聯(lián)系起來.基于用戶和基于項目的推薦算法都是通過訓(xùn)練集聚類用戶和項目,有明確的目的,而隱含語義模型使用用戶歷史行為統(tǒng)計自動聚類,可以很好地自動分類物品所屬的種類,而不需要人為的分類.
公式(1)是LFM模型中計算用戶u對項目i感興趣程度的計算公式.
其中pu, k 和qi, k 是模型的參數(shù),pu, k 代表用戶u和第k個隱類之間的興趣關(guān)系,qi, k 代表項目i和第k個隱類之間的興趣關(guān)系,這兩個參數(shù),連接了用戶u和項目i,可以計算出用戶u對項目i的感興趣程度.
1.2.1 LFM建模
圖1中的矩陣R表示用戶u和物品i的行為數(shù)據(jù)集(這里以3個用戶和4個物品為例),矩陣值Rij表示用戶i對項目j的興趣度,使用LFM對其建模,得到矩陣P和Q.
LFM算法的計算思路[4]為:從用戶項目行為數(shù)據(jù)集中設(shè)置若干主題即隱類的數(shù)量,作為用戶和項目之間的聯(lián)系,即把原有的用戶項目矩陣R分解為P矩陣和Q矩陣積.其中P矩陣表示“用戶-類”,矩陣值Pij表示的是用戶i對類j的興趣度,值越高表示用戶i對j類的興趣度越高;Q矩陣表示“類-項目”,矩陣值qij表示的是項目j在類i中的權(quán)重,權(quán)重越高越能作為該類的代表.
圖1 LFM建模
1.2.2 LFM模型的優(yōu)點
從圖1的LFM模型建??梢钥闯?,該模型有以下幾個優(yōu)點.
(1)分類粒度可設(shè)置[5],圖1將項目item分了c1、c2和c3三個類,類的數(shù)量可以通過設(shè)置LFM模型的分類數(shù)就可控制分類粒度,分類數(shù)越大,粒度越細(xì),類別就越多.
(2)無需手動設(shè)置類別[6],矩陣P、Q中類別C的數(shù)量可設(shè)置,類中最具代表性的項目item是基于用戶行為數(shù)據(jù)集R自動聚類產(chǎn)生的,因此不需要用戶手動分類項目,既可以免去手動分類勞動還可以減少手動分類的錯誤.
(3)項目item并不是明確地被劃分到某個類,而是計算item屬于某類的概率,即qij值越高代表項目j在屬于類i的概率越高.
(4)可以得到每個用戶user對所有類的興趣度,即使該用戶沒有實際產(chǎn)生某類的行為數(shù)據(jù),也可以通過模型計算出用戶對該類的隱含興趣度[7].
1.2.3 參數(shù)值的計算
使用最優(yōu)化損失函數(shù)[8]求解矩陣P和Q中的puk和qik參數(shù)值.將所有用戶user和他們有過行為(即表示喜歡)的item構(gòu)成item全集.對于每個user,把有過關(guān)聯(lián)的item稱為正樣本,將興趣度Rui定義為非負(fù)數(shù),這里規(guī)定為Rui=1,此外還要定義負(fù)樣本,負(fù)樣本的數(shù)量要和正樣本數(shù)量相當(dāng),且應(yīng)從item全集中隨機選擇,將其興趣度Rui定義為0,即Rui=0.即user對item的興趣取值范圍為[0,1].
采樣后得到一個新的user-item集K={(U,I)},如果(U,I)是正樣本,則RUI=1,否則RUI=0.損失函數(shù)如公式(2)所示.
其中,α是學(xué)習(xí)速率[10],α越大,迭代下降的越快.α和λ一樣,也要根據(jù)實際應(yīng)用場景反復(fù)實驗得到.
使用100k的MovieLens[11]數(shù)據(jù)集驗證基本LFM模型推薦算法,數(shù)據(jù)集中存儲了10萬條用戶對電影的評分,每行由用戶編號(uid)、電影編號(mid)和評分值(score)組合而成,評分值為1到5的整數(shù),數(shù)據(jù)集情況如表1所示.
表1 數(shù)據(jù)集簡介
根據(jù)LFM算法,生成的P矩陣有943行f(f為類別的數(shù)量),實驗中要驗證f類別取值對評分正確的影響;Q矩陣應(yīng)有f行1682列.
實驗數(shù)據(jù)按照8:2的比例隨機分成訓(xùn)練集train和測試集test,訓(xùn)練集用于訓(xùn)練推薦算法的各項參數(shù),測試集用于測試推薦算法的有效性.
2.2.1 初始化矩陣P和Q
使用隨機數(shù)和F(種類)的平方根成正比的方式初始化,初始化方法與訓(xùn)練集無關(guān),即將每個p[u, f]和q[f, i]都填充為0到1的隨機數(shù).算法偽碼如下.
2.2.2 LFM模型的學(xué)習(xí)迭代
迭代是為了訓(xùn)練輸出矩陣p和q,算法輸入訓(xùn)練集train,F(xiàn)類別個數(shù),n是迭代次數(shù),alpha為學(xué)習(xí)參數(shù),lambda是正則化參數(shù),注意每次迭代后,學(xué)習(xí)參數(shù)alpha應(yīng)有衰減.算法偽碼如下.
在上述迭代過程中用到的Predict(x,y,p,q)方法是使用p和q矩陣預(yù)測用戶x對y的評分,并依此來一次次修正p和q矩陣的取值.
2.2.3 LFM模型的測試
使用test數(shù)據(jù)集預(yù)測用戶u對物品i的評分,預(yù)測算法的偽碼如下.
2.2.4 實驗結(jié)果與分析
使用均方根誤差RMSE[12-13]作為算法的評價指標(biāo),RMSE反映的是預(yù)測分值與用戶實際分值間的差異,值越小說明預(yù)測越準(zhǔn)確.RMSE的計算公式如(7)所示.
表2是LFM基本模型的推薦結(jié)果,其中F表示類別數(shù),n是迭代次數(shù),alpha和lambda是參數(shù),RMSE是評價指標(biāo).
從結(jié)果可見,當(dāng)alpha和lambda的值都取0.02時,結(jié)果較好.迭代次數(shù)為20和100時效果較好.隱類F的取值對實驗結(jié)果影響較小,當(dāng)值在50-200之間效果較好,因此在第3節(jié)改進(jìn)算法中F值取100.
表2 基本LFM模型實驗結(jié)果
圖2是當(dāng)F=100,alpha=0.02,lambda=0.01時,RMSE值隨n值的變化.可以看出,當(dāng)n=20和n=130時,RMSE值最低,即實驗效果最好.由于迭代次數(shù)越多訓(xùn)練時間越長,因此在改進(jìn)算法中只驗證n=20和n=100時的實驗效果.
圖2 RMSE隨n值變化的效果
LFM模型的分?jǐn)?shù)預(yù)測通過隱類將用戶和物品聯(lián)系起來[14],但實際情況下,評分系統(tǒng)有些固有屬性和用戶、商品是無關(guān)的,比如某些用戶偏好評價高分,有些商品的質(zhì)量確實好,所有用戶都會給高分,基于此原理,對基本LFM模型加以改進(jìn),增加3個偏置項,加入后,評分預(yù)測公式如公式(8)所示.
其中,μ是train數(shù)據(jù)集中評價的平均分,表示該評價系統(tǒng)中其他用戶的評分規(guī)律對預(yù)測的影響;表示train數(shù)據(jù)集中用戶的評分偏好,比如某些用戶無論電影優(yōu)劣都喜歡給差評;表示項目的本身的優(yōu)劣,比如某些電影確實很好,分?jǐn)?shù)很高[15].
根據(jù)基本LFM實驗結(jié)果,其他參數(shù)的設(shè)置如表3所示.
表3 改進(jìn)LFM模型的參數(shù)設(shè)置
當(dāng)n分別取20和100時,改進(jìn)后的LFM模型和基本LFM模型推薦效果如表4所示.
表4 改進(jìn)后的LFM和基本LFM模型實驗結(jié)果比較
圖3是兩種推薦模型推薦效果的折線圖,從表4和圖3可以看出,改進(jìn)后的推薦模型推薦效果明顯優(yōu)于基本模型,可以證明推薦改進(jìn)效果成立.
圖3 推薦效果折線圖
增加軟件評分偏好、個人評分偏好和項目評分偏好的LFM模型可以有效地提升推薦效果,對減少評分矩陣的稀疏度、填充用戶評分矩陣有很好的推廣價值,改進(jìn)后的LFM模型推薦算法比基本LFM模型的性能更優(yōu).此外,該模型還可以很好地解決新項目和新用戶(即冷啟動)推薦問題.