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