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