一種基于項(xiàng)目的協(xié)同過濾推薦方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種基于項(xiàng)目的協(xié)同過濾推薦方法及裝置。
【背景技術(shù)】
[0002]協(xié)同過濾推薦(Collaborative Filtering recommendat1n)技術(shù)是目前推薦系統(tǒng)中應(yīng)用最為廣泛的技術(shù)之一。與傳統(tǒng)的基于內(nèi)容過濾直接分析內(nèi)容進(jìn)行推薦不同,協(xié)同過濾分析用戶興趣,在用戶群中找到指定用戶的相似(興趣)用戶,綜合這些相似用戶對某一信息的評價,形成系統(tǒng)對該指定用戶對此信息的喜好程度預(yù)測。
[0003]目前,協(xié)同過濾推薦算法主要分為基于項(xiàng)目的協(xié)同過濾推薦算法和基于用戶的協(xié)同過濾推薦算法,其中,基于項(xiàng)目的協(xié)同過濾推薦算法,通過相同用戶對不同的項(xiàng)目的評分來評測項(xiàng)目之間的相似性,基于項(xiàng)目之間的相似性做出推薦;基于用戶的協(xié)同過濾推薦算法,通過不同用戶對相同項(xiàng)目的評分來評測用戶之間的相似性,基于用戶之間的相似性做出推薦。
[0004]現(xiàn)有兩種基于項(xiàng)目的協(xié)同過濾推薦算法的方式,一種方式是使用一臺計(jì)算機(jī)來進(jìn)行基于項(xiàng)目的協(xié)同過濾推薦算法的計(jì)算;另一種方式是使用計(jì)算機(jī)集群來進(jìn)行基于項(xiàng)目的協(xié)同過濾推薦算法的計(jì)算。
[0005]然而,在實(shí)際應(yīng)用中,使用一臺計(jì)算機(jī)來進(jìn)行基于項(xiàng)目的協(xié)同過濾推薦算法的計(jì)算時,當(dāng)被計(jì)算的數(shù)據(jù)集的數(shù)據(jù)量達(dá)到內(nèi)存容納不下的量級時,算法的性能不高;使用計(jì)算機(jī)集群來進(jìn)行基于項(xiàng)目的協(xié)同過濾推薦算法的計(jì)算時,計(jì)算機(jī)集群的每臺計(jì)算機(jī)計(jì)算數(shù)據(jù)集的一部分,雖然能解決數(shù)據(jù)量大的問題,但是需要增加額外的輔助功能,影響算法的性能。例如:同一份數(shù)據(jù)在計(jì)算機(jī)集群里的各個計(jì)算機(jī)里都有一份拷貝,數(shù)據(jù)存在冗余;計(jì)算機(jī)集群的各個計(jì)算機(jī)需要保存計(jì)算的數(shù)據(jù),同時各個計(jì)算機(jī)之間還需要進(jìn)行通信;計(jì)算機(jī)集群的每臺計(jì)算機(jī)計(jì)算數(shù)據(jù)集的一部分之后,還需要將計(jì)算的結(jié)果整合在一起,并且需要對拆分成若干數(shù)據(jù)子集的邊緣數(shù)據(jù)進(jìn)行處理。并且隨著數(shù)據(jù)量的增加,需要增加計(jì)算機(jī)集群中的計(jì)算機(jī),增加了成本。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實(shí)施例的目的在于提供一種基于項(xiàng)目的協(xié)同過濾推薦方法及裝置,以提高基于項(xiàng)目的協(xié)同過濾推薦算法的性能,且避免成本的增加。
[0007]為達(dá)到上述目的,本發(fā)明實(shí)施例公開了一種基于項(xiàng)目的協(xié)同過濾推薦方法,包括:
[0008]獲得目標(biāo)數(shù)據(jù)集;
[0009]將目標(biāo)數(shù)據(jù)集拆解成若干適合內(nèi)存容量的數(shù)據(jù)塊;
[0010]對每個數(shù)據(jù)塊B中的每個項(xiàng)目i,在本地計(jì)算項(xiàng)目i和該數(shù)據(jù)塊B中其它項(xiàng)目的相似度;
[0011]將與所述項(xiàng)目i的相似度高于預(yù)設(shè)的閾值對應(yīng)的項(xiàng)目確定為項(xiàng)目i的候選推薦項(xiàng)目。
[0012]較佳的,所述目標(biāo)數(shù)據(jù)集,包括:
[0013]不同用戶收藏的網(wǎng)址信息;
[0014]或不同用戶點(diǎn)擊過的廣告信息;
[0015]或不同用戶搜索過的內(nèi)容;
[0016]或不同用戶購買過的商品。
[0017]較佳的,所述方法還包括:
[0018]判斷項(xiàng)目i的候選推薦項(xiàng)目的數(shù)量是否達(dá)到項(xiàng)目i實(shí)際推薦項(xiàng)目的需求數(shù)量N ;
[0019]在項(xiàng)目i的候選推薦項(xiàng)目的數(shù)量達(dá)到項(xiàng)目i實(shí)際推薦項(xiàng)目的需求數(shù)量N的情況下,對項(xiàng)目i的候選推薦項(xiàng)目中的所有項(xiàng)目按照相似度數(shù)值從高到低排序;
[0020]從排序隊(duì)列中選取前N個項(xiàng)目作為項(xiàng)目i實(shí)際推薦項(xiàng)目,向客戶端反饋項(xiàng)目i的實(shí)際推薦的項(xiàng)目,以使所述客戶端將所述項(xiàng)目i的實(shí)際推薦的項(xiàng)目推薦給所述項(xiàng)目i的用戶。
[0021 ] 較佳的,所述方法還包括:
[0022]在項(xiàng)目i的候選推薦項(xiàng)目的數(shù)量沒有達(dá)到項(xiàng)目i實(shí)際推薦項(xiàng)目的需求數(shù)量N的情況下,將項(xiàng)目i的候選推薦項(xiàng)目中的所有項(xiàng)目作為項(xiàng)目i實(shí)際推薦項(xiàng)目,向客戶端反饋項(xiàng)目i的實(shí)際推薦的項(xiàng)目,以使所述客戶端將所述項(xiàng)目i的實(shí)際推薦的項(xiàng)目推薦給所述項(xiàng)目i的用戶。
[0023]較佳的,所述方法還包括:
[0024]在項(xiàng)目i的候選推薦項(xiàng)目的數(shù)量沒有達(dá)到項(xiàng)目i實(shí)際推薦項(xiàng)目的需求數(shù)量N的情況下,將預(yù)設(shè)的閾值調(diào)低,直到在項(xiàng)目i所處的數(shù)據(jù)塊B中,項(xiàng)目i的候選推薦項(xiàng)目的數(shù)量達(dá)到項(xiàng)目i實(shí)際推薦項(xiàng)目的需求數(shù)量N ;
[0025]對項(xiàng)目i的候選推薦項(xiàng)目中的所有項(xiàng)目按照相似度數(shù)值從高到低排序;
[0026]從排序隊(duì)列中選取前N個項(xiàng)目作為項(xiàng)目i實(shí)際推薦的項(xiàng)目,向客戶端反饋項(xiàng)目i的實(shí)際推薦的項(xiàng)目,以使所述客戶端將所述項(xiàng)目i的實(shí)際推薦的項(xiàng)目推薦給所述項(xiàng)目i的用戶。
[0027]較佳的,所述方法還包括:
[0028]在項(xiàng)目i的候選推薦項(xiàng)目的數(shù)量沒有達(dá)到項(xiàng)目i實(shí)際推薦項(xiàng)目的需求數(shù)量N的情況下,計(jì)算項(xiàng)目i和至少一個其它數(shù)據(jù)塊中的各項(xiàng)目的相似度;
[0029]將與所述項(xiàng)目i的相似度高于預(yù)設(shè)的閾值對應(yīng)的項(xiàng)目確定為項(xiàng)目i的候選推薦項(xiàng)目。
[0030]較佳的,所述方法還包括:
[0031]判斷項(xiàng)目i的候選推薦項(xiàng)目的數(shù)量是否達(dá)到項(xiàng)目i實(shí)際推薦項(xiàng)目的需求數(shù)量N ;
[0032]在項(xiàng)目i的候選推薦項(xiàng)目的數(shù)量達(dá)到項(xiàng)目i實(shí)際推薦項(xiàng)目的需求數(shù)量N的情況下,對項(xiàng)目i的候選推薦項(xiàng)目中的所有項(xiàng)目按照相似度數(shù)值從高到低排序;
[0033]從排序隊(duì)列中選取前N個項(xiàng)目作為項(xiàng)目i實(shí)際推薦項(xiàng)目,向客戶端反饋項(xiàng)目i的實(shí)際推薦的項(xiàng)目,以使所述客戶端將所述項(xiàng)目i的實(shí)際推薦的項(xiàng)目推薦給所述項(xiàng)目i的用戶。
[0034]較佳的,所述方法還包括:
[0035]在項(xiàng)目i的候選推薦項(xiàng)目的數(shù)量沒有達(dá)到項(xiàng)目i實(shí)際推薦項(xiàng)目的需求數(shù)量N的情況下,將項(xiàng)目i的候選推薦項(xiàng)目中的所有項(xiàng)目作為項(xiàng)目i實(shí)際推薦項(xiàng)目,向客戶端反饋項(xiàng)目i的實(shí)際推薦的項(xiàng)目,以使所述客戶端將所述項(xiàng)目i的實(shí)際推薦的項(xiàng)目推薦給所述項(xiàng)目i的用戶。
[0036]較佳的,所述方法還包括:
[0037]在項(xiàng)目i的候選推薦項(xiàng)目的數(shù)量沒有達(dá)到項(xiàng)目i實(shí)際推薦項(xiàng)目的需求數(shù)量N的情況下,將預(yù)設(shè)的閾值調(diào)低,直到在所有數(shù)據(jù)塊中,項(xiàng)目i的候選推薦項(xiàng)目的數(shù)量達(dá)到項(xiàng)目i實(shí)際推薦項(xiàng)目的需求數(shù)量N;
[0038]對項(xiàng)目i的候選推薦項(xiàng)目中的所有項(xiàng)目按照相似度數(shù)值從高到低排序;
[0039]從排序隊(duì)列中選取前N個項(xiàng)目作為項(xiàng)目i實(shí)際推薦的項(xiàng)目,向客戶端反饋項(xiàng)目i的實(shí)際推薦的項(xiàng)目,以使所述客戶端將所述項(xiàng)目i的實(shí)際推薦的項(xiàng)目推薦給所述項(xiàng)目i的用戶。
[0040]為達(dá)到上述目的,本發(fā)明實(shí)施例還公開了一種基于項(xiàng)目的協(xié)同過濾推薦裝置,包括:
[0041]數(shù)據(jù)集獲得模塊,用于獲得目標(biāo)數(shù)據(jù)集;
[0042]數(shù)據(jù)集拆解模塊,用于將目標(biāo)數(shù)據(jù)集拆解成若干適合內(nèi)存容量的數(shù)據(jù)塊;
[0043]第一相似度計(jì)算模塊,用于對每個數(shù)據(jù)塊B中的每個項(xiàng)目i,在本地計(jì)算項(xiàng)目i和該數(shù)據(jù)塊B中其它項(xiàng)目的相似度;
[0044]候選推薦項(xiàng)目確定模塊,用于將與所述項(xiàng)目i的相似度高于預(yù)設(shè)的閾值對應(yīng)的項(xiàng)目確定為項(xiàng)目i的候選推薦項(xiàng)目。
[0045]較佳的,所述目標(biāo)數(shù)據(jù)集,包括:
[0046]不同用戶收藏的網(wǎng)址信息;
[0047]或不同用戶點(diǎn)擊過的廣告信息;
[0048]或不同用戶搜索過的內(nèi)容;
[0049]或不同用戶購買過的商品。
[0050]較佳的,所述裝置還包括:
[0051]第一判斷模塊,用于判斷項(xiàng)目i的候選推薦項(xiàng)目的數(shù)量是否達(dá)到項(xiàng)目i實(shí)際推薦項(xiàng)目的需求數(shù)量N;
[0052]排序模塊,用于在第一判斷模塊判斷結(jié)果為是的情況下,對項(xiàng)目i的候選推薦項(xiàng)目中的所有項(xiàng)目按照相似度數(shù)值從高到低排序;
[0053]實(shí)際推薦項(xiàng)目選取模塊,用于從排序隊(duì)列中選取前N個項(xiàng)目作為項(xiàng)目i實(shí)際推薦項(xiàng)目,向客戶端反饋項(xiàng)目i的實(shí)際推薦的項(xiàng)目,以使所述客戶端將所述項(xiàng)目i的實(shí)際推薦的項(xiàng)目推薦給所述項(xiàng)目i的用戶。
[0054]較佳的,所述實(shí)際推薦項(xiàng)目選取模塊,還用于:
[0055]在第一判斷模塊判斷結(jié)果為否的情況下,將項(xiàng)目i的候選推薦項(xiàng)目中的所有項(xiàng)目作為項(xiàng)目i實(shí)際推薦項(xiàng)目,向客戶端反饋項(xiàng)目i的實(shí)際推薦的項(xiàng)目,以使所述客戶端將所述項(xiàng)目i的實(shí)際推薦的項(xiàng)目推薦給所述項(xiàng)目i的用戶。
[0056]較佳的,所述裝置還包括:
[0057]第一閾值調(diào)整模塊,用于在第一判斷模塊判斷結(jié)果為否的情況下,將預(yù)設(shè)的閾值調(diào)低,直到在項(xiàng)目i所處的數(shù)據(jù)塊B中,項(xiàng)目i的候選推薦項(xiàng)目的數(shù)量達(dá)到項(xiàng)目i實(shí)際推薦項(xiàng)目的需求數(shù)量N。
[0058]較佳的,所述裝置還包括:
[0059]第二判斷模塊,用于在第一判斷模塊判斷結(jié)果為否的情況下,判斷是否還存在未和項(xiàng)目i計(jì)算相似度的其他數(shù)據(jù)塊的項(xiàng)目;
[0060]第二相似度計(jì)算模塊,用于在第二判斷模塊判斷結(jié)果為是的情況下,計(jì)算項(xiàng)目i和其它數(shù)據(jù)塊中的各項(xiàng)目的相似度。
[0061]較佳的,所述實(shí)際推薦項(xiàng)目選取模塊,還用于:
[0062]在第二判斷模塊判斷結(jié)果為否的情況下,將項(xiàng)目i的候選推薦項(xiàng)目中的所有項(xiàng)目作為項(xiàng)目i實(shí)際推薦項(xiàng)目,向客戶端反饋項(xiàng)目i的實(shí)際推薦的項(xiàng)目,以使所述客戶端將所述項(xiàng)目i的實(shí)際推薦的項(xiàng)目推薦給所述項(xiàng)目i的用戶。
[0063]較佳的,所述裝置還包括:
[0064]第二閾值調(diào)整模塊,用于在第二判斷模塊判斷結(jié)果為否的情況下,將預(yù)設(shè)的閾值調(diào)低,直到在所有數(shù)據(jù)塊中,項(xiàng)目i的候選推薦項(xiàng)目的數(shù)量達(dá)到項(xiàng)目i實(shí)際推薦項(xiàng)目的需求數(shù)量N。
[0065]較佳的,所述候選推薦項(xiàng)目確定模塊,還用于:
[0066]將相似度高于調(diào)低后的閾值對應(yīng)的項(xiàng)目確定為項(xiàng)目i的候選推薦項(xiàng)目。
[0067]由上述的技術(shù)方案可見,本發(fā)明實(shí)施例只使用一臺計(jì)算機(jī)進(jìn)行基于項(xiàng)目的協(xié)同過濾推薦算法的計(jì)算,在計(jì)算時,將項(xiàng)目的整個數(shù)據(jù)集拆解成若干適合內(nèi)存容量的數(shù)據(jù)塊,對每個數(shù)據(jù)塊B中的每個項(xiàng)目i,在本地計(jì)算該項(xiàng)目i和該數(shù)據(jù)塊B中其它項(xiàng)目的相似度,將與所述項(xiàng)目i的相似度高于預(yù)設(shè)的閾值對應(yīng)的項(xiàng)目確定為該項(xiàng)目i的候