偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何從零構(gòu)建實(shí)時(shí)的個(gè)性化推薦系統(tǒng)?

大數(shù)據(jù)
現(xiàn)在網(wǎng)上到處都有推薦。亞馬遜等主流電子商務(wù)網(wǎng)站根據(jù)它們的頁(yè)面屬性以各種形式向用戶推薦產(chǎn)品。Mint.com之類(lèi)的財(cái)務(wù)規(guī)劃網(wǎng)站為用戶提供很多 建議,比如向用戶推薦他們可能想要辦理的信用卡,可以提供更好利率的銀行。谷歌根據(jù)用戶搜索歷史記錄的信息優(yōu)化搜索結(jié)果,找到相關(guān)性更高的結(jié)果。

這些知名公司使用推薦提供情境化的、有相關(guān)性的用戶體驗(yàn),以提高轉(zhuǎn)化率和用戶滿意度。這些建議原來(lái)一般由每天晚上、每周或每月生成新推薦的批處理作業(yè)計(jì)算提供。

然而對(duì)于某些類(lèi)型的推薦,響應(yīng)時(shí)間有必要比批量處理作業(yè)所需的時(shí)間更短,比如為消費(fèi)者提供基于地理位置的推薦。比如電影推薦系統(tǒng),若用戶先前看過(guò)動(dòng) 作片,但現(xiàn)在要找一部喜劇片,批量推薦很可能會(huì)給出更多動(dòng)作片,而不是最相關(guān)的喜劇片。本文將會(huì)介紹如何使用Kiji框架,它是一個(gè)用來(lái)構(gòu)建大數(shù)據(jù)應(yīng)用和 實(shí)時(shí)推薦系統(tǒng)的開(kāi)源框架。

Kiji,以實(shí)體為中心數(shù)據(jù)和360度視角

要構(gòu)建實(shí)時(shí)推薦系統(tǒng),首先需要一個(gè)能存儲(chǔ)360視角客戶的系統(tǒng)。此外,我們需要具備迅速獲取與指定用戶相關(guān)數(shù)據(jù)的能力,以便在用戶與網(wǎng)站和移動(dòng)應(yīng)用交互時(shí)做出推薦。 Kiji是一個(gè)構(gòu)建實(shí)時(shí)應(yīng)用的模塊化開(kāi)源框架,它收集,存儲(chǔ)和分析這類(lèi)數(shù)據(jù)。

一般情況下,一個(gè)360度視圖所需的數(shù)據(jù)可以被稱(chēng)為以實(shí)體為中心的數(shù)據(jù)。一個(gè)實(shí)體可以是任意數(shù)量的東西,比如客戶、用戶、帳戶,或者POS系統(tǒng)或移動(dòng)設(shè)備之類(lèi)更抽象的東西。

一個(gè)以實(shí)體為中心的存儲(chǔ)系統(tǒng)要能在一行數(shù)據(jù)中存儲(chǔ)與某個(gè)特定實(shí)體有關(guān)的一切信息。這對(duì)傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)來(lái)說(shuō)是個(gè)挑戰(zhàn),因?yàn)檫@些信息可能既有狀態(tài)型 數(shù)據(jù)(如姓名,電子郵件地址等)又有事件流(如點(diǎn)擊)。傳統(tǒng)的系統(tǒng)需要把這些數(shù)據(jù)存放在多張表中,處理時(shí)再把這些表聯(lián)接起來(lái),這使得它很難做到實(shí)時(shí)處理。 為了解決這個(gè)問(wèn)題,Kiji用了Apache HBase,它在四個(gè)維度 – 行、列族、列標(biāo)識(shí)和時(shí)間戳-存儲(chǔ)數(shù)據(jù)。借助時(shí)間戳維度和HBase存儲(chǔ)多個(gè)版本Cell的能力,Kiji能夠存儲(chǔ)有更多狀態(tài)的緩慢變化的事件流數(shù)據(jù)。

存儲(chǔ)系統(tǒng)Apache HBase
HBase 是Apache Hadoop使用的一個(gè)鍵-值存儲(chǔ)系統(tǒng),它構(gòu)建在HDFS之上,為大數(shù)據(jù)解決方案提供了必需的可擴(kuò)展性。在HBase上開(kāi)發(fā)應(yīng)用程序面臨的巨大挑戰(zhàn)是,它 要求所有進(jìn)出系統(tǒng)的數(shù)據(jù)都是字節(jié)數(shù)組。為了解決這個(gè)問(wèn)題,Kiji的最終核心組件是Apache Avro,被Kiji用來(lái)存儲(chǔ)易于處理的數(shù)據(jù)類(lèi)型,如標(biāo)準(zhǔn)字符串和整數(shù),以及由用戶定義的更復(fù)雜的數(shù)據(jù)類(lèi)型。 讀寫(xiě)數(shù)據(jù)時(shí),Kiji為應(yīng)用程序做必要的序列化和解序列化處理。

開(kāi)發(fā)用在實(shí)時(shí)中的模型

Kiji為開(kāi)發(fā)模型提供了兩套API,Java和Scala,兩套API都支持批量和實(shí)時(shí)組件。如此劃分的目的是將模型執(zhí)行劃分為不同階段。批量階 段是訓(xùn)練階段,是一個(gè)典型的學(xué)習(xí)過(guò)程,在該過(guò)程中,將使用完整的數(shù)據(jù)集來(lái)訓(xùn)練模型。該階段的輸出可能是線性分類(lèi)器的參數(shù),或者聚類(lèi)算法的群集位置,或在協(xié) 同過(guò)濾系統(tǒng)中相互關(guān)聯(lián)條目的相似性矩陣。實(shí)時(shí)階段被稱(chēng)為評(píng)分階段,取得經(jīng)過(guò)訓(xùn)練的模型,并將它與實(shí)體數(shù)據(jù)相結(jié)合產(chǎn)生衍生信息。關(guān)鍵是這些衍生數(shù)據(jù)被當(dāng)作一 等公民,也就是說(shuō)它可以存回到實(shí)體所在的行中,用于推薦,或作為后續(xù)計(jì)算的輸入。

Java API被稱(chēng)為KijiMR, 而Scala API構(gòu)成了KijiExpress工具的核心。 KijiExpress利用Scalding庫(kù)提供API來(lái)構(gòu)建復(fù)雜的MapReduce工作流,同時(shí)避免了大量Java冗余代碼,以及串聯(lián) MapReduce作業(yè)所必需的任務(wù)調(diào)度和協(xié)作。

個(gè)體與總體

之所以要?jiǎng)澐殖雠坑?xùn)練和實(shí)時(shí)評(píng)分兩個(gè)階段,是因?yàn)镵iji觀察到總體趨勢(shì)變化緩慢,而個(gè)體趨勢(shì)的變化迅速。

比如一個(gè)包含上千萬(wàn)次購(gòu)買(mǎi)記錄的用戶總體數(shù)據(jù)集。多一次購(gòu)買(mǎi)不太可能對(duì)總體趨勢(shì)的好惡造成重大影響。但對(duì)于一個(gè)只有10次購(gòu)買(mǎi)記錄的特定用戶而言, 第11次購(gòu)買(mǎi)將對(duì)系統(tǒng)判斷用戶興趣產(chǎn)生巨大影響。鑒于這種主張,應(yīng)用程序只需在收集到足以影響總體趨勢(shì)的數(shù)據(jù)時(shí)再重新訓(xùn)練它的模型。但對(duì)于特定用戶而言, 我們可以通過(guò)實(shí)時(shí)響應(yīng)用戶的行為來(lái)改善推薦的相關(guān)性。

實(shí)時(shí)給模型評(píng)分

為了做到實(shí)時(shí)評(píng)分,KijiScoring模塊提供了一個(gè)惰性計(jì)算系統(tǒng),應(yīng)用程序可以只為經(jīng)常與其交互的活躍用戶生成***推薦。通過(guò)惰性計(jì) 算,Kiji應(yīng)用程序不必為那些不經(jīng)常光顧或再?zèng)]回來(lái)過(guò)的用戶生成推薦。這還有些額外的好處,Kiji可以在推薦時(shí)考慮像移動(dòng)設(shè)備的位置之類(lèi)的情境信息。

KijiScoring的主要組件叫Freshener。Freshener實(shí)際上是另外兩個(gè)Kiji組件的組 合:ScoringFunctions和FreshnessPolicies。正如前面提到的,一個(gè)模型包括訓(xùn)練和評(píng)分兩個(gè)階段。 ScoringFunction是一段代碼,描述了如何把經(jīng)過(guò)訓(xùn)練的模型和單一實(shí)體的數(shù)據(jù)組合起來(lái)產(chǎn)生一個(gè)分?jǐn)?shù)或建議。FreshnessPolicy定 義數(shù)據(jù)變得陳舊或過(guò)時(shí)的時(shí)間。比如說(shuō),普通的FreshnessPolicy會(huì)指出超過(guò)一個(gè)小時(shí)后數(shù)據(jù)就過(guò)期了。更復(fù)雜的策略可能會(huì)在實(shí)體經(jīng)歷過(guò)一定次數(shù) 的事件后將其標(biāo)記為過(guò)期,比如點(diǎn)擊或產(chǎn)品訪問(wèn)等事件。***,ScoringFunction和FreshnessPolicy被附著在Kiji表中特定的 列上,在必要時(shí)被觸發(fā)來(lái)刷新數(shù)據(jù)。

KijiScoring服務(wù)器
進(jìn) 行實(shí)時(shí)評(píng)分的應(yīng)用程序中包含一個(gè)服務(wù)器層,被稱(chēng)為KijiScoring服務(wù)器,它是負(fù)責(zé)刷新陳舊數(shù)據(jù)的執(zhí)行層。當(dāng)用戶與應(yīng)用程序交互時(shí),請(qǐng)求將被傳遞到 KijiScoring服務(wù)器層,它直接與HBase集群通信。KijiScoring服務(wù)器將會(huì)請(qǐng)求數(shù)據(jù),并且在獲取到數(shù)據(jù)后根據(jù) FreshnessPolicy檢查數(shù)據(jù)是否是***的。如果是***的數(shù)據(jù),它將其直接返回給客戶端。如果是過(guò)時(shí)的數(shù)據(jù), KijiScoring服務(wù)器將為發(fā)出請(qǐng)求的用戶運(yùn)行指定的ScoringFunction。你需要掌握的要點(diǎn)是它只為發(fā)出請(qǐng)求的用戶刷新數(shù)據(jù)或推薦;而 不是執(zhí)行批處理操作,刷新所有用戶的數(shù)據(jù)。這樣Kiji就可以只是做那些有必要做的工作。數(shù)據(jù)刷新完成后會(huì)被返回給用戶,同時(shí)寫(xiě)回HBase以備后用。

一個(gè)典型的Kiji應(yīng)用程序?qū)ㄒ欢〝?shù)量的KijiScoring服務(wù)器,它們是可以向外擴(kuò)展的無(wú)狀態(tài)Java進(jìn)程,并能夠運(yùn)行使用單一實(shí)體的數(shù) 據(jù)作為輸入的ScoringFunction。Kiji應(yīng)用程序通過(guò)KijiScoring服務(wù)器過(guò)濾客戶端請(qǐng)求,由它決定數(shù)據(jù)是否是***的。若有必要, 它會(huì)在把所有推薦傳回客戶端之前運(yùn)行ScoringFunction進(jìn)行刷新,并將重算后的數(shù)據(jù)寫(xiě)到HBase中,以備后用。

將模型部署到生產(chǎn)系統(tǒng)中

能夠輕松迭代其底層的預(yù)測(cè)模型是實(shí)時(shí)推薦系統(tǒng)的一個(gè)重要目標(biāo),避免因?yàn)橐獙⑿碌幕蚋倪M(jìn)過(guò)的模型部署到生產(chǎn)環(huán)境而停掉應(yīng)用程序。Kiji為此提供了 Kiji模型庫(kù),它結(jié)合了描述模型以及用來(lái)訓(xùn)練模型和給模型評(píng)分的代碼如何執(zhí)行的元數(shù)據(jù)。KijiScoring服務(wù)器需要知道什么樣的列訪問(wèn)會(huì)觸發(fā)刷 新,要用的FreshnessPolicy,以及將在用戶數(shù)據(jù)上執(zhí)行的ScoringFunction,以及所有經(jīng)過(guò)訓(xùn)練的模型的位置,或給模型評(píng)分所必 需的外部數(shù)據(jù)。元數(shù)據(jù)也存在一個(gè)Kiji系統(tǒng)表中,只是另一種***層的HBase表。此外,模型庫(kù)在受管的Maven庫(kù)中為已注冊(cè)的模型存儲(chǔ)代碼工件。 KijiScoring服務(wù)器為新登記或未登記模型定期輪詢模型庫(kù),按需加載或卸載代碼。

整合到一起

使用協(xié)同過(guò)濾是一種非常常用的推薦提供方式。協(xié)同過(guò)濾算法通常會(huì)建立一個(gè)大型的相似矩陣,用來(lái)存放一個(gè)產(chǎn)品跟產(chǎn)品目錄中其它產(chǎn)品的關(guān)聯(lián)信息。矩陣中的每一行代表一個(gè)產(chǎn)品Pi,每一列代表另一種產(chǎn)品Pj。(Pi,Pj)中的值就是兩個(gè)產(chǎn)品之間的相似度。

協(xié)同過(guò)濾
在 Kiji中,相似矩陣是通過(guò)批量訓(xùn)練過(guò)程計(jì)算出來(lái)的,然后被存儲(chǔ)在文件或Kiji表中。相似矩陣中的每一行都會(huì)被存放在Kiji產(chǎn)品表中某一行的單獨(dú)列 中。在實(shí)踐中,這一列可能會(huì)變得非常大,因?yàn)槠渲蟹诺氖悄夸浿兴挟a(chǎn)品的清單和相似性。通常情況下,批處理作業(yè)也會(huì)挑出相似度***的條目存到表中。
相似矩陣
相似矩陣在評(píng)分時(shí)是通過(guò)KeyValueStore API訪問(wèn)的,這個(gè)API可以訪問(wèn)外部數(shù)據(jù)。對(duì)于無(wú)法完全放在內(nèi)存中的大型矩陣,可以把它們放在分布式的表中,這樣應(yīng)用程序可以只請(qǐng)求計(jì)算必需的數(shù)據(jù),從而大幅降低對(duì)內(nèi)存的需求。.

既然我們?cè)谠u(píng)分階段之前已經(jīng)做了很多繁重的工作,那么評(píng)分自然成了一種相當(dāng)簡(jiǎn)單的操作。如果我們想基于被查看的條目展示推薦信息,一個(gè)通用的評(píng)分函數(shù)只是從產(chǎn)品表中查找相關(guān)產(chǎn)品,并顯示它們。

將該過(guò)程再推進(jìn)一點(diǎn)并對(duì)結(jié)果做個(gè)性化處理是一個(gè)相對(duì)簡(jiǎn)單的任務(wù)。在個(gè)性化系統(tǒng)中,評(píng)分函數(shù)將會(huì)取得用戶最近對(duì)產(chǎn)品的評(píng)級(jí),并使用 KeyValueStore API查找與用戶評(píng)價(jià)過(guò)的產(chǎn)品相似的產(chǎn)品。結(jié)合評(píng)級(jí)和存儲(chǔ)在產(chǎn)品表中的產(chǎn)品相似度,應(yīng)用程序可以預(yù)測(cè)用戶給相關(guān)條目下的評(píng)級(jí),并將預(yù)測(cè)評(píng)級(jí)***的產(chǎn)品推薦 給用戶。通過(guò)限制所用評(píng)級(jí)和所有已評(píng)級(jí)的相似產(chǎn)品的數(shù)量,系統(tǒng)在用戶與應(yīng)用程序進(jìn)行交互時(shí)可以很輕松地處理上述操作。

推薦過(guò)程

結(jié)論

在本文中,我們可以了解到如何用Kiji開(kāi)發(fā)一個(gè)可以實(shí)時(shí)刷新推薦的推薦系統(tǒng)。利用HBase進(jìn)行低延遲處理,用Avro存儲(chǔ)復(fù)雜的數(shù)據(jù)類(lèi)型,使用MapReduce和Scalding處理數(shù)據(jù),應(yīng)用程序能夠在實(shí)時(shí)情境中給用戶提供相關(guān)推薦。

 

責(zé)任編輯:王雪燕 來(lái)源: 36大數(shù)據(jù)
相關(guān)推薦

2020-06-28 07:00:00

推薦系統(tǒng)智能商務(wù)服務(wù)平臺(tái)

2022-11-01 07:19:45

推薦系統(tǒng)非個(gè)性化

2023-07-26 07:51:30

游戲中心個(gè)性化

2016-04-08 11:39:49

用戶畫(huà)像個(gè)性化推薦標(biāo)簽

2023-08-22 15:37:45

深度學(xué)習(xí)人工智能

2015-11-09 10:12:08

大數(shù)據(jù)個(gè)性化推薦

2019-09-06 08:29:33

Netflix架構(gòu)推薦系統(tǒng)

2016-02-19 10:16:48

母嬰個(gè)推電商

2011-01-20 10:19:21

PowerShell個(gè)性化

2018-04-26 11:30:29

OracleBronto產(chǎn)品推薦

2018-04-27 16:23:27

Oracle Bron個(gè)性化產(chǎn)品

2024-07-02 09:41:11

2022-09-06 17:43:02

??AISummit數(shù)據(jù)運(yùn)營(yíng)

2009-07-13 15:33:24

桌面虛擬化虛擬化IT

2024-10-05 00:00:25

Cursor網(wǎng)站代碼

2012-03-28 14:58:37

手機(jī)推送移動(dòng)應(yīng)用

2018-11-08 09:37:08

微博系統(tǒng)架構(gòu)

2013-06-28 10:08:49

云計(jì)算大數(shù)據(jù)個(gè)性化

2013-06-26 10:25:46

云計(jì)算大數(shù)據(jù)

2021-07-18 22:47:08

大數(shù)據(jù)電商算法
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)