本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種應(yīng)用的推薦方法、裝置及計(jì)算機(jī)可讀介質(zhì)。
背景技術(shù):
隨著互聯(lián)網(wǎng)信息量的膨脹以及電子商務(wù)的迅速發(fā)展,信息過載問題卻愈發(fā)嚴(yán)重。無論是信息消費(fèi)者還是信息生產(chǎn)者都遇到了很大的挑戰(zhàn):一方面,對于信息消費(fèi)者來說,他們越來越難從海量的數(shù)據(jù)中快速準(zhǔn)確的找到對自己有價(jià)值的信息;而另一方面,對于信息生產(chǎn)者來說,他們很難讓自己生產(chǎn)的信息在海量數(shù)據(jù)中脫穎而出,讓信息消費(fèi)者關(guān)注到自己。
如何解決這個(gè)問題?推薦系統(tǒng)由此應(yīng)運(yùn)而生,它是解決這一類問題的重要工具。推薦系統(tǒng)的任務(wù)就是聯(lián)系信息消費(fèi)者和信息生產(chǎn)者,一方面幫助信息消費(fèi)者發(fā)現(xiàn)對自己有用的信息,另一方面幫助信息生產(chǎn)者生產(chǎn)的信息能夠方便快捷的展現(xiàn)在對該信息感興趣的信息消費(fèi)者面前,從而實(shí)現(xiàn)信息消費(fèi)者和信息生產(chǎn)者兩者的雙贏局面。
slopeone算法兩種常用的實(shí)現(xiàn)方式:weightedslopeone和bi-polarslopeone,其缺點(diǎn)在于算法在計(jì)算過程沒有考慮到相似度問題。且根據(jù)文獻(xiàn)的研究明,相較于傳統(tǒng)的協(xié)同過濾算法,當(dāng)數(shù)據(jù)變得比較稀疏時(shí),slopeone算法并不算優(yōu)秀。
此外,由于應(yīng)用中心的數(shù)據(jù)量非常大,其包括應(yīng)用名稱,標(biāo)簽,應(yīng)用描述,圖標(biāo),下載量,以及用戶的操作歷史包括,下載,評論,評分以及熱度排行等等。slopeone協(xié)同過濾是要將所有物品屬性以及用戶操作歷史行為數(shù)據(jù)進(jìn)行相應(yīng)的矩陣運(yùn)算,在數(shù)據(jù)不變的情況下,服務(wù)器集群要將所有數(shù)據(jù)計(jì)算出來有一定的困難。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種應(yīng)用的推薦方法、裝置及計(jì)算機(jī)可讀介質(zhì),旨在無論數(shù)據(jù)稠密或稀疏,都能提高應(yīng)用推薦的精度,提升用戶體驗(yàn)。
有鑒于此,本發(fā)明實(shí)施例第一方面,提供了一種應(yīng)用的推薦方法,所述應(yīng)用的推薦方法包括以下步驟:
獲取所有用戶在應(yīng)用中心的操作歷史數(shù)據(jù),并據(jù)此生成主矩陣a;
計(jì)算所述主矩陣a的近似矩陣ak;
通過所述近似矩陣ak獲取用戶相似度矩陣;
結(jié)合所述用戶相似度矩陣和用基于閾值的動態(tài)鄰居選擇方法獲取特定用戶的鄰居用戶合集;
根據(jù)所述特定用戶在應(yīng)用中心的操作歷史數(shù)據(jù)及所述鄰居用戶合集計(jì)算所述特定用戶對目標(biāo)應(yīng)用的預(yù)測評分;
根據(jù)所述預(yù)測評分生成應(yīng)用推薦列表。
在一種可能的設(shè)計(jì)中,所述計(jì)算所述主矩陣a的近似矩陣ak包括:
通過奇異值分解所述主矩陣a,得到第一矩陣u、第二矩陣∑、第三矩陣v;
計(jì)算維度k,并據(jù)此得到第一子矩陣uk、第二子矩陣∑k、第三子矩陣vk;
所述近似矩陣ak為所述第一子矩陣uk、第二子矩陣∑k及所述第三子矩陣vk的倒置矩陣的乘積。
在一種可能的設(shè)計(jì)中,所述計(jì)算維度k包括:若所述主矩陣a是一個(gè)n×m的矩陣,則k與n或m中值較小的一個(gè)相等。
在一種可能的設(shè)計(jì)中,所述通過所述近似矩陣ak獲取用戶相似度矩陣包括:
通過以下公式得到用戶相似度矩陣:
其中,simij表示用戶i和用戶j的相似度。
在一種可能的設(shè)計(jì)中,所述通過所述近似矩陣ak獲取用戶相似度矩陣包括:
利用余弦相似度公式獲取應(yīng)用之間的相似度;
結(jié)合所述應(yīng)用之間的相似度計(jì)算所述用戶相似度矩陣。
在一種可能的設(shè)計(jì)中,所述根據(jù)所述特定用戶在應(yīng)用中心的操作歷史數(shù)據(jù)及所述鄰居用戶合集計(jì)算所述特定用戶對目標(biāo)應(yīng)用的預(yù)測評分包括:
定義所述特定用戶的已評分應(yīng)用集合為ru,所述主矩陣a中對應(yīng)用itemi的評分為auseri;由以下公式計(jì)算集合ru中每個(gè)應(yīng)用itemj和目標(biāo)應(yīng)用itemi的均差值disij;
計(jì)算預(yù)測評分reui,其中numij表示所述鄰居用戶合集中應(yīng)用itemi和itemj均有評分的用戶數(shù)目:
本發(fā)明實(shí)施例第二方面提供了一種應(yīng)用的推薦裝置,所述應(yīng)用的推薦裝置包括:存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運(yùn)行的應(yīng)用的推薦程序,所述應(yīng)用的推薦程序被所述處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1至5中任一項(xiàng)所述的應(yīng)用的推薦方法的步驟。
在一種可能的設(shè)計(jì)中,所述根據(jù)所述特定用戶在應(yīng)用中心的操作歷史數(shù)據(jù)及所述鄰居用戶合集計(jì)算所述特定用戶對目標(biāo)應(yīng)用的預(yù)測評分時(shí),所述應(yīng)用的推薦程序被所述處理器執(zhí)行時(shí)以實(shí)現(xiàn)以下步驟:
定義所述特定用戶的已評分應(yīng)用集合為ru,所述主矩陣a中對應(yīng)用itemi的評分為auseri;由以下公式計(jì)算集合ru中每個(gè)應(yīng)用itemj和目標(biāo)應(yīng)用itemi的均差值disij;
計(jì)算預(yù)測評分reui,其中numij表示所述鄰居用戶合集中應(yīng)用itemi和itemj均有評分的用戶數(shù)目:
本發(fā)明實(shí)施例第三方面提供了一種計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可讀介質(zhì)存儲有應(yīng)用的推薦程序,所述計(jì)算機(jī)可讀存儲介質(zhì)上存儲有應(yīng)用的推薦程序,所述應(yīng)用的推薦程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1至5中任一項(xiàng)所述的應(yīng)用的推薦方法的步驟。
在一種可能的設(shè)計(jì)中,所述根據(jù)所述特定用戶在應(yīng)用中心的操作歷史數(shù)據(jù)及所述鄰居用戶合集計(jì)算所述特定用戶對目標(biāo)應(yīng)用的預(yù)測評分時(shí),所述應(yīng)用的推薦程序被所述處理器執(zhí)行時(shí)以實(shí)現(xiàn)以下步驟:
定義所述特定用戶的已評分應(yīng)用集合為ru,所述主矩陣a中對應(yīng)用itemi的評分為auseri;由以下公式計(jì)算集合ru中每個(gè)應(yīng)用itemj和目標(biāo)應(yīng)用itemi的均差值disij;
計(jì)算預(yù)測評分reui,其中numij表示所述鄰居用戶合集中應(yīng)用itemi和itemj均有評分的用戶數(shù)目:
本發(fā)明提供的應(yīng)用的推薦方法、裝置及計(jì)算機(jī)可讀介質(zhì)能夠在一定程度上解決大數(shù)據(jù)矩陣計(jì)算量的問題,同時(shí)提高推薦的精確度。
附圖說明
圖1為本發(fā)明一種應(yīng)用的推薦方法一個(gè)實(shí)施例的示意圖;
圖2為本發(fā)明一種應(yīng)用的推薦方法另一個(gè)實(shí)施例的示意圖;
圖3為本發(fā)明一種應(yīng)用的推薦方法另一個(gè)實(shí)施例的示意圖;
圖4是本發(fā)明實(shí)施例的對某一特定用戶預(yù)測評分排前十的應(yīng)用的示意圖;
圖5是本發(fā)明實(shí)施例的對某一應(yīng)用的預(yù)測得分和實(shí)際得分的方差結(jié)果示意圖;
本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說明。
具體實(shí)施方式
應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
在后續(xù)的描述中,使用用于表示元件的諸如“模塊”、“部件”或“單元”的后綴僅為了有利于本發(fā)明的說明,其本身沒有特定的意義。因此,“模塊”、“部件”或“單元”可以混合地使用。
請參閱圖1,圖1為本發(fā)明一種應(yīng)用的推薦方法,所述應(yīng)用的推薦方法包括以下步驟:
301、開始;
302、獲取所有用戶在應(yīng)用中心的操作歷史數(shù)據(jù),并據(jù)此生成主矩陣a;
一般地,一個(gè)終端對應(yīng)一個(gè)用戶;當(dāng)然若應(yīng)用中心是設(shè)有賬號的,也可以是一個(gè)終端對應(yīng)多個(gè)用戶;終端需要上傳用戶在應(yīng)用中心的操作歷史數(shù)據(jù);用戶的操作歷史數(shù)據(jù)包括對應(yīng)于的下載、評論、評分等;在具體實(shí)施時(shí),將應(yīng)用名稱結(jié)合其對應(yīng)的所有用戶的操作歷史數(shù)據(jù)生成主矩陣a即可;在本發(fā)明的另一實(shí)施例中主矩陣還可以加入應(yīng)用標(biāo)簽、應(yīng)用描述、圖標(biāo)、下載量以及熱度排行等數(shù)據(jù)信息;
303、計(jì)算所述主矩陣a的近似矩陣ak;
304、通過所述近似矩陣ak獲取用戶相似度矩陣;
305、結(jié)合所述用戶相似度矩陣和用基于閾值的動態(tài)鄰居選擇方法獲取特定用戶的鄰居用戶合集;
306、根據(jù)所述特定用戶在應(yīng)用中心的操作歷史數(shù)據(jù)及所述鄰居用戶合集計(jì)算所述特定用戶對目標(biāo)應(yīng)用的預(yù)測評分;
307、根據(jù)所述預(yù)測評分生成應(yīng)用推薦列表;
308、結(jié)束。
可選地,在上述圖1對應(yīng)的實(shí)施例的基礎(chǔ)上,本發(fā)明實(shí)施例提供的應(yīng)用的推薦方法另一個(gè)可選實(shí)施例中,在執(zhí)行計(jì)算所述主矩陣a的近似矩陣ak的步驟時(shí),如圖2所示,具體包括:
401、開始;
402、通過奇異值分解所述主矩陣a,得到第一矩陣u、第二矩陣∑、第三矩陣v;
矩陣的特征值分解可以得到特征值與特征向量,特征向量可以用來描述矩陣的特性,但是它只是對方陣而言的,在現(xiàn)實(shí)的世界中,大部分矩陣都不是方陣。而奇異值分解是一個(gè)能適用于任意的矩陣的一種分解的方法。
奇異值分解可以用如下公式表達(dá):
a=uσvt
其中,a是一個(gè)n*m的矩陣,那么得到的u是一個(gè)n*n的方陣(里面的向量是正交的,u里面的向量稱為左奇異向量),σ是一個(gè)n*m的矩陣(除了對角線的元素都是0,對角線上的元素稱為奇異值),vt(v的轉(zhuǎn)置)是一個(gè)n*n的矩陣,里面的向量也是正交的,v里面的向量稱為右奇異向量);
在具體計(jì)算時(shí),可以先將主矩陣a的進(jìn)行轉(zhuǎn)置得到at,將會得到一個(gè)方陣,我們用這個(gè)方陣求特征值可以得到:
(ata)vi=λvi
這里得到的v,就是我們上面的右奇異向量。此外我們還可以得到:
這里的σ就是上面說的奇異值;u就是左奇異向量;
403、計(jì)算維度k,并據(jù)此得到第一子矩陣uk、第二子矩陣∑k、第三子矩陣vk;
一般地,若所述主矩陣a是一個(gè)n×m的矩陣,則k與n或m中值較小的一個(gè)相等;
404、所述近似矩陣ak為所述第一子矩陣uk、第二子矩陣∑k及所述第三子矩陣vk的倒置矩陣的乘積;
對于第二矩陣σ,保留其中k個(gè)最大的奇異值,得到一個(gè)新的維度為k×k,k×n的第二子矩陣矩陣σk。相應(yīng)的,通過刪除第一矩陣u以及第三矩陣v相應(yīng)的行或列,得到維度分別為m×k的第一子矩陣uk和第三子矩陣vk,然后對矩陣a重構(gòu);令
405、結(jié)束。
通過上述分析可以得到,奇異值可以表示一個(gè)給定矩陣與比其秩低的矩陣的接近程度。通過這種矩陣的分解,可以找到矩陣a的一個(gè)近似簡化矩陣。
可選地,在上述圖1或圖2對應(yīng)的任一實(shí)施例的基礎(chǔ)上,本發(fā)明實(shí)施例提供的應(yīng)用的推薦方法另一個(gè)可選實(shí)施例中,在通過所述近似矩陣ak獲取用戶相似度矩陣時(shí),包括:
通過以下公式得到用戶相似度矩陣:
其中,simij表示用戶i和用戶j的相似度。
可選地,在上述圖1或圖2對應(yīng)的任一實(shí)施例的基礎(chǔ)上,本發(fā)明實(shí)施例提供的應(yīng)用的推薦方法另一個(gè)可選實(shí)施例中,在通過所述近似矩陣ak獲取用戶相似度矩陣時(shí),如圖3所示,包括:
501、開始;
502、利用余弦相似度公式獲取應(yīng)用之間的相似度;
更具體地,可以采取以下公式獲取應(yīng)用之間的相似度:
503、結(jié)合所述應(yīng)用之間的相似度計(jì)算所述用戶相似度矩陣;
也就是說,在計(jì)算用戶相似度矩陣時(shí),需要考慮到應(yīng)用之間的相似度;
504、結(jié)束。
需要說明的是,若主矩陣a是一個(gè)n*m的矩陣,則近似矩陣ak同樣也是一個(gè)n*m的矩陣,如果將近似矩陣中的每一行作為對應(yīng)用戶的特征,利用余弦相似性,可以得到一個(gè)m*m的用戶相似度矩陣。
可選地,在上述的任一實(shí)施例提供的應(yīng)用的推薦方法的基礎(chǔ)上,本發(fā)明實(shí)施例提供的應(yīng)用的推薦方法另一個(gè)可選實(shí)施例中,在通過所述近似矩陣ak獲取用戶相似度矩陣時(shí),包括:
定義所述特定用戶的已評分應(yīng)用集合為ru,所述主矩陣a中對應(yīng)用itemi的評分為auseri;由以下公式計(jì)算集合ru中每個(gè)應(yīng)用itemj和目標(biāo)應(yīng)用itemi的均差值disij;
計(jì)算預(yù)測評分reui,其中numij表示所述鄰居用戶合集中應(yīng)用itemi和itemj均有評分的用戶數(shù)目:
本發(fā)明還提供一種應(yīng)用的推薦裝置,所述應(yīng)用的推薦裝置包括:存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運(yùn)行的應(yīng)用的推薦程序,所述應(yīng)用的推薦程序被所述處理器執(zhí)行時(shí)實(shí)現(xiàn)本發(fā)明任一實(shí)施例提供的應(yīng)用的推薦方法的步驟。
更具體地,所述應(yīng)用的推薦程序被所述處理器執(zhí)行以實(shí)現(xiàn)以下步驟:
獲取所有用戶在應(yīng)用中心的操作歷史數(shù)據(jù),并據(jù)此生成主矩陣a;
一般地,一個(gè)終端對應(yīng)一個(gè)用戶;當(dāng)然若應(yīng)用中心是設(shè)有賬號的,也可以是一個(gè)終端對應(yīng)多個(gè)用戶;終端需要上傳用戶在應(yīng)用中心的操作歷史數(shù)據(jù);用戶的操作歷史數(shù)據(jù)包括對應(yīng)于的下載、評論、評分等;在具體實(shí)施時(shí),將應(yīng)用名稱結(jié)合其對應(yīng)的所有用戶的操作歷史數(shù)據(jù)生成主矩陣a即可;在本發(fā)明的另一實(shí)施例中主矩陣還可以加入應(yīng)用標(biāo)簽、應(yīng)用描述、圖標(biāo)、下載量以及熱度排行等數(shù)據(jù)信息;
計(jì)算所述主矩陣a的近似矩陣ak;
通過所述近似矩陣ak獲取用戶相似度矩陣;
結(jié)合所述用戶相似度矩陣和用基于閾值的動態(tài)鄰居選擇方法獲取特定用戶的鄰居用戶合集;
根據(jù)所述特定用戶在應(yīng)用中心的操作歷史數(shù)據(jù)及所述鄰居用戶合集計(jì)算所述特定用戶對目標(biāo)應(yīng)用的預(yù)測評分;
根據(jù)所述預(yù)測評分生成應(yīng)用推薦列表。
在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)執(zhí)行計(jì)算所述主矩陣a的近似矩陣ak時(shí),所述應(yīng)用的推薦程序被所述處理器執(zhí)行以實(shí)現(xiàn)以下步驟:
通過奇異值分解所述主矩陣a,得到第一矩陣u、第二矩陣∑、第三矩陣v;
矩陣的特征值分解可以得到特征值與特征向量,特征向量可以用來描述矩陣的特性,但是它只是對方陣而言的,在現(xiàn)實(shí)的世界中,大部分矩陣都不是方陣。而奇異值分解是一個(gè)能適用于任意的矩陣的一種分解的方法。
奇異值分解可以用如下公式表達(dá):
a=uσvt
其中,a是一個(gè)n*m的矩陣,那么得到的u是一個(gè)n*n的方陣(里面的向量是正交的,u里面的向量稱為左奇異向量),σ是一個(gè)n*m的矩陣(除了對角線的元素都是0,對角線上的元素稱為奇異值),vt(v的轉(zhuǎn)置)是一個(gè)n*n的矩陣,里面的向量也是正交的,v里面的向量稱為右奇異向量);
在具體計(jì)算時(shí),可以先將主矩陣a的進(jìn)行轉(zhuǎn)置得到at,將會得到一個(gè)方陣,我們用這個(gè)方陣求特征值可以得到:
(ata)vi=λvi
這里得到的v,就是我們上面的右奇異向量。此外我們還可以得到:
這里的σ就是上面說的奇異值;u就是左奇異向量;
計(jì)算維度k,并據(jù)此得到第一子矩陣uk、第二子矩陣∑k、第三子矩陣vk;
一般地,若所述主矩陣a是一個(gè)n×m的矩陣,則k與n或m中值較小的一個(gè)相等;
所述近似矩陣ak為所述第一子矩陣uk、第二子矩陣∑k及所述第三子矩陣vk的倒置矩陣的乘積;
對于第二矩陣σ,保留其中k個(gè)最大的奇異值,得到一個(gè)新的維度為k×k,k×n的第二子矩陣矩陣σk。相應(yīng)的,通過刪除第一矩陣u以及第三矩陣v相應(yīng)的行或列,得到維度分別為m×k的第一子矩陣uk和第三子矩陣vk,然后對矩陣a重構(gòu);令
在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)通過所述近似矩陣ak獲取用戶相似度矩陣時(shí),所述應(yīng)用的推薦程序被所述處理器執(zhí)行以實(shí)現(xiàn)以下步驟:
通過以下公式得到用戶相似度矩陣:
其中,simij表示用戶i和用戶j的相似度。
在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)通過所述近似矩陣ak獲取用戶相似度矩陣時(shí),所述應(yīng)用的推薦程序被所述處理器執(zhí)行以實(shí)現(xiàn)以下步驟:
利用余弦相似度公式獲取應(yīng)用之間的相似度;
更具體地,可以采取以下公式獲取應(yīng)用之間的相似度:
結(jié)合所述應(yīng)用之間的相似度計(jì)算所述用戶相似度矩陣;
也就是說,在計(jì)算用戶相似度矩陣時(shí),需要考慮到應(yīng)用之間的相似度;
需要說明的是,若主矩陣a是一個(gè)n*m的矩陣,則近似矩陣ak同樣也是一個(gè)n*m的矩陣,如果將近似矩陣中的每一行作為對應(yīng)用戶的特征,利用余弦相似性,可以得到一個(gè)m*m的用戶相似度矩陣。
在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)通過所述近似矩陣ak獲取用戶相似度矩陣時(shí),所述應(yīng)用的推薦程序被所述處理器執(zhí)行以實(shí)現(xiàn)以下步驟:
定義所述特定用戶的已評分應(yīng)用集合為ru,所述主矩陣a中對應(yīng)用itemi的評分為auseri;由以下公式計(jì)算集合ru中每個(gè)應(yīng)用itemj和目標(biāo)應(yīng)用itemi的均差值disij;
計(jì)算預(yù)測評分reui,其中numij表示所述鄰居用戶合集中應(yīng)用itemi和itemj均有評分的用戶數(shù)目:
本發(fā)明還提供一種計(jì)算機(jī)可讀介質(zhì),其特征在于,所述計(jì)算機(jī)可讀存儲介質(zhì)上存儲有應(yīng)用的推薦程序,所述應(yīng)用的推薦程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)本發(fā)明任一實(shí)施例提供的應(yīng)用的推薦方法的步驟。
更具體地,所述應(yīng)用的推薦程序被所述處理器執(zhí)行以實(shí)現(xiàn)以下步驟:
獲取所有用戶在應(yīng)用中心的操作歷史數(shù)據(jù),并據(jù)此生成主矩陣a;
一般地,一個(gè)終端對應(yīng)一個(gè)用戶;當(dāng)然若應(yīng)用中心是設(shè)有賬號的,也可以是一個(gè)終端對應(yīng)多個(gè)用戶;終端需要上傳用戶在應(yīng)用中心的操作歷史數(shù)據(jù);用戶的操作歷史數(shù)據(jù)包括對應(yīng)于的下載、評論、評分等;在具體實(shí)施時(shí),將應(yīng)用名稱結(jié)合其對應(yīng)的所有用戶的操作歷史數(shù)據(jù)生成主矩陣a即可;在本發(fā)明的另一實(shí)施例中主矩陣還可以加入應(yīng)用標(biāo)簽、應(yīng)用描述、圖標(biāo)、下載量以及熱度排行等數(shù)據(jù)信息;
計(jì)算所述主矩陣a的近似矩陣ak;
通過所述近似矩陣ak獲取用戶相似度矩陣;
結(jié)合所述用戶相似度矩陣和用基于閾值的動態(tài)鄰居選擇方法獲取特定用戶的鄰居用戶合集;
根據(jù)所述特定用戶在應(yīng)用中心的操作歷史數(shù)據(jù)及所述鄰居用戶合集計(jì)算所述特定用戶對目標(biāo)應(yīng)用的預(yù)測評分;
根據(jù)所述預(yù)測評分生成應(yīng)用推薦列表。
在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)執(zhí)行計(jì)算所述主矩陣a的近似矩陣ak時(shí),所述應(yīng)用的推薦程序被所述處理器執(zhí)行以實(shí)現(xiàn)以下步驟:
通過奇異值分解所述主矩陣a,得到第一矩陣u、第二矩陣∑、第三矩陣v;
矩陣的特征值分解可以得到特征值與特征向量,特征向量可以用來描述矩陣的特性,但是它只是對方陣而言的,在現(xiàn)實(shí)的世界中,大部分矩陣都不是方陣。而奇異值分解是一個(gè)能適用于任意的矩陣的一種分解的方法。
奇異值分解可以用如下公式表達(dá):
a=uσvt
其中,a是一個(gè)n*m的矩陣,那么得到的u是一個(gè)n*n的方陣(里面的向量是正交的,u里面的向量稱為左奇異向量),σ是一個(gè)n*m的矩陣(除了對角線的元素都是0,對角線上的元素稱為奇異值),vt(v的轉(zhuǎn)置)是一個(gè)n*n的矩陣,里面的向量也是正交的,v里面的向量稱為右奇異向量);
在具體計(jì)算時(shí),可以先將主矩陣a的進(jìn)行轉(zhuǎn)置得到at,將會得到一個(gè)方陣,我們用這個(gè)方陣求特征值可以得到:
(ata)vi=λvi
這里得到的v,就是我們上面的右奇異向量。此外我們還可以得到:
這里的σ就是上面說的奇異值;u就是左奇異向量;
計(jì)算維度k,并據(jù)此得到第一子矩陣uk、第二子矩陣∑k、第三子矩陣vk;
一般地,若所述主矩陣a是一個(gè)n×m的矩陣,則k與n或m中值較小的一個(gè)相等;
所述近似矩陣ak為所述第一子矩陣uk、第二子矩陣∑k及所述第三子矩陣vk的倒置矩陣的乘積;
對于第二矩陣σ,保留其中k個(gè)最大的奇異值,得到一個(gè)新的維度為k×k,k×n的第二子矩陣矩陣σk。相應(yīng)的,通過刪除第一矩陣u以及第三矩陣v相應(yīng)的行或列,得到維度分別為m×k的第一子矩陣uk和第三子矩陣vk,然后對矩陣a重構(gòu);令
在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)通過所述近似矩陣ak獲取用戶相似度矩陣時(shí),所述應(yīng)用的推薦程序被所述處理器執(zhí)行以實(shí)現(xiàn)以下步驟:
通過以下公式得到用戶相似度矩陣:
其中,simij表示用戶i和用戶j的相似度。
在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)通過所述近似矩陣ak獲取用戶相似度矩陣時(shí),所述應(yīng)用的推薦程序被所述處理器執(zhí)行以實(shí)現(xiàn)以下步驟:
利用余弦相似度公式獲取應(yīng)用之間的相似度;
更具體地,可以采取以下公式獲取應(yīng)用之間的相似度:
結(jié)合所述應(yīng)用之間的相似度計(jì)算所述用戶相似度矩陣;
也就是說,在計(jì)算用戶相似度矩陣時(shí),需要考慮到應(yīng)用之間的相似度;
需要說明的是,若主矩陣a是一個(gè)n*m的矩陣,則近似矩陣ak同樣也是一個(gè)n*m的矩陣,如果將近似矩陣中的每一行作為對應(yīng)用戶的特征,利用余弦相似性,可以得到一個(gè)m*m的用戶相似度矩陣。
在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)通過所述近似矩陣ak獲取用戶相似度矩陣時(shí),所述應(yīng)用的推薦程序被所述處理器執(zhí)行以實(shí)現(xiàn)以下步驟:
定義所述特定用戶的已評分應(yīng)用集合為ru,所述主矩陣a中對應(yīng)用itemi的評分為auseri;由以下公式計(jì)算集合ru中每個(gè)應(yīng)用itemj和目標(biāo)應(yīng)用itemi的均差值disij;
計(jì)算預(yù)測評分reui,其中numij表示所述鄰居用戶合集中應(yīng)用itemi和itemj均有評分的用戶數(shù)目:
需要說明的是,本發(fā)明中用戶在應(yīng)用中心的操作歷史數(shù)據(jù)可以以評分的形式進(jìn)行表現(xiàn),用戶在應(yīng)用中心的操作歷史數(shù)據(jù)包括用戶停留該應(yīng)用的時(shí)間、一天內(nèi)開啟的次數(shù)、對該應(yīng)用進(jìn)行的操作等。
下面結(jié)合具體的實(shí)例,進(jìn)一步說明本發(fā)明:
在具體實(shí)施時(shí),根據(jù)上述任一實(shí)施例提供的步驟構(gòu)建模型,導(dǎo)入用戶、用戶在應(yīng)用中心的操作歷史數(shù)據(jù);得出各應(yīng)用的評分,并將排名在前的應(yīng)用推薦給用戶。請參照圖4,圖4是對某一特定用戶預(yù)測評分排前十的應(yīng)用;更具體地,第一列為用戶編碼,第二列為應(yīng)用軟件編碼,第三列為預(yù)測用戶得分;本實(shí)施例中,用戶編碼為65722,其對應(yīng)的預(yù)測評分排前十的應(yīng)用即為第二列編碼對應(yīng)的應(yīng)用。
請參照圖5,本發(fā)明將用戶已安裝的其中一個(gè)應(yīng)用進(jìn)行屏蔽后,實(shí)施本發(fā)明提供的技術(shù)方案,將屏蔽的應(yīng)用的預(yù)測得分與根據(jù)用戶歷史操作數(shù)據(jù)得出的實(shí)際得分進(jìn)行方差的計(jì)算,本實(shí)施例中得出的方差為4.10e-6,趨近于零;可見,本發(fā)明得出的預(yù)測得分具有較高的準(zhǔn)確率。
本發(fā)明實(shí)施例提供的應(yīng)用的推薦方法、裝置及計(jì)算機(jī)可讀介質(zhì),通過奇異值分解對用戶評分矩陣進(jìn)行降維,使得其在計(jì)算應(yīng)用中心推薦超大數(shù)據(jù)量時(shí)能夠占用較少的服務(wù)器資源,能夠在一定程度上解決大數(shù)據(jù)矩陣計(jì)算量的問題,縮短計(jì)算時(shí)間,同時(shí)提高了應(yīng)用推薦精度。
需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。
上述本發(fā)明實(shí)施例序號僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法可借助軟件加必需的通用硬件平臺的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在一個(gè)存儲介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端(可以是手機(jī),計(jì)算機(jī),服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
上面結(jié)合附圖對本發(fā)明的實(shí)施例進(jìn)行了描述,但是本發(fā)明并不局限于上述的具體實(shí)施方式,上述的具體實(shí)施方式僅僅是示意性的,而不是限制性的,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的啟示下,在不脫離本發(fā)明宗旨和權(quán)利要求所保護(hù)的范圍情況下,還可做出很多形式,這些均屬于本發(fā)明的保護(hù)之內(nèi)。