一種基于社會網絡結構的并行推薦方法
【技術領域】
[0001] 本發(fā)明屬于網絡推薦技術領域,尤其是一種基于社會網絡結構的并行推薦方法。
【背景技術】
[0002] 根據(jù)用戶的信息要求、興趣等,將用戶可能感興趣的信息、產品等推薦給用戶,就 是個性化信息推薦。推薦是解決信息超載問題的一個非常有效方法。推薦系統(tǒng)通過探究用 戶的興趣偏好,進行個性化計算,由系統(tǒng)自動發(fā)掘用戶的興趣點,從而引導用戶挖掘自己所 需要的信息。個性化推薦方法是研究推薦系統(tǒng)的關鍵技術。目前,推薦技術主要可以分為三 類:一是基于內容的推薦,它是根據(jù)用戶的內容特征提取用戶的興趣資料對用戶進行推薦; 二是協(xié)同過濾技術,它分析用戶興趣,在用戶群中找到指定用戶的相似(興趣)用戶,綜合相 似用戶對某一信息的評價,對指定用戶進行推薦。三是混合推薦,即將各種推薦技術相結合 進行最終推薦,典型的做法是把基于內容的推薦和協(xié)同過濾技術相結合。
[0003] 目前,協(xié)同過濾推薦技術是應用最為廣泛,并且最為成功的推薦技術。它一般可分 為兩類:基于用戶的協(xié)同過濾推薦和基于項目的協(xié)同過濾推薦。前者主要計算用戶之間的 相似性,它認為相似的用戶具有相同的興趣愛好。而后者主要計算項目之間的相似性,它認 為人們可能更加青睞于那些與他們喜歡的物品相似的東西。協(xié)同過濾技術可以為用戶發(fā)現(xiàn) 新的興趣,然而協(xié)同過濾存在數(shù)據(jù)稀疏、冷啟動和可擴展性等問題。目前,業(yè)界主要研究的 是協(xié)同過濾技術,以及以協(xié)同過濾技術為主的混合推薦,主要目的在于解決協(xié)同過濾存在 的問題,并提高推薦的效率、準確性和多樣性。
[0004] 社會網絡是現(xiàn)實社會關系的真實反映,由于社會網絡擁有龐大的用戶群體,用戶 頻繁地更新自己的信息,造成社會網絡每天都會產生大量的用戶數(shù)據(jù)。如何從這些用戶數(shù) 據(jù)中發(fā)現(xiàn)深層次的有用信息,來更準確地挖掘用戶的興趣愛好,實現(xiàn)真正意義上的個性化 推薦是隨著社交網絡、電子商務等網絡技術的飛速發(fā)展以后個性化推薦的一個顯著特征和 研究熱點。此外,由于社會網絡產生了超大規(guī)模的數(shù)據(jù)集,如何有效處理這種大規(guī)模的數(shù)據(jù) 集也成為目前個性化推薦的一個較為嚴峻的挑戰(zhàn)。
【發(fā)明內容】
[0005] 為了克服已有協(xié)同過濾推薦技術的有效性較差、在大數(shù)據(jù)集下處理速度較慢的不 足,本發(fā)明提供一種有效性良好、在大數(shù)據(jù)集下具有較好的處理效率的基于社會網絡結構 的并行推薦方法。
[0006] 本發(fā)明解決其技術問題所采用的技術方案是:
[0007] -種基于社會網絡結構的并行推薦方法,所述推薦方法包括如下步驟:
[0008] 1)根據(jù)活躍節(jié)點選擇策略,選取k個活躍節(jié)點作為中心節(jié)點;
[0009] 2)以k個中心節(jié)點為初始聚類中心,對剩余的所有節(jié)點進行聚類,將所有節(jié)點劃分 為以k個中心節(jié)點為中心的k個社區(qū);
[0010] 3)根據(jù)上一步得到的k個社區(qū),使用SimRank算法分別計算每個社區(qū)內所有用戶間 的相似度,過程如下:
[0011] 3.1)節(jié)點p和結點q的相似性通過所有p的入鄰居節(jié)點和q的入鄰居節(jié)點之間的相 似性的平均值來衡量,如果用s(P,q)表示節(jié)點P和結點q的相似性,那么SimRank的數(shù)學表達 式寫成如下形式:
[0012]
[0013] 其中c是一個0-1之間的常量,當/(/?) = 0或者/⑷=:0時,s(p,q)=0 _4] 3 · 2)假設第t次迭代的SimRank值為St(p,q),SimRank值初始化為:
[0015]
[0016] 然后通過式(1)迭代更新。第t次迭代的SimRank值次迭代的SimRank值s1^ 1 通過式(1)得到,最終的迭代結果St也將收斂于(1)式中SimRank值,即:
[0017]
[0018] 3.3)使用MapReduce并行框架進行處理,過程如下:
[0019] 3.3.1)預處理階段
[0020]圖的邊(p,in:a,b, · · · |out:i, j, · · · ),p表示圖中的節(jié)點,in:后表示節(jié)點p的入鄰 居節(jié)點,out:后表示節(jié)點p的出鄰居節(jié)點;
[0021]在Map階段,將輸入的(p,q)轉化為(p, out: q)和(q, in: p);在Reduce階段,將具有 相同key值的記錄進行整合,得到(p,in:a,b, . . . |out:i, j,...)。整個預處理階段后形成的 結果文件存放在分布式文件系統(tǒng)中,該文件描述了圖的整個拓撲結構,用于后續(xù)SimRank計 算階段使用;
[0022] 3.3.2) SimRank 迭代計算過程
[0023]每一次迭代都通過一個MapReduce任務完成,每次迭代的輸入就是上次迭代的輸 出;
[0024] 4)計算與某用戶最為相似的用戶列表;
[0025] 5)重復4)得到任意用戶的相似用戶列表;
[0026] 6)對于目標用戶,分析其相似用戶列表中用戶的興趣喜好對目標用戶進行個性化 推薦。
[0027] 進一步,所述步驟3.3.2)中,在SimRank迭代計算過程中,Map的輸入是上次迭代計 算的SimRank,格式為<(p,q),s(p,q)>,由于節(jié)點與它本身的相似性為1,所以初始的記錄 S<p,p, 1>,其余節(jié)點間的相似性為(KMap階段中,尋找節(jié)點p,q各自的所有出鄰居節(jié)點; Reduce階段,對key值相同記錄的相似性分數(shù)匯總求和,并且更新所有節(jié)點對的SimRank值。 [0028] 再進一步,所述步驟3)中,對SimRank算法進行改寫得到Delta-SimRank算法,利用 A改寫(1)式,得到:
[0029]
[0030] 其中A t(p,q)表示第t次迭代相似性分數(shù)的增量;至此,就把計算SimRank問題轉 化為計算SimRank增量的Δ,根據(jù)Δ就能得到最終的SimRank值:
[0031] st+1(p,q)=st(p,q)+At+1(p,q) (5)
[0032] Delta-SimRank算法將更新后的Δ值進行累加以得到最終的SimRank值。
[0033] 本發(fā)明的技術構思為:考慮社會網絡結構對推薦產生影響,將社會網絡結構與相 似度計算相結合得到最終的推薦,并通過MapReduce并行計算實現(xiàn)算法,提高效率。
[0034] 首先計算用戶在社交網絡中的影響力,分析用戶間的相互關系以及衡量用戶影響 力的評價指標,選擇部分用戶作為核心用戶,并根據(jù)核心用戶聚類發(fā)現(xiàn)社區(qū)結構;采用 MapReduce并行實現(xiàn)基于結構的相似度計算方法,對指定的用戶產生個性化推薦,并對推薦 結果進行評價。
[0035]本發(fā)明的有益效果主要表現(xiàn)在:
[0036] 1.該方法主要考慮社會網絡結構對推薦的影響,有利于實現(xiàn)基于社交網絡的個性 化推薦服務,對增強社交網站用戶"粘度"、提高網站競爭力以及基于社交網絡平臺產品推 薦。
[0037] 2.本發(fā)明中社交網絡中用戶的影響力,分析具有重要地位的用戶對網絡結構的影 響,針對現(xiàn)有社區(qū)發(fā)現(xiàn)算法中存在的不足,提出了基于活躍節(jié)點的社區(qū)劃分策略,并用 MapReduce并行實現(xiàn),劃分的社區(qū)結構比較符合實際的網絡拓撲結構,可用于其他相關算 法。
[0038] 3.本發(fā)明算法中的主要三個步驟均采用MapReduce的云計算方法并行實現(xiàn),使個 性化推薦算法具有較高的效率,并能處理基于大數(shù)據(jù)集的推薦。
[0039] 4.該方法的三個主要步驟都可以通過離線計算預先完成,有利于提高推薦的更新 響應速度。
【附圖說明】
[0040] 圖1是個性化推薦方法的流程圖。
【具體實施方式】
[0041] 下面結合附圖對本發(fā)明作進一步描述。
[0042] 參照圖1,一種基于社會網絡結構的并行推薦方法,所述推薦方法包括如下步驟:
[0043] 1)根據(jù)活躍節(jié)點選擇策略,選取k個活躍節(jié)點作為中心節(jié)點,具體策略如下:輸入 社會網絡關系圖G=<V,E>,其中節(jié)點數(shù)目為n,邊數(shù)為e,過程如下:
[0044] 1.1).將節(jié)點按照度數(shù)的大小進行排序,得到排序后的隊列〇={111,11 2,...,1111}, dLCb,. . .,dn分別為它們對應的度數(shù)。
[0045] 1.2).依次取出隊列中的第一個元素 m,加入到中心節(jié)點集合C。
[0046] 1.3).如果1+(12+. . .+di 2 e,或者中心節(jié)點集合的大小超過了全圖節(jié)點總數(shù)的 10%,終止循環(huán)。否則繼續(xù)執(zhí)行第1.2)步。
[0047]輸出中心節(jié)點集合CX中的所有元素即根據(jù)我們策略選擇的活躍節(jié)點。
[0048] 2)以k個中心節(jié)點為初始聚類中心,對剩余的所有節(jié)點進行聚類,將所有節(jié)點劃分 為以k個中心節(jié)點為中心的k個社區(qū)。社區(qū)劃分具體過程如下:輸入社會網絡關系圖G=<V, E>,其中節(jié)點數(shù)目為n,邊數(shù)為e,過程如下:
[0049] 2.1).根據(jù)1)的活躍節(jié)點選擇策略選取k個活躍節(jié)點ni,n2, . . .,nk作為中心節(jié)點集 合,分別對應k個集合&,&,...,Ck。
[0050] 2.2).從中心節(jié)點集合中的每個節(jié)點出發(fā),根據(jù)寬度優(yōu)先算法搜索整個圖,記錄每 個節(jié)點到中心節(jié)點的距離。
[0051] 2.3).根據(jù)2.2)中得到的距離,計算與普通節(jié)點最近的中心節(jié)點m,將普通節(jié)點添 加到集合匕,確保所有節(jié)點都