獲取推薦對象的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計算機技術(shù)領(lǐng)域,尤其涉及一種獲取推薦對象的方法及裝置。
【背景技術(shù)】
[0002] 隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,人們進入了信息過載的時代。在用戶訪問網(wǎng)站的過程中, 大量的新聞、商品、視頻、音樂等等對象呈現(xiàn)在了用戶面前。怎樣篩選出用戶真正感興趣的 內(nèi)容對提高網(wǎng)站的訪問量及收益有著非常重要的意義。推薦系統(tǒng)相關(guān)的技術(shù)在這樣的背景 下得到了越來越廣泛的使用。
[0003] 近幾年來矩陣分解算法成為了推薦系統(tǒng)領(lǐng)域研宄的主流,研宄表明在個性化推薦 中使用矩陣分解技術(shù)可以得到比傳統(tǒng)基于鄰域的協(xié)同過濾更好的結(jié)果。矩陣分解算法將用 戶對對象的評分矩陣進行分解,生成用戶矩陣U和對象矩陣V,這樣就將用戶和對象映射到 了高維的潛語義空間。用戶矩陣及對象矩陣的每一行都是一個向量,表示相應的用戶和對 象。用戶向量與一個對象向量的內(nèi)積就是該用戶對對象的評分,內(nèi)積越大,評分越高,表示 越是推薦。每個用戶的推薦對象可以取所有對象中K個內(nèi)積最大的對象向量對應的對象作 為推薦結(jié)果。
[0004] 在實際應用場景中,用戶和對象的數(shù)量往往龐大,相當于多達千萬的用戶都需要 在千萬級對象構(gòu)成的高維空間中搜索K個最大的內(nèi)積,該計算過程非常耗時。因此需要一 種方案能夠快速地完成用戶和對象向量間最大內(nèi)積的TopK計算。
[0005] 若采用最基本的線性搜索方法進行最近鄰搜索,則時間復雜度較高,無法滿足海 量數(shù)據(jù)下的需求。常用的解決方案是建立高維索引,利用高效的數(shù)據(jù)結(jié)構(gòu)和算法完成搜索。 但是,由于內(nèi)積不滿足三角不等性且無法衡量向量間的相似性,導致常用的聚類、高維索引 樹、局部感知哈希等建立高維索引的方案均無法直接適用于內(nèi)積空間的搜索。
【發(fā)明內(nèi)容】
[0006] 有鑒于此,本發(fā)明提供一種獲取推薦對象的方法及裝置,具有搜索速度快,適用范 圍廣等優(yōu)點。
[0007] 為實現(xiàn)上述目的,根據(jù)本發(fā)明的一個方面,提供了一種獲取推薦對象的方法,包 括:構(gòu)建原始用戶矩陣和原始對象矩陣,其中,所述原始用戶矩陣中的每一行為原始用戶向 量,每個所述原始用戶向量表示一個用戶的多重屬性特征,所述原始對象矩陣中的每一行 為原始對象向量,每個所述原始對象向量表示一個對象的多重屬性特征;對原始用戶矩陣 和原始對象矩陣進行保序變換,得到新用戶矩陣和新對象矩陣;對所述新對象矩陣中的新 對象向量構(gòu)建對象高維索引結(jié)構(gòu);對所述新用戶矩陣中的各個新用戶向量在所述對象高維 索引結(jié)構(gòu)中進行最近鄰搜索,得到所述新用戶向量對應的最近鄰新對象向量;根據(jù)各個所 述新用戶向量及其對應的所述最近鄰新對象向量,輸出用戶與推薦對象的映射。
[0008] 可選地,所述對原始用戶矩陣和原始對象矩陣進行保序變換,得到新用戶矩陣和 新對象矩陣的步驟包括:對所述原始用戶矩陣的第i行向量\添加數(shù)值0作為一個新的維 度,得到新用戶向量A= (O.xf)'從而得到所述新用戶矩陣;計算所述原始對象矩陣的第j行向量yj的2-范數(shù)以及該2-范數(shù)的最大值少,對所述yj添加_
作為一個新 的維度,得到新對象向量
,從而得到所述新對象矩陣。
[0009] 可選地,所述對所述新對象矩陣中的新對象向量構(gòu)建對象高維索引結(jié)構(gòu)的步驟包 括:將所述新對象矩陣中的新對象向量聚類得到多個對象子類,每個對象子類具有一個對 象聚類中心;為每個所述對象子類建立vp-tree樹結(jié)構(gòu)。
[0010] 可選地,所述對所述新用戶矩陣中的各個新用戶向量在所述對象高維索引結(jié)構(gòu)中 進行最近鄰搜索,得到所述新用戶向量對應的最近鄰新對象向量的步驟包括:將所述對象 高維索引結(jié)構(gòu)序列化地保存為對象索引文件并發(fā)送給多個節(jié)點;在每個所述節(jié)點上,根據(jù) 所述新對象矩陣和所述對象索引文件重建出所述對象高維索引結(jié)構(gòu);采用map-reduce技 術(shù),通過hadoop框架在所述多個節(jié)點中對所述新用戶矩陣中的各個新用戶向量進行最近 鄰搜索,得到所述新用戶向量對應的最近鄰新對象向量。
[0011] 可選地,所述采用map-reduce技術(shù),通過hadoop框架在所述多個節(jié)點中對所述 新用戶矩陣中的各個新用戶向量進行最近鄰搜索,得到所述新用戶向量對應的所述最近鄰 新對象向量的步驟包括:將所述新用戶矩陣均分成多個新用戶向量組并分發(fā)到所述多個 節(jié)點,所述hadoop為分發(fā)到各個節(jié)點的所述新用戶向量組分別建立mapper;在各個所述 mapper內(nèi)為對應的所述新用戶向量組中各個新用戶向量執(zhí)行以下操作:計算所述新用戶 向量與各個所述對象聚類中心的歐氏距離,找到歐氏距離最近的所述對象聚類中心,進入 該歐氏距離最近的對象聚類中心對應的vp-tree,通過遞歸遍歷樹完成該vp-tree的最近 鄰搜索,得到所述新用戶向量對應的最近鄰新對象向量;在reducer中匯總并保存所述新 用戶向量與對應的所述最近鄰新向量對象的映射關(guān)系。
[0012] 為實現(xiàn)上述目的,根據(jù)本發(fā)明的另一方面,提供了一種獲取推薦對象的裝置,包 括:矩陣構(gòu)建模塊,用于構(gòu)建原始用戶矩陣和原始對象矩陣,其中,所述原始用戶矩陣中的 每一行為原始用戶向量,每個所述原始用戶向量表示一個用戶的多重屬性特征,所述原始 對象矩陣中的每一行為原始對象向量,每個所述原始對象向量表示一個對象的多重屬性特 征;保序變換模塊,用于對原始用戶矩陣和原始對象矩陣進行保序變換,得到新用戶矩陣和 新對象矩陣;索引構(gòu)建模塊,用于對所述新對象矩陣中的新對象向量構(gòu)建對象高維索引結(jié) 構(gòu);搜索模塊,用于對所述新用戶矩陣中的各個新用戶向量在所述對象高維索引結(jié)構(gòu)中進 行最近鄰搜索,得到所述新用戶向量對應的最近鄰新對象向量;輸出模塊,用于根據(jù)各個所 述新用戶向量及其對應的所述最近鄰新對象向量,輸出用戶與推薦對象的映射。
[0013] 可選地,所述矩陣構(gòu)建模塊還用于:對所述原始用戶矩陣的第i行向量Xi添加數(shù) 值0作為一個新的維度,得到所述新用戶向量X; = (0,xD'從而得到所述新用戶矩陣;計 算所述原始對象矩陣的第j行向量h的2-范數(shù)以及該2-范數(shù)的最大值P,對所述h添加
作為一個新的維度,得到所述新對象向量
,從而 得到所述新對象矩陣。
[0014] 可選地,所述索引構(gòu)建模塊還用于:將所述新對象矩陣中的新對象向量聚類,得到 多個對象子類,每個對象子類具有一個對象聚類中心;為每個所述對象子類建立vp-tree 樹結(jié)構(gòu)。
[0015] 可選地,所述搜索模塊還用于:將所述對象高維索引結(jié)構(gòu)序列化地保存為對象索 引文件并發(fā)送給多個節(jié)點;在每個所述節(jié)點上,根據(jù)所述新對象矩陣和所述對象索引文件 重建出所述對象高維索引結(jié)構(gòu);采用map-reduce技術(shù),通過hadoop框架在所述多個節(jié)點中 對所述新用戶矩陣中的各個新用戶向量進行最近鄰搜索,得到所述新用戶向量對應的所述 最近鄰新對象向量。
[0016] 可選地,所述搜索模塊還用于:將所述新用戶矩陣均分成多個新用戶向量組并分 發(fā)到所述多個節(jié)點,所述hadoop為分發(fā)到各個節(jié)點的所述新用戶向量組分別建立mapper; 在各個所述mapper內(nèi)為對應的所述新用戶向量組中各個新用戶向量執(zhí)行以下操作:計 算所述新用戶向量與各個所述對象聚類中心的歐氏距離,