一種基于加權(quán)混合的移動app推薦方法
【專利摘要】本發(fā)明公開了一種基于加權(quán)混合的移動APP推薦方法,抓取移動APP標簽數(shù)據(jù)和移動APP簡介數(shù)據(jù),并與用戶移動APP下載數(shù)據(jù)分別進行數(shù)據(jù)預(yù)處理;針對預(yù)處理后的移動APP標簽數(shù)據(jù)和用戶移動APP下載數(shù)據(jù),建立個性化標簽?zāi)P?,利用該模型計算預(yù)測分數(shù)以此得到第一推薦列表;針對處理后的移動APP簡介數(shù)據(jù)和用戶移動APP下載數(shù)據(jù),建立LDA用戶模型,通過該模型得到主題下用戶的概率分布,然后利用KL散度計算用戶之間的相似度以此形成第二推薦列表;對兩個推薦列表進行加權(quán)混合,形成最終推薦列表。本發(fā)明通過兩種相互獨立的方法各自形成相應(yīng)的推薦結(jié)果,最終對兩個推薦結(jié)果進行加權(quán)混合,通過并列式加權(quán)混合的方式將兩種方法的優(yōu)勢結(jié)合起來,提高推薦結(jié)果的準確性和多樣性。
【專利說明】
一種基于加權(quán)混合的移動APP推薦方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及信息技術(shù)領(lǐng)域,具體涉及移動APP個性化推薦研究的一種基于加權(quán)混 合的移動APP推薦方法。
【背景技術(shù)】
[0002] 伴隨著信息技術(shù)和互聯(lián)網(wǎng)的快速發(fā)展,移動智能終端作為信息服務(wù)的載體近幾年 迅速普及。而移動智能終端的普及帶來了移動APP市場的快速增長,幾大應(yīng)用市場的應(yīng)用安 裝也相應(yīng)越來越流行,主要的應(yīng)用市場包括:APP Store、Android Market和Windows Store,且擁有用戶較多的APP Store和Android Market的移動APP個數(shù)已超百萬。
[0003] 移動APP的快速發(fā)展,給用戶帶來了豐富多樣的選擇,但是要從海量的移動APP中 找到感興趣的APP,用戶需要耗費大量的時間來進行選擇。在信息過濾領(lǐng)域,存在著"信息過 載"問題,而對于目前的移動APP市場同樣也存在著此問題,能解決此類問題最有效的方式 則是推薦系統(tǒng)(Recommender Systems)。為了深入有效地解決"信息過載"問題,工業(yè)界和學(xué) 術(shù)界展開了一系列對推薦系統(tǒng)的廣泛研究,并且也取得了很多的研究成果。推薦系統(tǒng)的實 現(xiàn)方式是通過充分挖掘用戶與項目之間(User-Item)的二元關(guān)系,從而幫助用戶在海量的 數(shù)據(jù)中發(fā)現(xiàn)用戶可能感興趣的項目。因此,針對如何提高移動APP的推薦算法性能的研究勢 在必行。
[0004] -個完整的推薦系統(tǒng)由三個模塊組成,分別為:用戶建模模塊、推薦對象建模模塊 和推薦算法模塊。用戶建模模塊完成的是收集用戶歷史信息數(shù)據(jù),建立用戶模型,而用戶歷 史信息數(shù)據(jù)的種類很多,如用戶購買行為、點擊行為、評分行為等;推薦對象建模模塊實現(xiàn) 的是對推薦對象內(nèi)容進行建模;推薦算法模塊是最核心的部分,針對不同類型的推薦系統(tǒng) 以及不同的數(shù)據(jù)形態(tài)存在多種不同的推薦算法,這個模塊將利用相應(yīng)的規(guī)則對用戶建模模 塊和推薦對象建模模塊進行處理。最終將用戶最可能喜歡的內(nèi)容作為推薦結(jié)果。常見的推 薦算法有基于內(nèi)容的推薦算法、協(xié)同過濾推薦算法和混合推薦算法。
[0005] 基于內(nèi)容的推薦算法基于物品信息內(nèi)容進行推薦,通常用特征抽取來描述物品, 用戶偏好的刻畫用來表示用戶喜愛什么類型的物品。換句話說,此算法根據(jù)用戶歷史的喜 愛物品為其推薦相似物品。通?;趦?nèi)容的推薦算法首先對物品進行建模,用來描述物品 的屬性,算法利用物品特征的權(quán)重向量來對用戶進行特征表示,權(quán)重代表每個特征對用戶 的重要程度,可以通過Bayesian、決策樹等計算用戶對于物品的喜愛程度。通過用戶的直接 反饋,比如喜愛與不喜愛,可以分配不同大小的權(quán)重。因此,基于內(nèi)容的推薦是根據(jù)物品的 內(nèi)容信息生成的推薦,而不需要依賴用戶對物品的評價等數(shù)據(jù)。
[0006] 協(xié)同過濾推薦算法主要是通過收集和分析大量的用戶和物品關(guān)系數(shù)據(jù),通過此數(shù) 據(jù)得到用戶或物品之間的相似度,從而給用戶推薦可能最感興趣的物品[15]。協(xié)同過濾推 薦算法不需要對物品內(nèi)容信息進行特征表示,而是基于假設(shè)用戶現(xiàn)在的喜好和歷史的喜好 相同,過去喜愛的物品現(xiàn)在也仍會喜歡。協(xié)同過濾算法需要有用戶的積極參與,且能夠用簡 單的方法描述用戶的興趣,然后根據(jù)信息匹配相似興趣的用戶。協(xié)同過濾的實現(xiàn)方式是通 過用戶對物品的評分,以此表示用戶對物品的喜好程度,以此來描述用戶的興趣,系統(tǒng)能夠 將用戶對物品的評分和其他用戶對相同物品的評分進行匹配,發(fā)現(xiàn)興趣最相似的用戶,最 后將相似用戶評分很高的物品,且此物品不在此用戶列表中,推薦給此用戶。協(xié)同過濾推薦 算法可以分為基于用戶的協(xié)同過濾和基于物品的協(xié)同過濾。協(xié)同過濾推薦算法的推薦質(zhì)量 取決于用戶對物品的評價,而本文所處理的移動APP數(shù)據(jù)中沒有用戶對移動APP的評價信 息,因此本文將不考慮協(xié)同過濾推薦算法。
[0007] 基于內(nèi)容的推薦算法主要依附于物品的內(nèi)容信息和描述進行推薦,協(xié)同過濾推薦 算法是通過對用戶特定行為進行收集和分析形成推薦,利用單一的推薦算法對用戶進行推 薦時可能會存在數(shù)據(jù)稀疏和冷啟動等問題。因此可以利用混合算法揚長避短,結(jié)合不同推 薦算法的優(yōu)點為用戶進行推薦。
【發(fā)明內(nèi)容】
[0008] 本發(fā)明目的是:提供一種基于加權(quán)混合的移動APP推薦方法,以解決目前基于內(nèi)容 的推薦算法只考慮信息和信息之間的相似關(guān)系,而忽略了用戶行為,存在模型有效性問題 和過度特征化等問題,以及基于主題模型的推薦算法無法表征用戶偏好的問題。
[0009] 本發(fā)明的技術(shù)方案是:
[0010] 一種基于加權(quán)混合的移動APP推薦方法,包括以下步驟:
[0011] S1:抓取移動APP標簽數(shù)據(jù)和移動APP簡介數(shù)據(jù),然后對移動APP標簽數(shù)據(jù)、移動APP 簡介數(shù)據(jù)及用戶移動APP下載數(shù)據(jù)進行數(shù)據(jù)預(yù)處理;
[0012] S2:針對預(yù)處理后的移動APP標簽數(shù)據(jù)和用戶移動APP下載數(shù)據(jù),通過對用戶行為 進行分析建立個性化標簽?zāi)P?,然后對用戶所下載APP的標簽數(shù)據(jù)集進行加權(quán)量化,利用個 性化標簽?zāi)P捅闅v所有候選移動APP,計算用戶對候選移動APP的預(yù)測分數(shù)以此得到第一推 薦列表;
[0013] S3:針對處理后的移動APP簡介數(shù)據(jù)和用戶移動APP下載數(shù)據(jù),建立LDA用戶模型, 通過該模型得到主題下用戶的概率分布,然后利用KL散度計算用戶之間的相似度以此形成 第二推薦列表;
[0014] S4:對第一推薦列表與第二推薦列表進行加權(quán)混合,通過并列式的混合方式形成 最終推薦列表。
[0015] 優(yōu)選的,步驟S1中通過定向爬蟲技術(shù),即利用Nutch工具的爬蟲組件Crawler對移 動APP標簽數(shù)據(jù)和移動APP簡介數(shù)據(jù)進行抓取。
[0016]優(yōu)選的,步驟S2中得到第一推薦列表的方法包括:
[0017]針對處理后的移動APP標簽數(shù)據(jù)和用戶移動APP下載數(shù)據(jù),對用戶行為進行分析, [0018]根據(jù)用戶下載來源對用戶所下載的移動APP進行劃分,將其劃分為High、N〇rmal和 Low三個等級,
[0019]得到用戶移動APP的劃分后,對標簽數(shù)據(jù)集進行劃分,將其劃分為HighTags Set、 Normal Tags Set和Low Tags Set三個數(shù)據(jù)集,
[0020 ]去除重復(fù)標簽,根據(jù)每個標簽的頻率對標簽進行加權(quán)量化,
[0021 ]得到標簽的權(quán)重后,建立個性化標簽?zāi)P停?br>[0022]利用個性化標簽?zāi)P捅闅v所有候選移動APP,計算用戶對候選移動APP的預(yù)測分 數(shù),
[0023]通過對預(yù)測分數(shù)排序,得到第一推薦列表。
[0024]優(yōu)選的,根據(jù)用戶下載來源對用戶所下載的移動APP進行劃分,將其劃分為High、 Normal和Low三個等級,具體如下:
[0025] High:搜索、猜你喜歡、更新管理,收藏;
[0026] Normal:軟件、首頁,游戲;
[0027] Low:后臺下載、來源未知、none。
[0028] 優(yōu)選的,步驟S3中得到第二推薦列表的方法包括:
[0029]針對處理后的移動APP簡介數(shù)據(jù)和用戶下載列表數(shù)據(jù),建立LDA用戶模型,
[0030] 首先是對數(shù)據(jù)格式的系列轉(zhuǎn)換,具體包括將數(shù)據(jù)轉(zhuǎn)換成SequenceFile格式,將 SequenceFile格式文件轉(zhuǎn)換為向量表示,且將單詞形式轉(zhuǎn)換成單詞id的形式,
[0031] 使用CVB0方法對LDA用戶模型訓(xùn)練,設(shè)定迭代次數(shù)和主題個數(shù),
[0032] LDA用戶模型訓(xùn)練后得到用戶在主題空間下的概率分布,
[0033] 利用優(yōu)化后的KL散度計算用戶之間的相似度,
[0034] 利用用戶之間的相似度,選定相應(yīng)的移動APP,給用戶形成第二推薦列表。
[0035] 優(yōu)選的,所述步驟S4中加權(quán)混合的方法為:對于第一推薦列表與第二推薦列表,利 用并行式混合模型思想將其進行混合,利用加權(quán)因子來對不同方法生成的推薦結(jié)果進行控 制,形成最終推薦列表。
[0036]本發(fā)明的有益效果:
[0037]本發(fā)明所提供的基于加權(quán)混合的移動APP推薦方法,通過兩種相互獨立的方法各 自形成相應(yīng)的推薦結(jié)果,最終對兩個推薦結(jié)果進行加權(quán)混合,通過并列式加權(quán)混合的方式 將兩種方法的優(yōu)勢結(jié)合起來,提高算法的推薦結(jié)果的準確性和多樣性。
【附圖說明】
[0038] 下面結(jié)合附圖及實施例對本發(fā)明作進一步描述:
[0039] 圖1為本發(fā)明實施例中利用個性化標簽?zāi)P偷玫酵扑]列表的流程圖;
[0040] 圖2為本發(fā)明實施例中LDA用戶模型矩陣示意圖;
[0041] 圖3為本發(fā)明實施例中利用LDA用戶模型得到推薦列表的流程圖;
[0042]圖4為本發(fā)明實施例中基于加權(quán)混合的移動APP推薦方法的方法架構(gòu)設(shè)計圖。
【具體實施方式】
[0043]下面結(jié)合附圖對本發(fā)明作進一步詳細的說明。
[0044]如圖1所示,本發(fā)明方法針對數(shù)據(jù)處理后的移動APP簡介數(shù)據(jù)和用戶APP下載列表 數(shù)據(jù),首先對用戶行為進行分析,根據(jù)分析結(jié)果對用戶所下載的標簽數(shù)據(jù)集進行加權(quán)量化, 然后建立個性化標簽?zāi)P?,利用個性化標簽?zāi)P捅闅v所有候選移動APP,計算用戶對候選移 動APP的預(yù)測分數(shù),最終得到推薦列表。
[0045] (1)用戶行為分析
[0046]根據(jù)用戶移動APP下載列表數(shù)據(jù)中下載來源對用戶下載的移動APP進行分類,然后 根據(jù)分類結(jié)果對用戶所下載移動APP的標簽數(shù)據(jù)進行加權(quán)量化。首先對移動APP下載列表數(shù) 據(jù)中用戶下載來源來對用戶行為進行分析。對數(shù)據(jù)分析可得,用戶的移動APP下載來源共包 括10類,分別為搜索、軟件、更新管理、首頁、后臺下載、猜你喜歡、收藏、來源未知、游戲、 none,對其進行分析后將其劃分為三個等級,分別為High、Normal和Low,下載來源等級劃分 具體如下:
[0047] High:搜索、猜你喜歡、更新管理,收藏;
[0048] Normal:軟件、首頁,游戲;
[0049] Low:后臺下載、來源未知、none。
[0050] 根據(jù)此等級可以將每一個用戶下載的所有移動APP劃分為High APP、Normal APP 和Low APP三個等級,因此每個用戶所下載的移動APP可以劃分為三大類。通過APP等級的劃 分同樣也可以對用戶所下載的移動APP的標簽數(shù)據(jù)進行劃分,將用戶所下載的全部移動APP 的標簽數(shù)據(jù)分為三個數(shù)據(jù)集,分別為High Tags Set、Normal Tags Set和Low Tags Set,去 除重復(fù)標簽后將根據(jù)標簽的頻率對其進行加權(quán)量化。將用戶的High Tags Set、Normal Tags Set、Low Tags Set分別表示為HT、NT和LT,則計算標簽權(quán)重的公式分別為 acorc(/(|//,/rr)-./;(/, |/-/7)
[0051 ] <: score: " ,;AT!T) = | MT) scorc(/; \u ,LTJ - \LT)
[0052]其中,fr(ti |HT)是標簽ti在用戶u在High tags set中的頻率。fr(ti |NT)和fr(ti | LT)則是在Normal tags set和Low tags set中的頻率。
[0053] (2)建立個性化標簽?zāi)P?br>[0054] 根據(jù)得到標簽的權(quán)重,本方法則可以建立個性化標簽?zāi)P?,具體的計算公式如下:
[0055] T Model(u) = a X score(u,HT)+0X score(u,NT)+xX score(u,LT)
[0056] 其中,a,f3,x是獨立的參數(shù)來控制HT、NT和LT中不同標簽的權(quán)重,且滿足條件0〈f3< a^l ,-l^x<〇〇
[0057]建立個性化標簽?zāi)P秃螅缓髮蜻x移動APP進行預(yù)測分數(shù)的計算,設(shè)定候選APP i的標簽集為i T,則候選APP i的預(yù)測分數(shù)為:
[0058] rui - a x H score(tt \u, 11^ + PY, score (i: |?,AT) + JX E score (t;\ii,LT)
[0059] 其中,是計算標簽同時在標簽集i T和HT中的標簽權(quán)重, g是用來計算標簽同時在標簽集i T和N T中的標簽權(quán)重, ^€{;rrixvr^ g 是用來計算標簽同時在標簽集i T和LT中的標簽權(quán)重,并且a,e,x作為 權(quán)重參數(shù)用來對權(quán)重進行調(diào)整,最終將rul作為用戶u對候選APP i的喜歡程度。通過建立個 性化標簽?zāi)P?,得到用戶對候選APP的預(yù)測分數(shù)m后,對其進行排序,采取前Top N個對用戶 進行推薦。通過權(quán)重參數(shù)來控制三個標簽數(shù)據(jù)集中的權(quán)重,三個參數(shù)的設(shè)置直接影響到個 性化標簽?zāi)P退a(chǎn)生的推薦,若設(shè)定High Tag Set的權(quán)重大,則產(chǎn)生的推薦側(cè)重的是用戶 喜歡的標簽集HighTag Set所對應(yīng)的移動APP,而設(shè)定Low Tag Set的權(quán)重大,則產(chǎn)生的推薦 側(cè)重的是過濾了用戶不喜歡的標簽集Low Tag Set所對應(yīng)的移動APP。
[0060] 建立個性化標簽?zāi)P秃?,通過計算得到用戶對候選移動APP的預(yù)測分數(shù),對預(yù)測分 數(shù)進行排序,選定前N個項目為用戶進行推薦。與傳統(tǒng)的計算內(nèi)容之間的相似度,然后根據(jù) 相似度的大小給用戶進行推薦的方式相比,個性化標簽?zāi)P屠脤τ脩粜袨榈姆治觯瑢?簽數(shù)據(jù)進行加權(quán)量化,而不是提取出標簽中權(quán)重較大的關(guān)鍵詞作為特征,比較特征之間的 相似度,因此,本發(fā)明通過建立個性化標簽?zāi)P蜕赏扑]列表,以此提高推薦性能。
[0061] 如圖2所示,本發(fā)明方法在標準的主題模型文檔-主題-詞的三層貝葉斯模型上,利 用其貝葉斯結(jié)構(gòu),針對海量移動APP簡介數(shù)據(jù)和用戶APP下載數(shù)據(jù),提出了LDA用戶模型,首 先將每個用戶u表示成由該用戶所下載移動APP簡介數(shù)據(jù)構(gòu)成的一個長的文本數(shù)據(jù)d,用d來 表示用戶u,因此得到的用戶下載的移動APP簡介集合D代表用戶集合U,對移動APP簡介集合 D建立LDA用戶模型,通過LDA用戶模型的訓(xùn)練,則可以得到用戶在主題空間下的概率分布。 這些主題可以看作移動APP的一個類別或是用戶喜歡的一個興趣點,每個用戶喜歡的興趣 點都不盡相同,在這種情況下,每個用戶在主題空間下的概率分布也各自不同,因此可以通 過此概率分布計算得到形似用戶,本方法提出的LDA用戶模型描述的是用戶-主題-詞的新 三層關(guān)系。
[0062] 從圖2可以看到,用戶集合U = WXK,即可得到LDA用戶模型下,用戶在主題下的概 率分布,其中W為主題空間,K為概率分布。用戶-主題-詞的三層關(guān)系中,在第一層關(guān)系用戶 層中,針對所有移動APP下載用戶的集合U= {m,u2,…,um},對應(yīng)其中的每一個用戶m,可以 對該用戶所下載的所有移動APP簡介數(shù)據(jù)組成的長的文本中獲取一個詞頻向量 X 2,…尤,〉;在第二層關(guān)系主題層中,在用戶集合中的每一個用戶m可以將其表 示為相應(yīng)的向量形式& = /Vi, 』,_ ?, /Vi: },其中然w對應(yīng)的是每一個用戶u i在主題空間下 的概率分布值,這樣就得到了用戶在主題空間下的概率分布。
[0063]如圖3所示,本發(fā)明方法針對處理后的移動APP簡介數(shù)據(jù)和用戶下載列表數(shù)據(jù),建 立LDA用戶模型,首先是數(shù)據(jù)格式的系列轉(zhuǎn)換,然后訓(xùn)練LDA用戶模型,通過該模型得到主題 下用戶的概率分布,然后利用KL散度計算用戶之間的相似度以此形成推薦列表。
[0064] (1)數(shù)據(jù)格式的系列轉(zhuǎn)換
[0065]要建立LDA用戶模型,首先將數(shù)據(jù)轉(zhuǎn)換成分成SequenceFile格式,利用Hadoop平臺 的MapReduce框架將數(shù)據(jù)預(yù)處理的數(shù)據(jù)(以txt形式進行保存)轉(zhuǎn)化成SequenceFile數(shù)據(jù)格 式。本方法采用Mahout平臺對LDA用戶模型進行實現(xiàn),而Mahout的標準數(shù)據(jù)輸入格式為 SequenceFi le格式,因此本文將數(shù)據(jù)轉(zhuǎn)換為SequenceFi le格式,這樣大大地壓縮了數(shù)據(jù),使 得數(shù)據(jù)處理過程更高效。然后將SequenceFile文件轉(zhuǎn)換為向量表示,為了適應(yīng)多種數(shù)據(jù), Mahout機器學(xué)習(xí)算法多使用向量空間作為輸入數(shù)據(jù)。權(quán)重選擇詞頻TF,即Term-Frequency。 由于上一步中將數(shù)據(jù)處理成SequenceFile格式,且各個單詞之間以空格作為分隔符,將其 轉(zhuǎn)換成向量的形式分詞器采用的是Lucene的WhitespaceAnalyzer。最后將單詞形式轉(zhuǎn)換成 單詞id,本方法要利用Mahout的CVB0方法對LDA用戶模型進行訓(xùn)練,因此需要將單詞形式轉(zhuǎn) 換為word_id的形式,故需要對上一步驟中生成的word將其轉(zhuǎn)換成word_id〇 [0066] (2)訓(xùn)練LDA用戶模型
[0067] 根據(jù)轉(zhuǎn)換的向量詞典表和word_id表,使用CVB0方法對LDA用戶模型訓(xùn)練。Mahout CVBO算法本質(zhì)上面就是Bayes公式和EM算法的結(jié)合,而EM算法的實現(xiàn)是對單詞-主題不斷重 復(fù)計算的過程,在E過程中,設(shè)定一個向量docTopics,這個向量滿足的條件是均勻分布的, 同時滿足歸一化,對這個向量使用Bayes公式就可以得到矩陣docTopicModel,這個矩陣為 單詞-主題的概率分布的結(jié)果;M過程所實現(xiàn)的功能是對E過程生成的矩陣重新計算,進而獲 得新的向量,一直重復(fù)EM過程,直到得到的矩陣和向量為收斂的為止。且得到的概率分布矩 陣用來對LDA用戶模型的更新,得到的向量則是主題概率分布向量。CVB0算法的運行流程如 下:
[0068] ①解析參數(shù)與Configuration設(shè)置;
[0069] ②讀取Model,如果HDFS上已經(jīng)有部分Model,那么程序?qū)⒆x取最后一個Model,并 以這個Model作為初始readModel來繼續(xù)進行算法迭代。
[0070]③運行算法迭代(Mapper過程)生成LDA模型,首先通過分析Mapper過程,獲取緩存 的Mapper,即CachingCVBOMapper,表現(xiàn)在其readModel的選取上面,如果目錄里面不存在任 何Model則用RandomSeed初始化一個readModel方法,若存在Model則讀取最近的一個 Model。程序?qū)odel劃分為readModel和writeModel兩類,都為TopicModel類,并由 ModelTrainer來進行調(diào)度和管理。
[0071] Mahout程序應(yīng)用了CVBOAlgorithm來計算LDA用戶模型,在Map過程中通過對向量 docTopic和矩陣docTopicModel的反復(fù)迭代求解,通過不斷的迭代計算,得到每個用戶的矩 陣,并且在update writeModel這個過程中,對用戶的矩陣進行相加,然后計算完所有的Map 過程之后,就可以得到所有語料集中的docTopicModel矩陣,最后還需要經(jīng)歷一個cleanup 過程,這個過程是將主題的索引作為關(guān)鍵字,并且將矩陣作為具體值寫入到Reduce過程中。 詳細訓(xùn)練過程步驟如下:
[0072]①根據(jù)貝葉斯公式,docTopicModel的計算公式為:
[0074] 其中p(topic x| term a)描述了在給定term a下,文檔屬于topic x的概率,且p (term) = sum_a(p(term a | topic x)),在ReadModel初始化時確定在整個訓(xùn)練過程中不會 發(fā)生變化,該值是一個和topic相關(guān)的向量;p(topic x)描述的是目標文檔的topic概率分 布,初始值為均勻分布且歸一化的向量,在每次算法訓(xùn)練過程中將被更新作為下一次算法 訓(xùn)練的輸入;P(term a| topic x)則是所有單詞向量term在給定topic x下的概率,在 ReadModel初始化時確定在整個訓(xùn)練過程中不會變化,該對象是一個密集矩陣。
[0075] ②將docTopicModel進行歸一化,使sum_x(p(topic x | term a)) = 1 〇
[0076] ③生成新的docTopicModel,是docTopicModel和TF-IDF的乘積,而TF-IDF是目標 文檔的單詞向量集合,用以評估一個詞對于一個文件集或一個語料庫中的其中一個文檔的 重要程度。
[0077]④根據(jù)全概率公式可以得到:
[0078] p(topic x)= sum_x(p(term a)p(topic x|term a))
[0 07 9 ] 重新計算得到的新的d o c T o p i c的值作為下次算法的輸入,而p (t e r m a)則是T F - IDF的值,這是由于權(quán)重越大的單詞則表示其出現(xiàn)的概率越高。
[0080] ⑤Update WriteModel,每次用新生成的docTopics重復(fù)進行以上訓(xùn)練過程N次后, 得到一個最終的docTopicModel,該對象描述了給定item a下生成topic x的概率,然后用 該對象來更新WriteModel,使得WriteModel的topicTermCounts(初始值為0)和topicSums (初始值為1和〇)在上一次運算mapper得到的值的基礎(chǔ)上加上這一次運算得到的值,并且對 corpus中所有的document全部進行相應(yīng)運算,得到最終的topicTermCounts則是p(topic x |term a)的加和,即根據(jù)單詞term將可以得到topic x出現(xiàn)的概率p(topic x|term),即可 以得到最終LDA模型的輸出。DocTopicInference過程,即通過LDA模型來進行從Document到 Topic 的概率分布。首先初始化 readModel、WriteModel 和mode ITrainer,Mapper 過程與CVB0 算法的過程相同,對readModel的算法迭代訓(xùn)練過程N次,最終得到docTopic,即目標文檔的 主題概率分布p(topic x),然后將文本編號作為key,這個值作為value寫入map中,即可得 到最終的文本_主題概率矩陣,也就得到了用戶在主題空間下的概率分布矩陣。
[00811 (3)用戶相似度計算
[0082]本發(fā)明方法的用戶相似度的計算采用的是KL散度,也稱KL距離,KL散度計算公式 常用來計算概率分布間的相似度,其計算公式如下:
[0084] 其中,Dkl(P | | Q)表不隨機變量P = (pi,P2,…,pm)和Q = (qi,q2,…,qM)之間的KL距 離,KL距離為零表示的是用戶在主題下的概率分布一樣,且KL距離滿足非負性的條件。 [0085]由于KL距離不滿足對稱性,即Dkl(P| |Q)乒Dkl(Q| |P),因此本發(fā)明方法將其轉(zhuǎn)換成 對稱的形式,解決了在計算不同用戶間的KL距離時由于不對稱性導(dǎo)致計算結(jié)果存在差異的 問題,具體公式如下:
[0086] D(P,Q) = [Dkl(P| |Q)^Dkl(Q| |P)]/2
[0087] 其中D(P,Q)值越小表示用戶在主題下的概率分布越接近,相似度就越高。在本發(fā) 明方法提出的LDA用戶模型中,用戶的興趣可以由用戶所下載的APP簡介數(shù)據(jù)在主題空間的 概率分布來表示的,LDA用戶模型得到了用戶在主題下的概率分布,那么則可以用概率分布 之間的相似性來表示用戶間的相似性,因此用戶的相似度的計算公式如下:
[0089]其中sim(Ui,Uj)表示的是用戶m和Uj的之間的相似度,而Ui和Uj分別是用戶在主題 下的概率分布。simOJi,山)越大則表示用戶之間的相似度越高。
[0090] (4)生成推薦列表
[0091] 得到了用戶之間的相似度后,為了根據(jù)用戶之間的相似度來為用戶形成移動APP 的推薦,本方法提出了利用用戶相似度所占比值來選定該用戶所需要選取的移動APP個數(shù), 以此方法來形成給用戶的推薦列表。具體公式如下:
[0093]其中,Rdj)表示用戶i的相似用戶j所選取的移動APP推薦個數(shù),S^(j)表示用戶i 的相似用戶j之間的相似度,且N為選定的用戶i的相似用戶個數(shù),K為生成的推薦列表的個 數(shù)。用戶相似度越高,則該用戶所下載的移動APP更需要推薦給用戶。通過上式可以得到用 戶的相似用戶所應(yīng)選取的推薦個數(shù),最終形成推薦列表。
[0094]如圖4所示,本發(fā)明方法根據(jù)圖4所述方法,利用上海某軟件公司的移動APP市場的 用戶APP下載數(shù)據(jù),先后通過數(shù)據(jù)預(yù)處理,對網(wǎng)頁數(shù)據(jù)進行抓取,以及數(shù)據(jù)的一系列預(yù)處理 得到處理后的數(shù)據(jù),針對處理后的數(shù)據(jù)分別建立個性化標簽?zāi)P秃蚅DA用戶模型,通過兩個 模型分別得到相應(yīng)的推薦列表,然后利用并行化加權(quán)混合的方法,對推薦結(jié)果進行加權(quán)混 合,得到最終的推薦列表。
[0095]其中,數(shù)據(jù)預(yù)處理部分主要包括數(shù)據(jù)抓取和數(shù)據(jù)處理兩部分,數(shù)據(jù)抓取利用的是 開源抓取工具Nutch,來對360手機助手(網(wǎng)頁來源http: //zhushou. 360. cn/)的數(shù)據(jù)進行抓 取,利用了Nutch的Crawler爬蟲組件,建立初始URL集,得到移動APP標簽數(shù)據(jù)和移動APP簡 介數(shù)據(jù);本方法數(shù)據(jù)處理及存儲采用的是Hive數(shù)據(jù)倉庫,數(shù)據(jù)預(yù)處理部分首先對數(shù)據(jù)進行 導(dǎo)入,然后對重復(fù)數(shù)據(jù)進行去除,最后對移動APP簡介數(shù)據(jù)實現(xiàn)分詞,分詞采用的是Ansj,現(xiàn) 對移動APP簡介數(shù)據(jù)標出詞性,如:肯德基\n,前面的"肯德基"是將一個句子分詞過后的一 個詞語,其中"\n"代表的是詞性,這里為名詞。然后再根據(jù)詞性和停用表過濾一些無益于 LDA的詞性,比如助詞"的"等。
[0096] 其中,本發(fā)明方法的加權(quán)混合方式的實現(xiàn),所采用的是并行式混合方式,并行式混 合模式各推薦算法可以獨立運行,然后分別產(chǎn)生推薦列表,然后對分別產(chǎn)生的推薦結(jié)果進 行混合。本文通過對數(shù)據(jù)的抓取和預(yù)處理后,分別建立個性化標簽?zāi)P秃蚅DA用戶模型,兩 種模型各自生成了相應(yīng)的推薦列表,然后對兩個推薦結(jié)果進行并行式加權(quán)混合,具體公式 如下:
[0097] R = aR(T) + (l-a)R(L)
[0098] 其中,a為加權(quán)因子,且滿足條件〇<a$l,R(T)為個性化標簽?zāi)P蜕傻耐扑]結(jié) 果,R(L)為LDA用戶模型生成的推薦結(jié)果,R是最終給用戶形成的推薦結(jié)果。
[0099] 本方法通過兩種相互獨立的方法各自形成相應(yīng)的推薦結(jié)果,最終對結(jié)果進行加權(quán) 混合,通過并列式加權(quán)混合的方式將兩種方法的優(yōu)勢結(jié)合起來,提高算法的推薦結(jié)果的準 確性和多樣性。
[0100] 本發(fā)明對算法個性化標簽?zāi)P偷膮?shù)、LDA用戶模型參數(shù)和混合加權(quán)因子參數(shù)分 別進行了測試,選定了最優(yōu)參數(shù)的情況下,對推薦算法的F1參數(shù)和覆蓋率參數(shù)進行了測試, 且與優(yōu)化前的基于內(nèi)容的推薦算法性能進行了對比,測試結(jié)果表明,本發(fā)明方法的所產(chǎn)生 推薦結(jié)果的F1參數(shù)和覆蓋率參數(shù)均優(yōu)于其他算法,提高了移動APP推薦算法的準確性和多 樣性,能給用戶形成準確更高和覆蓋率更廣的推薦列表。
[0101] 上述實施例只為說明本發(fā)明的技術(shù)構(gòu)思及特點,其目的在于讓熟悉此項技術(shù)的人 能夠了解本發(fā)明的內(nèi)容并據(jù)以實施,并不能以此限制本發(fā)明的保護范圍。凡根據(jù)本發(fā)明主 要技術(shù)方案的精神實質(zhì)所做的修飾,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。
【主權(quán)項】
1. 一種基于加權(quán)混合的移動APP推薦方法,其特征在于,包括以下步驟: Sl:抓取移動APP標簽數(shù)據(jù)和移動APP簡介數(shù)據(jù),然后對移動APP標簽數(shù)據(jù)、移動APP簡介 數(shù)據(jù)及用戶移動APP下載數(shù)據(jù)進行數(shù)據(jù)預(yù)處理; S2:針對預(yù)處理后的移動APP標簽數(shù)據(jù)和用戶移動APP下載數(shù)據(jù),通過對用戶行為進行 分析建立個性化標簽?zāi)P?,然后對用戶所下載APP的標簽數(shù)據(jù)集進行加權(quán)量化,利用個性化 標簽?zāi)P捅闅v所有候選移動APP,計算用戶對候選移動APP的預(yù)測分數(shù)以此得到第一推薦列 表; S3:針對處理后的移動APP簡介數(shù)據(jù)和用戶移動APP下載數(shù)據(jù),建立LDA用戶模型,通過 該模型得到主題下用戶的概率分布,然后利用KL散度計算用戶之間的相似度以此形成第二 推薦列表; S4:對第一推薦列表與第二推薦列表進行加權(quán)混合,通過并列式的混合方式形成最終 推薦列表。2. 根據(jù)權(quán)利要求1所述的基于加權(quán)混合的移動APP推薦方法,其特征在于,步驟Sl中通 過定向爬蟲技術(shù),即利用Nutch工具的爬蟲組件Crawler對移動APP標簽數(shù)據(jù)和移動APP簡介 數(shù)據(jù)進行抓取。3. 根據(jù)權(quán)利要求1所述的一種基于加權(quán)混合的移動APP推薦方法,其特征在于,步驟S2 中得到第一推薦列表的方法包括: 針對處理后的移動APP標簽數(shù)據(jù)和用戶移動APP下載數(shù)據(jù),對用戶行為進行分析, 根據(jù)用戶下載來源對用戶所下載的移動APP進行劃分,將其劃分為High、Normal和Low 三個等級, 得到用戶移動APP的劃分后,對標簽數(shù)據(jù)集進行劃分,將其劃分為High Tags Set、 Normal Tags Set和Low Tags Set三個數(shù)據(jù)集, 去除重復(fù)標簽,根據(jù)每個標簽的頻率對標簽進行加權(quán)量化, 得到標簽的權(quán)重后,建立個性化標簽?zāi)P停? 利用個性化標簽?zāi)P捅闅v所有候選移動APP,計算用戶對候選移動APP的預(yù)測分數(shù), 通過對預(yù)測分數(shù)排序,得到第一推薦列表。4. 根據(jù)權(quán)利要求3所述的一種基于加權(quán)混合的移動APP推薦方法,其特征在于,根據(jù)用 戶下載來源對用戶所下載的移動APP進行劃分,將其劃分為High、Normal和Low三個等級,具 體如下: Hi gh:搜索、猜你喜歡、更新管理,收藏; Normal:軟件、首頁,游戲; Low:后臺下載、來源未知、none 〇5. 根據(jù)權(quán)利要求1所述的一種基于加權(quán)混合的移動APP推薦方法,其特征在于,步驟S3 中得到第二推薦列表的方法包括: 針對處理后的移動APP簡介數(shù)據(jù)和用戶下載列表數(shù)據(jù),建立LDA用戶模型, 首先是對數(shù)據(jù)格式的系列轉(zhuǎn)換,具體包括將數(shù)據(jù)轉(zhuǎn)換成SequenceFile格式,將 SequenceFi Ie格式文件轉(zhuǎn)換為向量表示,且將單詞形式轉(zhuǎn)換成單詞id的形式, 使用CVBO方法對LDA用戶模型訓(xùn)練,設(shè)定迭代次數(shù)和主題個數(shù), LDA用戶模型訓(xùn)練后得到用戶在主題空間下的概率分布, 利用優(yōu)化后的KL散度計算用戶之間的相似度, 利用用戶之間的相似度,選定相應(yīng)的移動APP,給用戶形成第二推薦列表。6.根據(jù)權(quán)利要求1所述的一種基于加權(quán)混合的移動APP推薦方法,其特征在于,所述步 驟S4中加權(quán)混合的方法為:對于第一推薦列表與第二推薦列表,利用并行式混合模型思想 將其進行混合,利用加權(quán)因子來對不同方法生成的推薦結(jié)果進行控制,形成最終推薦列表。
【文檔編號】G06F17/30GK105893609SQ201610263952
【公開日】2016年8月24日
【申請日】2016年4月26日
【發(fā)明人】施佺, 肖瑤, 丁衛(wèi)平, 陳建平, 楊晨晨
【申請人】南通大學(xué)