本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,具體涉及一種基于內(nèi)存計(jì)算框架、融合社交環(huán)境及時(shí)空數(shù)據(jù)的位置推薦方法。
背景技術(shù):
隨著城市快速發(fā)展,餐廳、影院等線下服務(wù)地點(diǎn)日益增加,極大豐富了人們的生活體驗(yàn)。然而琳瑯滿目的位置地點(diǎn)也增加了用戶的選擇成本,因此一種解決信息過載并改善用戶體驗(yàn)的有效方法即提供個(gè)性化位置推薦方法被提出。
由于位置社交網(wǎng)絡(luò)包含大量的位置,基于位置服務(wù)的推薦技術(shù)可以使用戶更容易找到符合自己偏好的位置。因此,位置推薦有利于人們探索城市中的新地帶,提高城市生活質(zhì)量。特別是當(dāng)用戶身處在一個(gè)陌生環(huán)境的時(shí)候。也可以利用位置推薦為實(shí)體商店發(fā)現(xiàn)潛在客戶,并為這些客戶提供相關(guān)廣告,促使客戶訪問商店,從而提高商家的利潤。位置推薦還可以為用戶推薦符合個(gè)人偏好的旅行路線,幫助用戶避免信息過載、節(jié)約行程安排時(shí)間,以及提高旅行意愿,推動(dòng)旅游業(yè)的發(fā)展。因?yàn)槲恢猛扑]能夠過濾無用信息,也能提高服務(wù)商的利潤,為大眾、商家和旅行者帶來便利和利益,所以,在位置社交網(wǎng)絡(luò)中,為用戶進(jìn)行位置推薦是尤為重要的。
技術(shù)實(shí)現(xiàn)要素:
為了克服上述現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的是提供一種基于內(nèi)存計(jì)算框架、融合社交環(huán)境及時(shí)空數(shù)據(jù)的位置推薦方法,該方法計(jì)算速度快,準(zhǔn)確性高。
為了實(shí)現(xiàn)本發(fā)明的上述目的,本發(fā)明提供了一種基于內(nèi)存計(jì)算框架、融合社交環(huán)境及時(shí)空數(shù)據(jù)的位置推薦方法,包括以下步驟:
第一步,搭建形成包含master主機(jī)和slave從機(jī)的集群,將用戶簽到表數(shù)據(jù)導(dǎo)入master主機(jī)中,由master主機(jī)進(jìn)行分割,并將數(shù)據(jù)的預(yù)處理任務(wù)分派給slave從機(jī),同時(shí)追蹤slave從機(jī)上的分布式計(jì)算,收集slave從機(jī)的反饋信息進(jìn)行匯總統(tǒng)計(jì),得到用戶簽到矩陣CIt;
第二步,從社交網(wǎng)絡(luò)中去獲取用戶的社交好友關(guān)系數(shù)據(jù),并對用戶簽到矩陣CIt和用戶的社交好友關(guān)系數(shù)據(jù)進(jìn)行整理,得到用戶之間的社交關(guān)系矩陣SN;
第三步,對社交環(huán)境進(jìn)行分析,具體包括建立基于時(shí)間狀態(tài)的社交圈、利用用戶簽到矩陣CIt和簽到日志分析和量化個(gè)人偏好、個(gè)人偏好相似度、用戶之間的社交信任以及社交親近度;
第四步,對簽到矩陣進(jìn)行拆分并分解,得到用戶隱特征矩陣Ut和位置隱特征矩陣L,并構(gòu)建推薦模型目標(biāo)函數(shù)得到用戶隱特征矩陣Ut和位置隱特征矩陣L,將用戶隱特征矩陣Ut和位置隱特征矩陣L進(jìn)行合并預(yù)測用戶在每個(gè)時(shí)間狀態(tài)t下的簽到偏好矩陣采用投票方案將不同時(shí)間狀態(tài)下的預(yù)測矩陣合并為統(tǒng)一的位置偏好預(yù)測矩陣
第五步,將得到的位置偏好預(yù)測矩陣的數(shù)據(jù)提取,轉(zhuǎn)換成可視化的形式,輸出分析結(jié)果。
本發(fā)明利用Apache Spark內(nèi)存計(jì)算框架對龐大的用戶歷史簽到歷史記錄數(shù)據(jù)進(jìn)行處理以及利用Spark上的矩陣庫進(jìn)行矩陣運(yùn)算,提高計(jì)算效率,提升算法在處理海量數(shù)據(jù)情況下的速度和容錯(cuò)能力,提高了給用戶推薦位置的準(zhǔn)確性和快速性。
進(jìn)一步的,所述第二步包括以下幾個(gè)步驟:
B1、整理用戶簽到表數(shù)據(jù),數(shù)據(jù)包含用戶社交關(guān)系、用戶的簽到的時(shí)空數(shù)據(jù)、用戶簽到的主題數(shù)據(jù),得到用戶簽到集合U={u1,u2,...,un}和位置集合L={l1,l2,...,lm},u表示用戶,n代表用戶的ID,l表示簽到位置,m代表簽到位置的ID,;
B2、對用戶簽到表數(shù)據(jù)統(tǒng)計(jì),得出用戶和位置之間關(guān)聯(lián)關(guān)系,用Lu表示用戶u歷史簽到過的位置集合,使用地理坐標(biāo)<經(jīng)度,緯度>對位置進(jìn)行地理編碼;
B3、對用戶簽到數(shù)據(jù)做預(yù)處理:統(tǒng)計(jì)用戶在各位置的簽到頻率,記為用戶-位置簽到頻率矩陣用戶-位置簽到頻率矩陣中的元素cu,i代表用戶u在位置i上的簽到次數(shù);
B4、統(tǒng)計(jì)用戶社交關(guān)系表,得出用戶之間是否存在好友關(guān)系,用戶之間的社交關(guān)系用矩陣表示。
該方法能準(zhǔn)確快速的得到用戶之間的社交關(guān)系。
進(jìn)一步的,所述第三步包括以下幾個(gè)步驟:
C1、建立社交圈給定時(shí)間狀態(tài),同時(shí)滿足下列兩個(gè)條件的所有用戶v構(gòu)成用戶u的社交圈
1)在原始社交網(wǎng)絡(luò)中用戶u和v之間存在直接社交關(guān)系,即SNu,v=1;
2)其中代表用戶u在時(shí)間狀態(tài)t下的歷史簽到集合,代表u在時(shí)間狀態(tài)t下有過簽到記錄;
如果用戶v在特定時(shí)間狀態(tài)t下符合上述條件,則記為否則記為
C2、分析個(gè)人偏好:
1)分析簽到日志中包含的位置信息和主題信息,為日志中出現(xiàn)的每個(gè)位置計(jì)算主題分布向量,使用符號Dl表示位置l的主題分布向量,其中,代表主題標(biāo)識;
2)為確定時(shí)間狀態(tài)下的每個(gè)用戶計(jì)算個(gè)人偏好分布向量計(jì)算公式為:其中*號表示歸一化處理;
計(jì)算用戶偏好分布和位置主題分布之間的相似度Qu,l,并將其視為用戶u對位置l潛在訪問的可能性,其中Qu,l=cosin(Du,Dl);
C3、分析用戶偏好相似度,計(jì)算公式為:其中,表示在特定時(shí)間狀態(tài)t下,用戶u和v之間的主題偏好相似度;
C4、分析用戶之間的社交信任Su,v:用代表用戶u在時(shí)間狀態(tài)t下的信任值,計(jì)算公式為:
其中是用戶u在時(shí)間狀態(tài)t下的簽到次數(shù),是v在時(shí)間狀態(tài)t下社交圈的好友數(shù)量,d是衰減因子,0<d<1;
根據(jù)計(jì)算用戶之間的社交信任,計(jì)算公式為:
C5、分析用戶之間的親近度,首先計(jì)算用戶之間的親密程度,計(jì)算公式為:
得到用戶之間的親近度,計(jì)算公式為:其中,是時(shí)間狀態(tài)t下用戶u和v簽到中心點(diǎn)之間的空間距離,利用用戶簽到位置的經(jīng)緯度數(shù)據(jù)的平均值表示用戶簽到中心,將用戶的位置投射到地球這個(gè)球面上,計(jì)算用戶之間的距離
通過對社交圈個(gè)人偏好分布向量用戶偏好相似度、用戶之間的社交信任和用戶之間的親近度的分析,使得對社交環(huán)境的分析準(zhǔn)確性更高,更全面。
進(jìn)一步的,所述第四步包括以下幾個(gè)步驟:
D1、對簽到矩陣進(jìn)行拆分:將一天分為Φ個(gè)時(shí)間狀態(tài),把原始社交網(wǎng)絡(luò)矩陣SN和用戶-簽到頻率矩陣CI分別拆分成Φ個(gè)子矩陣,每個(gè)子矩陣對應(yīng)一個(gè)時(shí)間狀態(tài)t,使用符號SNt表示子社交網(wǎng)絡(luò)矩陣、CIt表示子用戶-簽到頻率矩陣;
D2、對用戶簽到矩陣CIt進(jìn)行分解,將用戶簽到矩陣CIt分解成多個(gè)簽到頻率子矩陣相乘的形式,把每個(gè)簽到頻率子矩陣分解成用戶隱特征矩陣Ut,和位置隱特征矩陣L,k是隱空間的向量維度,分解方法為:
a、利用個(gè)人偏好、偏好相似度、社交信任以及親近度四種社交因素建立推薦模型目標(biāo)函數(shù),具體為:
其中,*代表歸一化的處理,α、λ、β、γ、μ、η代表設(shè)置的權(quán)重參數(shù),和Ll分別代表k維用戶隱特征向量和k維位置隱特征向量,是u在時(shí)間狀態(tài)t下的規(guī)范化簽到頻率;
b、計(jì)算用戶隱特征矩陣Ut和位置隱特征矩陣L:對推薦模型目標(biāo)函數(shù)進(jìn)行訓(xùn)練,將和Ll看做變量并分別對它們求偏導(dǎo),其中的偏導(dǎo)如下:
Ll的偏導(dǎo)數(shù)如下:
偏導(dǎo)中是指示因子,代表u在時(shí)間狀態(tài)t下對位置l有過簽到,否則
求出偏導(dǎo)后,在梯度方向上更新隱特征向量,把每次更新后的向量代入到推薦模型目標(biāo)函數(shù)中重新計(jì)算,讓函數(shù)值以最快速度向下減??;不斷迭代該過程直至推薦模型目標(biāo)函數(shù)收斂為止,最后得到用戶隱特征矩陣Ut和位置隱特征矩陣L;
D3、合并用戶隱特征矩陣Ut和位置隱特征矩陣L:得到用戶隱特征矩陣Ut和位置隱特征矩陣L后,按UtLT算法預(yù)測用戶在每個(gè)時(shí)間狀態(tài)t下的簽到偏好矩陣并使用投票方案將不同時(shí)間狀態(tài)下的預(yù)測矩陣合并為統(tǒng)一的位置偏好預(yù)測矩陣其中,T代表矩陣轉(zhuǎn)置運(yùn)算。
該計(jì)算方法簡單,收斂速度快,能快速計(jì)算得到位置偏好預(yù)測矩陣
本發(fā)明利用內(nèi)存計(jì)算框架加速了計(jì)算速度,在傳統(tǒng)的模型位置推薦的方法上融入偏好相似度,親進(jìn)度和社交信任等多重社交因素,提高了推薦的準(zhǔn)確度。
本發(fā)明的附加方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實(shí)踐了解到。
附圖說明
本發(fā)明的上述和/或附加的方面和優(yōu)點(diǎn)從結(jié)合下面附圖對實(shí)施例的描述中將變得明顯和容易理解,其中:
圖1是本發(fā)明流程圖;
圖2是基于內(nèi)存計(jì)算的矩陣乘法架構(gòu)圖;
圖3是模型訓(xùn)練過程圖。
具體實(shí)施方式
下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能理解為對本發(fā)明的限制。
在本發(fā)明的描述中,除非另有規(guī)定和限定,需要說明的是,術(shù)語“安裝”、“相連”、“連接”應(yīng)做廣義理解,例如,可以是機(jī)械連接或電連接,也可以是兩個(gè)元件內(nèi)部的連通,可以是直接相連,也可以通過中間媒介間接相連,對于本領(lǐng)域的普通技術(shù)人員而言,可以根據(jù)具體情況理解上述術(shù)語的具體含義。
本發(fā)明提供了一種基于內(nèi)存計(jì)算框架、融合社交環(huán)境及時(shí)空數(shù)據(jù)的位置推薦方法,如圖1-3所示,包括以下步驟:
第一步,Spark搭建形成包含master主機(jī)和slave從機(jī)的集群,將用戶簽到表數(shù)據(jù)導(dǎo)入master主機(jī)中,由master主機(jī)進(jìn)行分割,并將數(shù)據(jù)的預(yù)處理任務(wù)分派給slave從機(jī),進(jìn)行統(tǒng)計(jì)整理,用列表示用戶ID,用行表示簽到地點(diǎn),值為0,1,簽到過則表示為1,沒簽到過表示為0,同時(shí)追蹤slave從機(jī)上的分布式計(jì)算,收集slave從機(jī)的反饋信息進(jìn)行匯總統(tǒng)計(jì),具體為從機(jī)分別對用戶簽到位置和簽到頻率進(jìn)行統(tǒng)計(jì),然后主機(jī)收集從機(jī)反饋進(jìn)行匯總,最終進(jìn)行統(tǒng)計(jì)得到用戶簽到矩陣CIt。
由于用戶頻繁進(jìn)行社會活動(dòng)讓位置社交網(wǎng)絡(luò)中積累了豐富的社交數(shù)據(jù)和位置簽到數(shù)據(jù),社交數(shù)據(jù)揭示了用戶之間的內(nèi)在聯(lián)系,具有時(shí)空特性的簽到數(shù)據(jù)反映了用戶在真實(shí)世界的活動(dòng)軌跡,并且兩種數(shù)據(jù)之間相互關(guān)聯(lián),通過共同作用對用戶行為產(chǎn)生影響。
因此第二步為:從社交網(wǎng)絡(luò)中去獲得用戶的社交好友關(guān)系數(shù)據(jù),并對用戶簽到矩陣CIt和用戶的社交好友關(guān)系數(shù)據(jù)進(jìn)行整理,行列都是用戶ID,如果之間存在社交關(guān)系,則值為1,否則值為0,得到用戶之間的社交關(guān)系矩陣SN。
對用戶社交網(wǎng)絡(luò)和歷史簽到數(shù)據(jù)進(jìn)行分析,通過試驗(yàn)發(fā)現(xiàn)用戶社會活動(dòng)具有明顯的時(shí)間周期性,為了將時(shí)間周期特性注入到推薦模型中,本方法提出構(gòu)建基于時(shí)間狀態(tài)的社交圈概念,將社交好友和簽到行為按照時(shí)間狀態(tài)重新劃分。社交環(huán)境下用戶個(gè)人偏好容易受好友影響,對于現(xiàn)有推薦方法未能將社交因素考慮全面的問題,為了提高推薦的準(zhǔn)確度,本實(shí)施例又結(jié)合社交環(huán)境中存在的多種社交因素,包括個(gè)性化、偏好相似度、信任度以及親近度因素。
因此第三步為:對社交環(huán)境進(jìn)行分析,具體包括建立基于時(shí)間狀態(tài)的社交圈、利用用戶簽到矩陣CIt和簽到日志分析和量化個(gè)人偏好、個(gè)人偏好相似度、用戶之間的社交信任以及社交親近度。
第四步,對簽到矩陣進(jìn)行拆分并分解,得到用戶隱特征矩陣Ut和位置隱特征矩陣L,并構(gòu)建推薦模型目標(biāo)函數(shù)得到用戶隱特征矩陣Ut和位置隱特征矩陣L,將用戶隱特征矩陣Ut和位置隱特征矩陣L進(jìn)行合并預(yù)測用戶在每個(gè)時(shí)間狀態(tài)t下的簽到偏好矩陣采用投票方案將不同時(shí)間狀態(tài)下的預(yù)測矩陣合并為統(tǒng)一的位置偏好預(yù)測矩陣
第五步,將得到的位置偏好預(yù)測矩陣的數(shù)據(jù)提取,轉(zhuǎn)換成可視化的形式,輸出分析結(jié)果。
作為本實(shí)施例的優(yōu)選方案,第二步包括以下幾個(gè)步驟:
B1、整理用戶簽到表數(shù)據(jù),數(shù)據(jù)包含用戶社交關(guān)系,用戶的簽到的時(shí)空數(shù)據(jù)、用戶簽到的主題數(shù)據(jù),得到用戶簽到集合U={u1,u2,...,un}和位置集合L={l1,l2,...,lm},其中,u表示用戶,n代表用戶的ID,l表示簽到位置,m代表簽到位置的ID,用戶簽到集合U表示這個(gè)數(shù)據(jù)集合中所包含的所有有簽到記錄的人;位置集合L則是代表數(shù)據(jù)集合中所有有過簽到記錄的位置。
B2、在spark上對用戶簽到表數(shù)據(jù)統(tǒng)計(jì),得出用戶和位置之間關(guān)聯(lián)關(guān)系,例如用戶小明在位置y進(jìn)行簽到,這里就在位置集合中加入這個(gè)位置y,作為集合中的一項(xiàng),用Lu表示用戶u歷史簽到過的位置集合,使用地理坐標(biāo)<經(jīng)度,緯度>對位置進(jìn)行地理編碼。
B3、對用戶簽到數(shù)據(jù)做預(yù)處理:統(tǒng)計(jì)用戶在各位置的簽到頻率,記為用戶-位置簽到頻率矩陣用戶-位置簽到頻率矩陣中的元素cu,i代表用戶u在位置i上的簽到次數(shù)。
B4、統(tǒng)計(jì)用戶社交關(guān)系表,得出用戶之間是否存在好友關(guān)系,用戶之間的社交關(guān)系用矩陣表示,在該矩陣中,元素SNu,v=1代表用戶u和v之間存在直接社交關(guān)系,SNu,v=0代表無直接關(guān)系。其中,用戶社交關(guān)系表是一個(gè)在社交軟件上有關(guān)系的用戶,統(tǒng)計(jì)整理就可以得到用戶之間是否在社交軟件上存在直接的關(guān)系,有則表示1,沒有則表示為0。
第三步包括以下幾個(gè)步驟:
C1、建立社交圈給定時(shí)間狀態(tài),同時(shí)滿足下列兩個(gè)條件的所有用戶v構(gòu)成用戶u的社交圈
1)在原始社交網(wǎng)絡(luò)中用戶u和v之間存在直接社交關(guān)系,即SNu,v=1;
2)其中代表用戶u在時(shí)間狀態(tài)t下的歷史簽到集合,代表u在時(shí)間狀態(tài)t下有過簽到記錄;
如果用戶v在特定時(shí)間狀態(tài)t下符合上述條件,則記為否則記為
C2、分析個(gè)人偏好:
1)分析簽到日志中包含的位置信息和主題信息,為日志中出現(xiàn)的每個(gè)位置計(jì)算主題分布向量,使用符號Dl表示位置l的主題分布向量,其中,簽到日志里面包含簽到位置和簽到主題,代表主題標(biāo)識,從簽到數(shù)據(jù)中可以得到,它是簽到數(shù)據(jù)中的一項(xiàng),簽到的主題項(xiàng),就是代表用戶在這個(gè)位置所做的一些主要內(nèi)容,例如可以是food,service等。
2)為確定時(shí)間狀態(tài)下的每個(gè)用戶計(jì)算個(gè)人偏好分布向量首先對用戶-位置簽到頻率矩陣CI進(jìn)行歸一化處理,將歸一化后的簽到頻率作為主題偏好的權(quán)重,最后對用戶簽到過的位置主題分布向量求加權(quán)平均值得到個(gè)人偏好分布向量計(jì)算公式為:其中*號表示歸一化處理。
計(jì)算用戶偏好分布和位置主題分布之間的相似度Qu,l,并將其視為用戶u對位置l潛在訪問的可能性,其中Qu,l=cosin(Du,Dl)。
C3、分析用戶偏好相似度,計(jì)算公式為:其中,表示在特定時(shí)間狀態(tài)t下,用戶u和v之間的主題偏好相似度。
C4、分析用戶之間的社交信任Su,v:使用符號代表用戶u在時(shí)間狀態(tài)t下的信任值,計(jì)算公式為:
其中是用戶u在時(shí)間狀態(tài)t下的簽到次數(shù),是v在時(shí)間狀態(tài)t下社交圈的好友數(shù)量,d是衰減因子,0<d<1;
根據(jù)計(jì)算用戶之間的社交信任,計(jì)算公式為:
C5、分析用戶之間的親近度,在特定時(shí)間狀態(tài)t下,親近度代表用戶u和v之間社交鏈接的親疏程度以及二者活動(dòng)范圍的距離遠(yuǎn)近,親密程度越高、活動(dòng)范圍越近則兩者之間的親近度就越高。對于任意給定的兩個(gè)個(gè)體A和B以及與兩者有直接社交聯(lián)系的個(gè)體集合S={C,D,E…}。本發(fā)明采取下面計(jì)算方法對用戶之間的親密程度Mu,v進(jìn)行衡量,用戶之間的親密程度計(jì)算公式為:
親近度數(shù)值與親密程度成正比,與距離成反比,本發(fā)明采用下列計(jì)算公式分析用戶之間的親近度,計(jì)算公式為:其中,是時(shí)間狀態(tài)t下用戶u和v簽到中心點(diǎn)之間的空間距離,利用用戶簽到位置的經(jīng)緯度數(shù)據(jù)的平均值表示用戶簽到中心,將用戶的位置投射到地球這個(gè)球面上,計(jì)算用戶之間的距離
第四步包括以下幾個(gè)步驟:
D1、對簽到矩陣進(jìn)行拆分:將一天分為Φ個(gè)時(shí)間狀態(tài),把原始社交網(wǎng)絡(luò)矩陣SN和用戶-簽到頻率矩陣CI分別拆分成Φ個(gè)子矩陣,每個(gè)子矩陣對應(yīng)一個(gè)時(shí)間狀態(tài)t,使用符號SNt表示子社交網(wǎng)絡(luò)矩陣、CIt表示子用戶-簽到頻率矩陣。
通常Φ取為24,即將一天分為24個(gè)時(shí)間狀態(tài)對簽到矩陣進(jìn)行拆分。
D2、對用戶簽到矩陣CIt進(jìn)行分解,將用戶簽到矩陣CIt分解成多個(gè)簽到頻率子矩陣相乘的形式,將分解轉(zhuǎn)化成優(yōu)化過程,構(gòu)造出目標(biāo)函數(shù)并進(jìn)行最小化處理,同時(shí)對目標(biāo)函數(shù)添加附加條件,實(shí)現(xiàn)滿足一定約束的矩陣分解。本方法采用上述的矩陣分解技術(shù),將多種社交因素作為約束條件,把每個(gè)簽到頻率子矩陣分解成用戶隱特征矩陣Ut,和位置隱特征矩陣L,k是隱空間的向量維度,分解方法為:
a、利用個(gè)人偏好、偏好相似度、社交信任以及親近度四種社交因素建立推薦模型目標(biāo)函數(shù),具體為:
其中,*代表歸一化的處理,α、λ、β、γ、μ、η代表設(shè)置的權(quán)重參數(shù),根據(jù)具體數(shù)據(jù)權(quán)重比進(jìn)行設(shè)置,不同應(yīng)用場景下可嘗試調(diào)整參數(shù)設(shè)置以獲得最佳效果,和Ll分別代表k維用戶隱特征向量和k維位置隱特征向量,是u在時(shí)間狀態(tài)t下的規(guī)范化簽到頻率。
b、計(jì)算用戶隱特征矩陣Ut和位置隱特征矩陣L:對推薦模型目標(biāo)函數(shù)進(jìn)行訓(xùn)練,將和Ll看做變量并分別對它們求偏導(dǎo),其中的偏導(dǎo)如下:
Ll的偏導(dǎo)數(shù)如下:
偏導(dǎo)中是指示因子,代表u在時(shí)間狀態(tài)t下對位置l有過簽到,否則
求出偏導(dǎo)后,在梯度方向上更新隱特征向量,把每次更新后的向量代入到推薦模型目標(biāo)函數(shù)中重新計(jì)算,讓函數(shù)值以最快速度向下減??;不斷迭代該過程直至推薦模型目標(biāo)函數(shù)收斂為止,最后得到用戶隱特征矩陣Ut和位置隱特征矩陣L。
D3、合并用戶隱特征矩陣Ut和位置隱特征矩陣L:得到用戶隱特征矩陣Ut和位置隱特征矩陣L后,按UtLT算法預(yù)測用戶在每個(gè)時(shí)間狀態(tài)t下的簽到偏好矩陣并使用投票方案將不同時(shí)間狀態(tài)下的預(yù)測矩陣合并為統(tǒng)一的位置偏好預(yù)測矩陣這里T代表矩陣轉(zhuǎn)置運(yùn)算。
投票方式為在每個(gè)時(shí)間狀態(tài)下推舉出top n個(gè)位置,然后將全部時(shí)間狀態(tài)下出現(xiàn)次數(shù)最多的位置集合推薦給用戶。本方法使用HAMA的矩陣乘法,需要使用多趟MapReduce Job完成。下面是每趟Job的工作內(nèi)容:
1)從HBase表構(gòu)造CollectionTable。CollectionTable是實(shí)現(xiàn)矩陣乘法的一個(gè)中間數(shù)據(jù)結(jié)構(gòu)。其記錄的是要進(jìn)行矩陣乘法的兩個(gè)分塊的內(nèi)容。block(i,j)-k代表要進(jìn)行分塊矩陣乘的兩個(gè)block,后面的k代表第K子矩陣乘法。在Map階段Map讀入矩陣的行向量,發(fā)射(blockID,sub-vector)KV對,在Reduce階段將sub-vector收集成分塊矩陣信息,存儲HDFS的文件中。
2)從CollectionTable中計(jì)算矩陣乘法。在Map階段,Maptask讀入CollectionTable中的一塊,并進(jìn)行MatrixA*MatrixB的操作,發(fā)射(blockID,分塊矩陣乘結(jié)果)。在Reduce結(jié)算,收集所有的乘法結(jié)果,并進(jìn)行累加,將最終結(jié)果存入HBase表中。
在本說明書的描述中,參考術(shù)語“一個(gè)實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本發(fā)明的至少一個(gè)實(shí)施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不一定指的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任何的一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。
盡管已經(jīng)示出和描述了本發(fā)明的實(shí)施例,本領(lǐng)域的普通技術(shù)人員可以理解:在不脫離本發(fā)明的原理和宗旨的情況下可以對這些實(shí)施例進(jìn)行多種變化、修改、替換和變型,本發(fā)明的范圍由權(quán)利要求及其等同物限定。