一種基于多關(guān)系網(wǎng)絡(luò)的推薦算法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及信息處理的技術(shù)領(lǐng)域,尤其是指一種基于多關(guān)系網(wǎng)絡(luò)的推薦算法。
【背景技術(shù)】
[0002] 構(gòu)建推薦系統(tǒng)的技術(shù)方法有很多種,其中協(xié)同過濾推薦算法是目前應(yīng)用最普遍也 是最基本的方法。但是傳統(tǒng)的協(xié)同過濾算法遇到一些問題,比如冷啟動問題、稀疏性問題 等。而研究發(fā)現(xiàn),用戶參與的社會網(wǎng)絡(luò)為完成推薦任務(wù)提供了豐富的信息,不僅可以從一定 程度上緩解這些問題,而且可以獲得更好的推薦效果。
[0003] 當(dāng)前已有很多基于單關(guān)系社會網(wǎng)絡(luò)的推薦算法,實驗也證明社會網(wǎng)絡(luò)信息的加入 有助于推薦效果的提升。然而,實際生活中,用戶參與的社會網(wǎng)絡(luò)是復(fù)雜多樣的,所以本文 提出基于多關(guān)系社會網(wǎng)絡(luò)的LinkTrust方法,期望能充分利用多個社會網(wǎng)絡(luò)提供的信息, 來提高推薦的效果。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的在于克服現(xiàn)有的推薦算法不能考慮用戶多個社交關(guān)系的不足,提供 一種基于多關(guān)系網(wǎng)絡(luò)的推薦算法,該算法不僅能提高推薦的效果,而且能改善冷啟動的問 題。
[0005] 為實現(xiàn)上述目的,本發(fā)明所提供的技術(shù)方案為:一種基于多關(guān)系網(wǎng)絡(luò)的推薦算法, 包括以下步驟:
[0006] 1)將用戶數(shù)據(jù)集按照不同關(guān)系網(wǎng)絡(luò)分類,將關(guān)系網(wǎng)絡(luò)表示成矩陣;
[0007] 2)對每個單關(guān)系網(wǎng)絡(luò)的用戶,計算兩兩用戶之間的綜合鏈接距離;
[0008] 3)根據(jù)步驟2)得到兩個用戶之間在各個單關(guān)系網(wǎng)絡(luò)的綜合鏈接距離,計算用戶 之間的Jaccard系數(shù);
[0009] 4)根據(jù)用戶之間的Jaccard系數(shù),進(jìn)行二值化處理,構(gòu)建一個綜合網(wǎng)絡(luò),最后根據(jù) 基于單關(guān)系網(wǎng)絡(luò)的TrustWalker算法,完成最終的推薦任務(wù)。
[0010] 在步驟2)中,所述兩兩用戶之間的綜合鏈接距離,由以下步驟得到:
[0011] 2. 1)查找目標(biāo)節(jié)點相鄰的所有節(jié)點;
[0012] 2. 2)計算源節(jié)點與所述相鄰節(jié)點之間的路徑距離,結(jié)果加1 ;
[0013] 2. 3)考慮到多條路徑對到達(dá)目標(biāo)節(jié)點都會有貢獻(xiàn),所以綜合考慮多條路徑,可用 下面公式計算綜合鏈接距離:
[0015] 其中,dlast為源節(jié)點與目標(biāo)節(jié)點間的綜合鏈接距離,dn表示源節(jié)點到目標(biāo)節(jié)點各個 鄰接節(jié)點路徑距離加1。
[0016] 在步驟3)中,所述Jaccard系數(shù)由以下步驟得到:
[0017] 3. 1)對于單關(guān)系網(wǎng)絡(luò)中的用戶,根據(jù)步驟)得到所述綜合鏈接距離,當(dāng)綜合鏈接 距離大于設(shè)定的閾值時,就可以判定用戶在這一關(guān)系中是相似的;否則判定為不相似;
[0018] 3. 2)將用戶之前的關(guān)系看作一種屬性,對特定兩個用戶,根據(jù)在步驟2)中得到在 所有關(guān)系網(wǎng)絡(luò)中的距離,與設(shè)定的閾值作比較后,得到兩個用戶相似的屬性的個數(shù);
[0019] 3.3)根據(jù)所述用戶相似屬性個數(shù),由下述公式可以計算得到用戶的Jaccard系 數(shù):
[0021] 其中,N表示關(guān)系網(wǎng)絡(luò)的個數(shù),即用戶的屬性個數(shù);M表示用戶相似屬性個數(shù); Jacu,v表示節(jié)點u與節(jié)點V之間的Jaccard系數(shù)。
[0022] 在步驟4)中,所述Jaccard系數(shù)在范圍[1,0]內(nèi),設(shè)定一個閾值,當(dāng)大于所述閾值 時,表示兩用戶之間相似度較高,應(yīng)該保留連接線;否則,表示兩用戶之間相似度較低,沒有 連接線。
[0023] 本發(fā)明與現(xiàn)有技術(shù)相比,具有如下優(yōu)點與有益效果:
[0024] 本發(fā)明結(jié)合用戶的實際,充分利用其在多個社交關(guān)系網(wǎng)絡(luò)中的信息,改善推薦算 法過程中的冷啟動問題,并提高最后的推薦效果。
【附圖說明】
[0025] 圖Ia為用戶之間的鏈接路徑之一。
[0026] 圖Ib為用戶之間的鏈接路徑之二。
[0027] 圖Ic為用戶之間的鏈接路徑之三。
[0028] 圖Id為用戶之間的鏈接路徑之四。
【具體實施方式】
[0029] 下面結(jié)合具體實施例對本發(fā)明作進(jìn)一步說明。
[0030] 本發(fā)明所述的基于多關(guān)系網(wǎng)絡(luò)的推薦算法,包括以下步驟:
[0031] 1)將用戶數(shù)據(jù)集按照不同關(guān)系網(wǎng)絡(luò)分類,將關(guān)系網(wǎng)絡(luò)表示成矩陣。在本實施例中 具體是對用戶的數(shù)據(jù)進(jìn)行建模,得到多個關(guān)系網(wǎng)絡(luò),單個關(guān)系網(wǎng)絡(luò)由矩陣表示為Mn,共有N 個單關(guān)系網(wǎng)絡(luò)。
[0032] 2)對每個單關(guān)系網(wǎng)絡(luò)的用戶,計算兩兩用戶之間的綜合鏈接距離,其中,用戶是作 為關(guān)系網(wǎng)絡(luò)中的節(jié)點,用戶之間的關(guān)系作為連線,就可以將關(guān)系網(wǎng)絡(luò)以圖的形式表示出來, 比如要找從u到V之間的距離,由下面的步驟得到:
[0033] 2. 1)找到與目標(biāo)節(jié)點V相鄰的節(jié)點的集合vnearby ;
[0034] 2. 2)找到u與vnearby中的節(jié)點的最短距離du vn,那u到V的距離公式就是du V =du vn+l
[0035] 下面結(jié)合附圖Ia至ld,對獲取用戶間距離做進(jìn)一步的說明。
[0036] 在某個關(guān)系網(wǎng)絡(luò)里,用戶之間的鏈接可能有一條或者多條復(fù)雜情況,所以計算出 最終可用的鏈接距離。以兩個用戶u和V為例來講,考察從u到V的鏈接情況,可能有圖Ia 至Id所示的幾種情況。
[0037] 以下對每個情況查找從u到v的鏈接路徑時,有一些說明:
[0038] ①為方便說明情況,圖中的每條鏈接是雙向的,其實是適用于有向圖的,也就是說 從U到V的鏈接路徑和從V到U的鏈接路徑是不一樣的;
[0039] ②不會重復(fù)經(jīng)過目標(biāo)節(jié)點V,也就是說只要找到V就結(jié)束,因為即使再往下走也沒 有意義;
[0040] ③不會走重復(fù)的邊,比如從節(jié)點a走到節(jié)點b,之后再從節(jié)點b走到節(jié)點a,這對路 徑的考察是多余的。
[0041] 圖Ia所示情況:
[0042] 只有一條路徑u->i->v,u和V之間的鏈接距離就是2,也即最終鏈接距離。
[0043] 圖Ib所示情況:
[0044] 有兩條路徑:① u->i->v,②u->k->W->v,鏈接距離分別是2和3。對于這種簡單 的多條路徑情況,不是只選擇其中最短的一條或者其他某一條作為最終結(jié)果,而是都考慮。
[0045] 原因:比較從圖Ia的情況過渡到圖Ib的情況,多了第二條路徑u->k->w_>v,形式 上多出的一條路徑表明u可以通過多一條路到達(dá)V,而從相似性角度可以認(rèn)為多出的一條 路徑使得u和V之間的相似性在第一條路徑u->i->v表征的程度上增強了。實際生活中, 一個人和另一個人共同的朋友或者說相似的朋友越多,則表明他們的相似性就越高,這里 是同樣的道理。所以,在計算最終鏈接距離時,這兩條路徑都有貢獻(xiàn)。
[0046] 圖Ic所示情況:
[0047] 也有兩條路徑:① u->i->h_>v,②u->k->w->h->v,鏈接距離分別是3和4。和圖 Ib不同的是,這兩條路徑最后都通過節(jié)點h到達(dá)V。對于這種情況,我們只考慮第一條最短 的路徑。
[0048] 原因:按照之前講到的思路,用鏈接距離度量相似性,那么除去V不看,剩下的路 徑①②u->k->w->h實際上表征的是u和h之間的距尚,也就是u和h之間的相 似性,如果最終計算發(fā)現(xiàn)u和h之間的相似性很高,而h和V之間的相似性很低,這時不能 表明u和V之間的相似性是高還是低。如果① u->i->h->v,②u->k->w->h->v兩條