基于隱式反饋協(xié)同過(guò)濾算法的推薦系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種基于隱式反饋協(xié)同過(guò)濾算法的推薦系 統(tǒng)及方法。
【背景技術(shù)】
[0002] 電子商務(wù)領(lǐng)域中,隨著商品越來(lái)越豐富,品類越來(lái)越多,人們從海量的商品里找到 自己感興趣商品的時(shí)間成本越來(lái)越高。為解決這個(gè)問(wèn)題,有效指導(dǎo)用戶在電子商務(wù)網(wǎng)站中 購(gòu)物,電子商務(wù)推薦系統(tǒng)應(yīng)運(yùn)而生。電子商務(wù)推薦系統(tǒng)可以根據(jù)已有的用戶信息,向目標(biāo)用 戶推薦其可能感興趣的產(chǎn)品信息。然而,隨著移動(dòng)互聯(lián)網(wǎng)的到來(lái),以大不同于PC時(shí)代的產(chǎn)品 形態(tài)面向用戶,商品的展現(xiàn)形式及用戶購(gòu)物的習(xí)慣已呈一個(gè)全新的局面,營(yíng)銷(xiāo)如何更精準(zhǔn)、 市場(chǎng)投放如何有更高的回報(bào)、長(zhǎng)尾商品如何有更多的機(jī)會(huì)去展現(xiàn)從而提升轉(zhuǎn)化,這些問(wèn)題 都是商家和電子商務(wù)平臺(tái)目前面臨的重大難題,也正是推薦系統(tǒng)亟待解決的問(wèn)題。發(fā)明人 發(fā)現(xiàn)目前的推薦系統(tǒng)存在以下缺陷:
[0003] 目前,推薦系統(tǒng)常用算法主要包括三類:基于內(nèi)容的推薦算法、協(xié)同過(guò)濾推薦算 法、基于關(guān)聯(lián)規(guī)則的推薦算法。其中被廣泛使用的是協(xié)同過(guò)濾算法,常用的協(xié)同過(guò)濾主要分 為基于用戶的協(xié)同過(guò)濾和基于商品的協(xié)同過(guò)濾?;谟脩舻膮f(xié)同過(guò)濾推薦根據(jù)相似用戶群 的觀點(diǎn)來(lái)產(chǎn)生對(duì)目標(biāo)用戶的推薦,使用統(tǒng)計(jì)方法挑選出與目標(biāo)用戶最相似的若干用戶,稱 為"鄰居",然后根據(jù)這些鄰居對(duì)與目標(biāo)商品相似的商品的評(píng)分來(lái)推測(cè)用戶對(duì)目標(biāo)商品的感 興趣程度;基于產(chǎn)品的協(xié)同過(guò)濾推薦是根據(jù)用戶對(duì)與目標(biāo)商品相似的商品的評(píng)分來(lái)預(yù)測(cè)該 用戶對(duì)目標(biāo)商品的感興趣程度。顯然,無(wú)論是哪種協(xié)同過(guò)濾,數(shù)據(jù)都是基于用戶對(duì)于商品的 評(píng)分,評(píng)分通常是用戶對(duì)商品的瀏覽次數(shù)、點(diǎn)擊次數(shù)、購(gòu)買(mǎi)次數(shù)等轉(zhuǎn)換而來(lái)的顯示數(shù)據(jù),在 這其中,基于用戶的協(xié)同過(guò)濾和基于商品的協(xié)同過(guò)濾都沒(méi)有考慮用戶的噪聲行為,例如用 戶購(gòu)買(mǎi)某件商品可能是送給自己的朋友,或者點(diǎn)擊某個(gè)商品可能只是無(wú)意點(diǎn)中偶然產(chǎn)生的 行為,使得直接使用這種評(píng)分類數(shù)據(jù)會(huì)給用戶的這些噪聲行為更高的權(quán)重,而不能反映用 戶真實(shí)的興趣,導(dǎo)致推薦效果不佳。
[0004] 另外,在集群受限及算法實(shí)現(xiàn)框架的限制下,大部分的推薦系統(tǒng)會(huì)采用單機(jī)運(yùn)算, 不僅效率不高,而且沒(méi)辦法利用更豐富的數(shù)據(jù)去建模,推薦效果也會(huì)大打折扣。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的目的在于提供一種基于Spark隱式反饋協(xié)同過(guò)濾算法的產(chǎn)品推薦系統(tǒng)及 方法,在計(jì)算資源有限的環(huán)境下,大大提升推薦數(shù)據(jù)計(jì)算效率和推薦效果。
[0006] 為解決上述問(wèn)題,本發(fā)明提出一種基于隱式反饋協(xié)同過(guò)濾算法的推薦方法,包括:
[0007] 步驟1),根據(jù)一電子商務(wù)網(wǎng)站上的歷史用戶訪問(wèn)信息,抽取一段時(shí)間內(nèi)的用戶跳 轉(zhuǎn)行為記錄,形成訓(xùn)練數(shù)據(jù)集;
[0008] 步驟2),根據(jù)所述訓(xùn)練數(shù)據(jù)集調(diào)整隱式反饋協(xié)同過(guò)濾算法基本模型的參數(shù),生成 預(yù)測(cè)模型;
[0009] 步驟3),根據(jù)該電子商務(wù)網(wǎng)站的集群的計(jì)算能力把用戶分組,整合用戶與被推薦 的產(chǎn)品,生成多個(gè)預(yù)測(cè)數(shù)據(jù)集,并利用所述預(yù)測(cè)模型進(jìn)行并行運(yùn)算,預(yù)測(cè)出每組用戶的產(chǎn)品 偏好,形成推薦結(jié)果;
[0010] 步驟4),將所述推薦結(jié)果索引入所述電子商務(wù)網(wǎng)站的搜索引擎中。
[0011] 進(jìn)一步的,所述電子商務(wù)網(wǎng)站為能夠鏈接產(chǎn)品直屬的電子商務(wù)網(wǎng)站的第三方電子 商務(wù)網(wǎng)站。
[0012]進(jìn)一步的,所述步驟1)包括:
[0013] 步驟1.1)先通過(guò)所述電子商務(wù)網(wǎng)站的生產(chǎn)服務(wù)器的日志采集系統(tǒng)采集本地日志, 再?gòu)乃霰镜厝罩局蝎@取用戶跳轉(zhuǎn)行為數(shù)據(jù)后,存入所述生產(chǎn)服務(wù)器的消息系統(tǒng),再由所 述消息系統(tǒng)輸出存放于所述集群中;
[0014] 步驟1.2)建立用戶與跳轉(zhuǎn)行為的數(shù)據(jù)模型表,按照一預(yù)定義規(guī)則對(duì)所述數(shù)據(jù)模型 表進(jìn)行分區(qū);
[0015] 步驟1.3)通過(guò)分區(qū)的數(shù)據(jù)模型表,并行抽取用戶一段時(shí)間內(nèi)的跳轉(zhuǎn)記錄,匯總生 成訓(xùn)練數(shù)據(jù)集。
[0016] 進(jìn)一步的,所述日志采集系統(tǒng)為flume系統(tǒng),所述消息系統(tǒng)為Kafka系統(tǒng),所述集群 為Spark集群,所述數(shù)據(jù)模型表為hive模型表。
[0017]進(jìn)一步的,所述步驟2)包括:
[0018] 步驟2.1),設(shè)置好用戶對(duì)產(chǎn)品的評(píng)分維度,建立評(píng)分矩陣,形成隱式反饋協(xié)同過(guò)濾 算法基本模型;
[0019] 步驟2.2),根據(jù)所述集群的計(jì)算能力,設(shè)置隱式反饋協(xié)同過(guò)濾算法的參數(shù)值以及 目標(biāo)跳轉(zhuǎn)率,并采用所述訓(xùn)練數(shù)據(jù)集訓(xùn)練所述基本模型;
[0020] 步驟2.3),根據(jù)每次訓(xùn)練結(jié)果反復(fù)調(diào)整各所述參數(shù)值,使得產(chǎn)品跳轉(zhuǎn)率達(dá)到所述 目標(biāo)跳轉(zhuǎn)率,以獲得所述預(yù)測(cè)模型。
[0021] 進(jìn)一步的,所述步驟3)包括:
[0022] 步驟3.1),將所述電子商務(wù)網(wǎng)站的用戶拆分成多組,并將每組用戶按一次計(jì)算Μ個(gè) 用戶的方式進(jìn)行用戶集合與被推薦產(chǎn)品集合的笛卡爾積運(yùn)算,生成預(yù)測(cè)數(shù)據(jù)集;
[0023] 步驟3.2),所述集群基于所述預(yù)測(cè)模型對(duì)所述預(yù)測(cè)數(shù)據(jù)集進(jìn)行并行運(yùn)算,每次并 行運(yùn)算Ν個(gè)預(yù)測(cè)任務(wù),能獲得Μ*Ν個(gè)用戶的推薦結(jié)果。
[0024]進(jìn)一步的,所述步驟4)包括:
[0025] 步驟4.1),所述集群的每個(gè)分區(qū)各自計(jì)算,且每個(gè)分區(qū)分別建立與所述搜索引擎 的鏈接,并通過(guò)所述搜索引擎的用戶接口,實(shí)時(shí)將運(yùn)算所得的推薦結(jié)果索引入所述搜索引 擎中;
[0026] 步驟4.2)所述搜索引擎預(yù)設(shè)有用于提交推薦結(jié)果的索引文檔數(shù)量及提交時(shí)間,以 自動(dòng)提交每個(gè)推薦結(jié)果的索引。
[0027] 進(jìn)一步的,所述搜索引擎為Solr搜索引擎。
[0028] 本發(fā)明還提供一種基于隱式反饋協(xié)同過(guò)濾算法的推薦系統(tǒng),包括:
[0029] 數(shù)據(jù)采集模塊,用于根據(jù)一電子商務(wù)網(wǎng)站上的歷史用戶訪問(wèn)信息,抽取一段時(shí)間 內(nèi)的用戶跳轉(zhuǎn)行為記錄,形成訓(xùn)練數(shù)據(jù)集;
[0030] 模型訓(xùn)練模塊,用于根據(jù)所述訓(xùn)練數(shù)據(jù)集調(diào)整隱式反饋協(xié)同過(guò)濾算法基本模型的 參數(shù),生成預(yù)測(cè)模型;
[0031] 并行預(yù)測(cè)模塊,用于根據(jù)該電子商務(wù)網(wǎng)站的集群的計(jì)算能力把用戶分組,整合用 戶與被推薦的產(chǎn)品,生成多個(gè)預(yù)測(cè)數(shù)據(jù)集,并利用所述預(yù)測(cè)模型進(jìn)行并行運(yùn)算,預(yù)測(cè)每組用 戶的產(chǎn)品偏好,形成推薦結(jié)果;
[0032] 推薦顯示模塊,用于將所述推薦結(jié)果索引入所述電子商務(wù)網(wǎng)站的搜索引擎中。
[0033] 進(jìn)一步的,所述數(shù)據(jù)采集模塊通過(guò)所述電子商務(wù)網(wǎng)站的生產(chǎn)服務(wù)器的日志采集系 統(tǒng)采集本地日志,以獲取用戶跳轉(zhuǎn)行為數(shù)據(jù),并用于建立用戶與跳轉(zhuǎn)行為的數(shù)據(jù)模型表,所 述數(shù)據(jù)采集模塊按照一預(yù)定義規(guī)則對(duì)所述數(shù)據(jù)模型表進(jìn)行分區(qū),并通過(guò)分區(qū)的數(shù)據(jù)模型表 來(lái)并行抽取用戶一段時(shí)間內(nèi)的跳轉(zhuǎn)記錄,匯總生成訓(xùn)練數(shù)據(jù)集,并通過(guò)所述生產(chǎn)服務(wù)器的 消息系統(tǒng)將所述訓(xùn)練數(shù)據(jù)集存入所述集群中;
[0034] 所述模型訓(xùn)練模塊包括:基本模型設(shè)置單元,用于設(shè)置好用戶對(duì)產(chǎn)品的評(píng)分維度, 建立評(píng)分矩陣,形成基本模型;模型訓(xùn)練單元,用于根據(jù)所述集群的計(jì)算能力,設(shè)置隱式反 饋協(xié)同過(guò)濾算法的參數(shù)值以及目標(biāo)跳轉(zhuǎn)率,并采用所述訓(xùn)練數(shù)據(jù)集訓(xùn)練所述基本模型;預(yù) 測(cè)模型生成單元,用于根據(jù)每次訓(xùn)練結(jié)果反復(fù)調(diào)整所述參數(shù)值,使得產(chǎn)品跳轉(zhuǎn)率達(dá)到所述 目標(biāo)跳轉(zhuǎn)率,得到所述預(yù)測(cè)模型;
[0035] 所述并行預(yù)測(cè)模塊包括:分組單元,用于將所述電子商務(wù)網(wǎng)站的用戶拆分成多組, 并根據(jù)所述集群的并行運(yùn)算能力進(jìn)行用戶集合和被推薦產(chǎn)品集合的笛卡爾積運(yùn)算,生成所 述的預(yù)測(cè)數(shù)據(jù)集;預(yù)測(cè)單元,用于基于所述預(yù)測(cè)模型,并根據(jù)所述集群的并行運(yùn)算能力對(duì)多 個(gè)預(yù)測(cè)數(shù)據(jù)集進(jìn)行并行運(yùn)算,以獲得推薦結(jié)果。
[0036] 與現(xiàn)有技術(shù)相比,本發(fā)明提供的基于隱式反饋協(xié)同過(guò)濾算法的推薦系統(tǒng)及方法, 將用戶的跳轉(zhuǎn)行為作為產(chǎn)品評(píng)分的一種參考,合理調(diào)整訓(xùn)練模型參數(shù),大大提升了推薦效 果;同時(shí)利用用戶分組實(shí)現(xiàn)集群的并行運(yùn)算,在計(jì)算資源有限的環(huán)境下,大大提升了計(jì)算效 率。經(jīng)發(fā)明人檢驗(yàn),8000萬(wàn)用戶的離線推薦運(yùn)算以小型集群的計(jì)算能力可以在24小時(shí)內(nèi)計(jì) 算完成,且實(shí)現(xiàn)了產(chǎn)品跳轉(zhuǎn)率達(dá)到60%以上的實(shí)際推薦效果。
【附圖說(shuō)明】
[0037] 圖1是本發(fā)明具體實(shí)施例的基于隱式反饋協(xié)同過(guò)濾算法的推薦方法流程圖;
[0038] 圖2是圖1所示的推薦方法中的并行化運(yùn)算流程圖;