本發(fā)明涉及poi推薦領(lǐng)域,尤其涉及一種基于多影響嵌入的個性化poi推薦方法。
背景技術(shù):
隨著裝備gps智能設(shè)備的快速發(fā)展,產(chǎn)生了基于位置的社交網(wǎng)絡(luò)服務(wù)(location-basedsocialnetworkingservices,lbsns),如foursquare、facebookplaces、googleplaces等。在lbsns上,用戶可以登錄(check-in)商店、餐廳等poi(pointofinterest)并分享。由于lbsns用戶眾多并能覆蓋廣大的區(qū)域,在其基礎(chǔ)上出現(xiàn)了poi推薦服務(wù),不僅可以幫助用戶認識新的poi和探索不熟悉的區(qū)域,而且可以方便廣告主向目標用戶推送移動廣告。
然而,通過用戶的位置歷史來推斷用戶對poi的偏好具有很大的挑戰(zhàn)。第一,一個用戶能夠訪問的poi是有限的,而城市中有數(shù)量龐大的poi,對于傳統(tǒng)的基于協(xié)同過濾(collaborativefiltering,cf)的推薦方法,用戶-poi矩陣過于稀疏。第二,當用戶訪問新的區(qū)域時,用戶旅行局部性現(xiàn)象(travellocality)使poi推薦更具挑戰(zhàn)。此外,當增加一個新用戶時,其有限的位置歷史為用戶偏好建模增加了難度,從而很難為其提供準確的推薦服務(wù),稱為冷啟動問題。為了解決上述數(shù)據(jù)稀疏性及冷啟動問題,傳統(tǒng)的個性化poi推薦方法往往利用社交、時間、地理、序列、語義等方面的影響。
1)社交影響(socialeffect):用戶的位置歷史與其朋友的位置歷史平均重合約10%,說明社交影響可能僅僅起到有限的作用,但仍不能忽略其影響。
2)時間影響(temporaleffect):現(xiàn)實生活中,用戶的check-in行為表現(xiàn)出很強的時間周期性、非統(tǒng)一性和連續(xù)性。
3)地理影響(geographicaleffect):當用戶訪問一個新的區(qū)域或者城市時,他的偏好或行為模式會與在家附近時不同,該問題稱為興趣漂移(interestdrift)。比如,當一位來自杭州的越劇愛好者訪問香港時,他很大可能會去光顧香港的購物中心或者特色餐廳,而不是遵循其在杭州時的行為模式。
4)序列影響(sequentialeffect):人類流動性研究表明,人們的移動展現(xiàn)較強的序列模式。比如,用戶出機場后很大概率會接著訪問旅館。
5)語義影響(semanticeffect):最近的一項針對whrrl數(shù)據(jù)集的分析表明用戶的check-in行為展現(xiàn)出很強的語義規(guī)律。換句話說,同一個用戶check-in過的poi內(nèi)容往往在語義上是相似的。然而,一般的個性化poi推薦方法僅利用了上述部分影響,沒有一個能準確整合上述所有方面影響的方法。
技術(shù)實現(xiàn)要素:
為解決當前個性化poi推薦的數(shù)據(jù)稀疏性及冷啟動問題,本發(fā)明提出了一種基于多影響嵌入的個性化poi推薦方法。
一種基于多影響嵌入的個性化poi推薦方法,包括三個階段:
第一階段:構(gòu)建用戶-用戶圖、用戶-性別圖、poi-類別層次圖、poi-區(qū)域?qū)哟螆D、用戶-時間段圖、poi-時間段圖以及用戶-poi圖7個二分圖;構(gòu)建check-in序列;
第二階段:根據(jù)構(gòu)建的7個二分圖建立圖嵌入模型,根據(jù)check-in序列建立序列嵌入模型,并對兩個模型進行聯(lián)合嵌入學(xué)習(xí),得到用戶、poi、時間段、性別、poi類別以及區(qū)域的嵌入表示;
第三階段:根據(jù)第二階段獲得的嵌入表示、用戶信息以及用戶查詢信息對poi進行打分,并根據(jù)poi分數(shù)對poi降序排序,取前f個poi作為推薦結(jié)果提供給用戶。
第一階段的具體過程為:
(1-1)根據(jù)輸入的用戶社交信息提取用戶的朋友關(guān)系,構(gòu)建用戶-用戶圖;
(1-2)根據(jù)輸入的戶信息數(shù)據(jù)提取用戶的性別特征,構(gòu)建用戶-性別圖;
(1-3)讀取輸入的poi信息的類別標簽,并根據(jù)輸入的poi類別層次結(jié)構(gòu),構(gòu)建poi-類別層次圖;
(1-4)首先利用空間金字塔的樹狀結(jié)構(gòu)對整個空間區(qū)域進行劃分和索引,然后根據(jù)空間金字塔構(gòu)建poi-區(qū)域?qū)哟螆D;
(1-5)首先讀取用戶check-in歷史數(shù)據(jù),然后從用戶check-in歷史數(shù)據(jù)中提取每個用戶在各時間段內(nèi)check-in的頻次,構(gòu)建用戶-時間段圖;
(1-6)從用戶check-in歷史數(shù)據(jù)中提取每個poi在各時間段內(nèi)被訪問的頻次,構(gòu)建poi-時間段圖;
(1-7)從用戶check-in歷史數(shù)據(jù)中提取每個用戶對各個poi的訪問頻次,構(gòu)建用戶-poi圖;
(1-8)給定一個時間間隔,當用戶的當前check-in與上一次check-in的時間差不大于該時間間隔時,將當前check-in并入當前check-in序列,從而構(gòu)建所有用戶的check-in序列。
所述的一個poi定義為一個特殊場所(例如:一家飯店、一家劇院等,poi具有三個屬性:id、地理坐標(經(jīng)緯度)以及poi內(nèi)容;所述的poi內(nèi)容為與poi相關(guān)的文本語義信息,如類別標簽。
步驟(1-4)中,本發(fā)明預(yù)先將空間區(qū)域按層次劃分形成空間金字塔,作為優(yōu)先,與poi相連的區(qū)域為空間金字塔最底層的區(qū)域。
第二階段的具體過程為:
(2-1)根據(jù)第一階段建立的每個二分圖,利用圖嵌入方法line構(gòu)建圖嵌入模型;
(2-2)根據(jù)第一階段建立的check-in序列,利用序列嵌入方法skip-gram構(gòu)建序列嵌入模型;
(2-3)根據(jù)構(gòu)建的圖嵌入模型和序列嵌入模型,進行圖和序列聯(lián)合嵌入式學(xué)習(xí),得到用戶、poi、時間段、性別、poi類別以及區(qū)域的嵌入表示。
步驟(2-1)中,針對每個二分圖
其中,xa和xb表示兩種類型的節(jié)點集,ε表示邊集;xi為節(jié)點集xa中的第i個節(jié)點,xj為節(jié)點集xb中的第j個節(jié)點,eij屬于邊集ε,表示節(jié)點xi與節(jié)點xj之間的邊,wij為邊eij的邊權(quán),p(xj|xi)為節(jié)點xi產(chǎn)生節(jié)點xj的條件概率。
為解決計算成本高的問題,對目標函數(shù)
其中σ(·)為sigmoid函數(shù);k為負邊的采樣數(shù)量;m用于計數(shù),取值范圍為1~k;
在步驟(2-2)中,本發(fā)明通過skip-gram整合check-in序列影響,將每個poivi當成“詞”,用戶check-in序列
其中,k為上下文窗口大小;k為負采樣數(shù)目;
在步驟(2-3)中,聯(lián)合嵌入學(xué)習(xí)的目標函數(shù)為:
o=ouu+oug+ouv+out+ovw+ovr+ovt+oseq
其中,ouu為用戶-用戶圖嵌入的目標函數(shù),oug為用戶-性別圖嵌入的目標函數(shù),ouv為用戶-poi圖嵌入的目標函數(shù),out為用戶-時間段圖嵌入的目標函數(shù),ovw為poi-類別層次圖嵌入的目標函數(shù),ovr為poi-區(qū)域?qū)哟螆D嵌入的目標函數(shù),ovt為poi-時間段圖嵌入的目標函數(shù),oseq為check-in序列嵌入的目標函數(shù);
在每輪的訓(xùn)練過程中,首先根據(jù)各結(jié)構(gòu)采樣概率選擇一個二分圖或check-in序列集合,如果選擇的是二分圖,則從其邊集中采一條邊和k條負邊,然后更新相應(yīng)對象的嵌入表示,如果選擇的是check-in序列,則從其poi集中選擇一個poi及其上下文poi和k個負樣本,然后更新相應(yīng)poi的嵌入表示,直到實際采樣總數(shù)超過采樣總數(shù)n為止。
第三階段的具體過程為:
(3-1)將給定查詢的時間和位置映射為時間段和區(qū)域;
(3-2)根據(jù)第二階段獲得的嵌入表示對poi進行打分,并根據(jù)poi分數(shù)對poi降序排序,取前f個poi作為推薦結(jié)果提供給用戶;poi分數(shù)的計算公式為:
其中,其中
本發(fā)明通過圖和序列的聯(lián)合嵌入學(xué)習(xí)方法整合社交、時間、地理、語義、序列等多方面影響,克服數(shù)據(jù)稀疏性和冷啟動問題,為用戶提供高質(zhì)量的個性化poi推薦。本發(fā)明的優(yōu)點包括:
1)整合社交、時間、地理、序列、語義等多方面影響進行個性化poi推薦,解決數(shù)據(jù)稀疏性問題;
2)采用聯(lián)合嵌入的框架,具有一定的擴展性,可以方便地整合其它方面影響,解決了冷啟動問題。
3)通過區(qū)域嵌入表示過濾出本地特色場所,解決用戶在不同區(qū)域旅行產(chǎn)生的興趣漂移問題。
附圖說明
圖1是本發(fā)明基于多影響嵌入個性化poi推薦方法流程圖;
圖2是實施例中poi-類別層次圖;
圖3是將空間區(qū)域分成空間金字塔示意圖;
圖4是實施例中poi-區(qū)域?qū)哟螆D;
圖5是實施例中check-in序列嵌入模型示意圖;
圖6是實施例中聯(lián)合學(xué)習(xí)算法流程圖;
圖7是實施例中輸出結(jié)果的嵌入表示。
具體實施方式
為了更為具體地描述本發(fā)明,下面結(jié)合附圖及具體實施方式對本發(fā)明的技術(shù)方案進行詳細說明。
如圖1所示的是本發(fā)明基于多影響嵌入的個性化poi推薦方法的流程圖,根據(jù)圖1可知,本發(fā)明基于多影響嵌入的個性化poi推薦方法主要包括三個階段,分別為:二分圖與check-in序列構(gòu)建、圖與序列聯(lián)合嵌入學(xué)習(xí)以及poi打分與推薦。
第一階段:二分圖與check-in序列的構(gòu)建
該階段主要是構(gòu)建7張二分圖和check-in序列,7張二分圖分別為:用戶-用戶圖、用戶-性別圖、poi-類別層次圖、poi-區(qū)域?qū)哟螆D、用戶-時間段圖、poi-時間段圖以及用戶-poi圖,構(gòu)建方法具體為:
s101,用戶-用戶圖的構(gòu)建:
根據(jù)輸入的用戶社交信息提取用戶的朋友關(guān)系,進而構(gòu)建用戶-用戶圖,該用戶-用戶圖定義為
s102,用戶-性別圖的構(gòu)建:
根據(jù)輸入的戶信息數(shù)據(jù)提取用戶的性別特征,進而構(gòu)建用戶-性別圖,該用戶-性別圖定義為
s103,poi-類別層次圖的構(gòu)建:
首先,讀取輸入的poi信息和poi類別層次結(jié)構(gòu)數(shù)據(jù);
一個poi定義為一個特殊場所(例如:一家飯店、一家劇院等)。poi具有三個屬性:id、地理坐標以及內(nèi)容。本實施例用v和lv分別表示一個poi的id及其地理坐標(經(jīng)緯度),此外,每個poi都有與其相關(guān)的文本語義信息,如類別標簽。poi類別層次結(jié)構(gòu)是對各種poi由大到小、粗粒度到細粒度的總結(jié)與分類,是后續(xù)構(gòu)建poi-類別層次圖的基礎(chǔ)。
然后,基于poi類別層次結(jié)構(gòu),根據(jù)每個poi的類別標簽,構(gòu)建poi-類別層次圖;
如圖2所示,poi-類別層次圖定義為
若
若poi類別wi屬于類別wj,則poi類別wi和poi類別wj間存在一條邊eij,否則沒有,poi類別wi和poi類別wj間不存在邊eij;
當邊eij存在時,邊權(quán)wij=1。
s104,poi-區(qū)域?qū)哟螆D的構(gòu)建:
首先,利用空間金字塔的樹狀結(jié)構(gòu)對整個空間區(qū)域進行劃分和索引;如圖3所示,空間金字塔將空間區(qū)域分解為h層,其中第一層僅含一個表示整個空間的格子區(qū)域,第h層將整個空間分為4h-1個格子區(qū)域。因此,整個空間區(qū)域可以遞歸地分成不同粒度的層,其中最底層粒度最小且格子區(qū)域最多。
然后,根據(jù)空間金子塔,構(gòu)建poi-區(qū)域?qū)哟螆D;如圖4所示,poi-區(qū)域?qū)哟螆D是一個二分圖,定義為
若poivi位于區(qū)域rj內(nèi),則poivi和區(qū)域rj間存在一條邊eij,否則,poivi和區(qū)域rj間不存在邊eij;
若區(qū)域ri處在區(qū)域rj內(nèi),則區(qū)域ri和區(qū)域rj間存在一條邊eij,否則區(qū)域ri和區(qū)域rj間不存在邊eij;
當邊eij存在時,邊權(quán)wij=1。
s105,用戶-時間段圖的構(gòu)建:
首先,讀取輸入的用戶check-in歷史數(shù)據(jù);
用一個六元組
然后,從用戶check-in歷史數(shù)據(jù)中提取每個用戶在各時間段內(nèi)check-in的頻次,構(gòu)建用戶-時間段圖;
用戶-時間段圖定義為
s106,poi-時間段圖的構(gòu)建:
從用戶check-in歷史數(shù)據(jù)中提取每個poi在各時間段內(nèi)被訪問的頻次,構(gòu)建poi-時間段圖;poi-時間段圖是一個二分圖,定義為
s107,用戶-poi圖的構(gòu)建:
從用戶check-in歷史數(shù)據(jù)中提取每個用戶對各個poi的訪問頻次,構(gòu)建用戶-poi圖;用戶-poi圖是一個二分圖,定義為
s108,check-in序列的構(gòu)建:
給定一個時間間隔,當用戶的連續(xù)兩次check-in時間差不大于該時間間隔時,將其并入當前check-in序列,從而構(gòu)建所有用戶的check-in序列。
確定一個時間間隔δt,如果在用戶的位置歷史
第二階段:圖與序列聯(lián)合嵌入學(xué)習(xí)
s201,利用圖嵌入方法line構(gòu)建圖嵌入模型:
針對第一階段構(gòu)建的每個二分圖
其中
優(yōu)化目標(3)時,計算條件概率p2(·|xi)需要將所有節(jié)點都加一遍,計算成本過高。為了解決該問題,本發(fā)明采用負采樣方法,根據(jù)每條邊(i,j)的噪音分布采幾條負邊。針對每條邊,其目標函數(shù)為:
其中σ(x)=1/(1+exp(-x))為sigmoid函數(shù);第一項對可觀測的邊進行建模,第二項對根據(jù)噪音分布采樣得到的負邊進行建模;k為負邊的采樣數(shù)量;pn(x)∝dx3/4為噪音分布,其中dx為節(jié)點x的出度。
s202,針對check-in序列,利用序列嵌入方法skip-gram構(gòu)建序列嵌入模型:
本發(fā)明提出方法通過skip-gram整合check-in序列影響,將每個poivi當成“詞”,用戶check-in序列
其中,k為上下文窗口大小,p(vi+c|vi)為softmax函數(shù);
為了提高word2vec模型的學(xué)習(xí)效率,主要有兩種加速策略,即層次softmax和負采樣。本發(fā)明選擇了與line模型優(yōu)化方法一致的負采樣方法,即最大化上下文poi的出現(xiàn)log概率同時最小化負樣本的出現(xiàn)log概率,從而一個易于優(yōu)化的新目標函數(shù)定義如下:
其中σ(x)=1/(1+exp(-x)),可以確保
s203,根據(jù)構(gòu)建的圖嵌入模型和序列嵌入模型,進行圖和序列聯(lián)合嵌入式學(xué)習(xí),得到用戶、poi、時間段、性別、poi類別、區(qū)域的嵌入表示;
首先,輸入二分圖、check-in序列以及其它相關(guān)參數(shù);輸入本實施例構(gòu)建的7張二分圖:用戶-用戶圖、用戶-時間段圖、poi-時間段圖、poi-區(qū)域?qū)哟螆D、poi-類別層次圖、用戶-性別圖和用戶-poi圖,以及check-in序列集合。此外,采樣總數(shù)n、負采樣數(shù)k、嵌入表示維度d以及各部分的采樣概率
然后,通過聯(lián)合訓(xùn)練算法學(xué)習(xí)用戶、poi等的嵌入表示;
針對上述7張二分圖與check-in序列,本實施例提出通過聯(lián)合嵌入學(xué)習(xí)對上述圖和序列進行聯(lián)合嵌入學(xué)習(xí),即最小化所有目標函數(shù)的和:
o=ouu+oug+ouv+out+ovw+ovr+ovt+oseq(8)
對于目標函數(shù)(8),其聯(lián)合訓(xùn)練算法流程如圖6,在每輪訓(xùn)練前以一定采樣概率先從上述各圖與序列集合中選擇一個結(jié)構(gòu)(一個圖或序列集合)進行采樣,如果選擇了其中一個圖,則對其進行邊采樣,否則對check-in序列進行poi采樣。在每輪的訓(xùn)練過程中,首先根據(jù)各結(jié)構(gòu)采樣概率選擇一個結(jié)構(gòu),如果選擇的是圖,則從其邊集中采一條邊和k條負邊,然后更新相應(yīng)對象的嵌入表示,如果選擇的是序列,則從其poi集中選擇一個poi及其上下文poi和k個負樣本,然后更新相應(yīng)poi的嵌入表示,直到實際采樣總數(shù)超過采樣總數(shù)n為止。
最后,輸出用戶、poi、時間段、性別、poi類別、區(qū)域的嵌入表示。如圖7所示,輸出結(jié)果為用戶、poi、性別、時間段、poi類別和區(qū)域的d-維嵌入表示。
第三階段:poi打分與推薦
s301,給定一個查詢,將給定查詢的時間和位置映射為時間段和區(qū)域;
對于帶有查詢時間τ和位置l且性別為g的查詢用戶u,即q=(u,τ,l,g),本發(fā)明將時間τ和位置l映射為時間段t和區(qū)域r。
步驟2:基于用戶、poi等嵌入表示為poi打分,并選擇分數(shù)最大的若干項作為推薦;
一旦得到用戶、poi、區(qū)域、時間以及性別的嵌入表示,通過等式(17)計算區(qū)域r內(nèi)用戶u以前沒有訪問過的poi分數(shù),最后根據(jù)poi分數(shù)對這些poi進行降序排序,選擇前f個poi作為推薦結(jié)果。
其中
以上所述的具體實施方式對本發(fā)明的技術(shù)方案和有益效果進行了詳細說明,應(yīng)理解的是以上所述僅為本發(fā)明的最優(yōu)選實施例,并不用于限制本發(fā)明,凡在本發(fā)明的原則范圍內(nèi)所做的任何修改、補充和等同替換等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。