成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

使用Elasticsearch實(shí)現(xiàn)推薦系統(tǒng)

BDEEFE / 642人閱讀

摘要:從這個(gè)結(jié)果來看,洛奇非常適合推薦給喜歡終結(jié)者的用戶的。你需要能夠深入了解所使用的評(píng)分方法才能建立起真正優(yōu)秀的推薦系統(tǒng)。使用,阿甘正傳的評(píng)分是,幾乎為。

聚合:找出喜歡這部電影的人們同時(shí)還喜歡哪些電影

? ? ? ?假設(shè)你運(yùn)營了一個(gè)電影網(wǎng)站,你有很多用戶,并且想知道如何推薦給這些用戶他們喜歡的電影。一個(gè)辦法是,把每個(gè)用戶作為一個(gè)文檔創(chuàng)建索引,如下所示(movies_liked被設(shè)置為被分詞的字段,并且用于搜索):

PUT recs/user/1
{    "movies_liked": ["Forrest Gump", "Terminator", "Rambo", "Rocky", "Good Will Hunting"]}
PUT recs/user/2
{    "movies_liked": ["Forrest Gump", "Terminator", "Rocky IV", "Rocky", "Rocky II", "Predator"]}
PUT recs/user/3
{    "movies_liked": ["Forrest Gump", "The Thin Red Line", "Good Will Hunting", "Rocky II", "Predator", "Batman"]}
PUT recs/user/4
{    "movies_liked": ["Forrest Gump", "Something about Mary", "Sixteen Candles"]}

? ? ? ?我們想給喜歡《終結(jié)者》的用戶進(jìn)行推薦。也就說,我們需要知道喜歡《終結(jié)者》這部電影的用戶還喜歡哪些電影。這是非常常見的“購物籃分析” - 推薦系統(tǒng)的基礎(chǔ)組件?!百徫锘@分析”來源于分析用戶的購物籃并且統(tǒng)計(jì)出用戶感興趣物品間的關(guān)系。研究案例表明,通常在雜貨鋪購買尿片的人同時(shí)會(huì)選擇購買啤酒。深入洞察此類行為將有助于提升用戶和商家的價(jià)值。本文我們聚焦在《終結(jié)者》并找出對(duì)這部電影可能感興趣的潛在用戶。

? ? ? ?利用那些存儲(chǔ)了用戶觀影歷史的ElasticSearch文檔,我們?nèi)绾握页隹催^《終結(jié)者》的觀眾喜歡什么呢?立刻能想到的辦法是進(jìn)行“項(xiàng)”的聚合。項(xiàng)聚合可以得出當(dāng)前搜索結(jié)果中特定字段所包含的項(xiàng)的數(shù)量。在某些應(yīng)用中項(xiàng)可能會(huì)是電影的ID,但是在這個(gè)案例中使用“標(biāo)題”。我們將搜索“終結(jié)者”關(guān)鍵詞并聚合結(jié)果中的“movies_liked”字段從而得出觀看《終結(jié)者》的用戶同時(shí)喜歡其他電影的名稱以及數(shù)量。最終結(jié)果展示如下:

"movies_like_terminator": {
    "doc_count_error_upper_bound": 0,
    "sum_other_doc_count": 0,
    "buckets": [{
        "key": "Forrest Gump",
        "doc_count": 2
    }, {
        "key": "Rocky",
        "doc_count": 2
    }, {
        "key": "Terminator",
        "doc_count": 2
    }, {
        "key": "Good Will Hunting",
        "doc_count": 1
    }
}

? ? ? ?通過上述的用戶記錄,你可以了解到喜歡《終結(jié)者》的用戶中有兩個(gè)人同時(shí)喜歡《阿甘正傳》,兩個(gè)人同時(shí)喜歡《洛奇》。此外,如果我們對(duì)你最喜歡的電影重復(fù)這樣的操作(搜索《終結(jié)者》或者《鐵血戰(zhàn)士》或者《情到深處》等你喜歡的電影),然后你會(huì)得到一些協(xié)同過濾:發(fā)起一個(gè)搜索,找到那些和你喜歡同樣電影的用戶。然后你可以比較下還未看過的電影和你喜歡的電影同時(shí)出現(xiàn)的次數(shù)。

? ? ? ?但是這種簡(jiǎn)單計(jì)數(shù)的方法是否足夠好呢?我們?cè)谄渌恼轮羞M(jìn)行了討論,認(rèn)為用簡(jiǎn)單統(tǒng)計(jì)同時(shí)出現(xiàn)的次數(shù)的方法實(shí)現(xiàn)推薦系統(tǒng)是一種很差的方法。簡(jiǎn)單計(jì)數(shù)法優(yōu)先考慮的是全局的普遍關(guān)系,而不是有意義的關(guān)系。例如在這個(gè)例子中,每個(gè)人都喜歡《阿甘正傳》。如果我們用這種方法做推薦,那么每個(gè)用戶都被推薦了《阿甘正傳》。我們把這種問題稱為“奧普拉讀書俱樂部”問題,這些關(guān)系普遍存在但不是特別有用。

? ? ? ?這里更有趣的是關(guān)于電影《終結(jié)者》的相關(guān)計(jì)數(shù)結(jié)果。以《洛奇》為例。每個(gè)喜歡《洛奇》的用戶都喜歡《終結(jié)者》,竟然有100%的重合率!換句話說,《洛奇》在有條件時(shí)(喜歡看《終結(jié)者》)出現(xiàn)的的比率為100%,在全局中(無條件時(shí))出現(xiàn)的比率僅為50%(有2人喜歡《洛奇》,共有4人)。從這個(gè)結(jié)果來看,《洛奇》非常適合推薦給喜歡《終結(jié)者》的用戶的。

使用顯著項(xiàng)度量人和物之間的關(guān)系

? ? ? ?要解決簡(jiǎn)單計(jì)數(shù)法帶來的問題,利用顯著項(xiàng)來聚合是一個(gè)更好的方法。這種聚合方法度量了我們所需要的這種在統(tǒng)計(jì)學(xué)意義上更重要、更有意義的推薦的關(guān)系。它的作用不是計(jì)算簡(jiǎn)單的項(xiàng)的計(jì)數(shù),而是計(jì)算項(xiàng)在當(dāng)前結(jié)果中相比于在背景語料庫中的統(tǒng)計(jì)顯著性。在《購物籃筐分析》一文中,我們討論了正反兩種評(píng)價(jià)顯著性的不同方法。現(xiàn)在,我們來探討一下顯著項(xiàng)能干什么。
在我們深入之前,我們先把這種方法拿出來看看:

POST recs/user/_search {
    "query": {
        "match": {
            "movies_liked": "Terminator"
        }
    },
    "aggregations": {
        "movies_like_terminator": {
            "significant_terms": {
                "field": "movies_liked",
                "min_doc_count": 1
            }
        }
    }
}

? ? ? ?上面(與簡(jiǎn)單計(jì)數(shù)法)唯一的的不同是我們用到了significant_term運(yùn)算。為了讓這個(gè)操作在我們這個(gè)極小規(guī)模的數(shù)據(jù)集上能獲得較好的結(jié)果,我們將min_doc_count設(shè)為1(項(xiàng)關(guān)聯(lián)的文檔數(shù)大于等于1)。
事實(shí)上,這一查詢解決了以上的問題,我們可以發(fā)現(xiàn)《阿甘正傳》在推薦中沒有出現(xiàn),得到的推薦顯得更合適:

"buckets": [{
    "key": "Rocky",
    "doc_count": 2,
    "score": 1,
    "bg_count": 2
}, {
    "key": "Terminator",
    "doc_count": 2,
    "score": 1,
    "bg_count": 2
}, {
    "key": "Rambo",
    "doc_count": 1,
    "score": 0.5,
    "bg_count": 1
 }, {
    "key": "Rocky IV",
    "doc_count": 1,
    "score": 0.5,
    "bg_count": 1
 }]
深入研究JLH顯著評(píng)分

? ? ? ?到此為止了嗎?我們還需繼續(xù)研究:需要理解評(píng)分方法在你的數(shù)據(jù)上是如何工作的。你需要能夠深入了解所使用的評(píng)分方法才能建立起真正優(yōu)秀的推薦系統(tǒng)。如何根據(jù)顯著項(xiàng)得到上面的排名?正如我們?cè)凇顿徫锘@分析》一文中所見,不同形式的計(jì)分方法有它們自己的優(yōu)缺點(diǎn)。選擇錯(cuò)誤的方法可能在推薦的質(zhì)量方面造成嚴(yán)重的后果。

? ? ? ?我不打算剖析文中出現(xiàn)的所有顯著項(xiàng)(有很多項(xiàng)),但我們還是要深入了解這種方法來教自己如何思考這些問題。這種方法被稱為JLH。評(píng)分公式是:

(foregroundPercentage / backgroundPercentage) * (foregroundPercentage - backgroundPercentage)

? ? ? ?“Foreground”的意思是該項(xiàng)在當(dāng)前搜索結(jié)果中出現(xiàn)的百分比(檢索結(jié)果中用戶喜歡我們的電影名稱百分比)。 例如,《第一滴血》的“Foreground”在《終結(jié)者》搜索結(jié)果中占比是100%。 “Background” 是整個(gè)集合的全局百分比。例如,《第一滴血》的是50%。

JLH對(duì)普通物品的評(píng)分

? ? ? ?你將如何評(píng)價(jià)某一個(gè)評(píng)分體系是否適合你的用例?讓我們想象幾個(gè)場(chǎng)景,考慮不同場(chǎng)景下的得分。然后,可以批判地思考他們?cè)诂F(xiàn)實(shí)的數(shù)據(jù)中如何展示。我們繼續(xù)使用電影為例,這些數(shù)據(jù)都是假設(shè)的:分析JLH評(píng)分所用的并不是Netflix或Movielens網(wǎng)站上的真正數(shù)據(jù)。

? ? ? ?第一個(gè)場(chǎng)景,我們已經(jīng)討論過的是每個(gè)人都喜歡的電影。在我們的數(shù)據(jù)集中,這是《阿甘正傳》。99.999%的用戶喜歡《阿甘正傳》。

? ? ? ?事實(shí)上,這種非常受歡迎的電影對(duì)JLH評(píng)分不太好。使用(Foreground / Background),《阿甘正傳》的評(píng)分是100 / 99.999,幾乎為1。同樣,(Foreground - Background)=(100 - 99.999),幾乎為0。 正如你將看到的,這是一個(gè)相當(dāng)?shù)偷腏LH評(píng)分。

? ? ? ?這樣公平嗎?我認(rèn)為,在大多數(shù)領(lǐng)域里,一個(gè)物品被接近100%的用戶喜歡是少見的。更有可能的是,很少有人對(duì)電影具有可衡量的偏好。 例如,或許每個(gè)人都喜歡《阿甘正傳》,但大多數(shù)的“喜歡”是評(píng)級(jí)或點(diǎn)擊(并不實(shí)際觀看),不是100%的用戶與《阿甘正傳》有交集。 當(dāng)然,我喜歡《阿甘正傳》,但上次我看到它大概是10年前。 這是一個(gè)被動(dòng)的偏好。 當(dāng)我看到它出現(xiàn)在Netflix上時(shí),我不太可能會(huì)興奮。

? ? ? ?現(xiàn)實(shí)中更常見,最流行的電影或節(jié)目是有20%的用戶喜歡的東西。那么JLH的得分如何呢?比如《心靈捕手》,如果這組用戶中的100%都喜歡,那么最高得分將是(100/20)(100-20)= 5 80 = 400。比《阿甘正傳》要高很多。

平均聲望的物品

? ? ? ?大多數(shù)影片會(huì)顯示喜歡此影片用戶的百分比。讓我們來看一個(gè)平均電影:《洛奇IV》,有4%的用戶喜歡。

? ? ? ?《洛奇IV》使用JLH評(píng)分公平嗎?如果“Foreground”的用戶中100%喜歡《洛奇IV》,我們得到(100/4)(100 - 4)或25 96 = 2400。明顯超過被推薦的《心靈捕手》!

更多“正?!逼?/b>

? ? ? ?《心靈捕手》非常受歡迎得分400,《洛奇IV》受歡迎程度一般得分2400。似乎JLH評(píng)分方式對(duì)于推薦系統(tǒng)來說有些糟糕?讓我們考慮這些“最佳情況”場(chǎng)景的可能性。 100%的用戶喜歡一個(gè)電影的同時(shí)又喜歡另一個(gè)電影合理嗎?喜歡電影的"Foreground"概率偏離“Background”的可能性有多大?

? ? ? ?這很大程度上取決于數(shù)據(jù)中物品偏好的相對(duì)分布。例如,人們可以說,如果你喜歡《洛奇III》,你很可能會(huì)喜歡《洛奇IV》,也許接近100%重疊。

? ? ? ?如果你的數(shù)據(jù)集“Background”和“Foreground”的差距不大,也許這不是一個(gè)大事。 例如,讓我們考慮“Foreground”的值基于以“Background”百分比為中心的正態(tài)分布的情況。讓我們考慮“Background”和“Foreground”之間的恒定變化是大約75%的變化(《洛奇IV》大概是7 +/- 3%; 《心靈捕手》大概20 +/- 15%)。 在這些也許更現(xiàn)實(shí)的情況下,我們將期望得分:

? ? ? ?《洛奇IV》最佳得分:(7/4)*(7-4)= 5.25

? ? ? ?《心靈捕手》最佳分?jǐn)?shù):(35/20)*(35 - 20)= 26.25

? ? ? ?第一項(xiàng)(除法)中兩部電影評(píng)分接近。另一項(xiàng)(減法)拉開了兩部電影的差距。

? ? ? ?為什么會(huì)這樣?作為JLH的創(chuàng)建者,Mark Harwood指出,這正是JLH設(shè)計(jì)的目的。JLH反映了許多推薦系統(tǒng)數(shù)據(jù)集中看到的模式:受歡迎的物品受歡迎程度不會(huì)發(fā)生太大變化。如果幾乎每個(gè)人都買雞蛋,那么分析煎蛋商品對(duì)雞蛋銷量影響就會(huì)非常小,即便如此,我們?nèi)匀幌胍@些煎蛋廚師一些建議:即使只能輕微增加雞蛋的銷量也很重要。


作者信息
本文系LeapCloud團(tuán)隊(duì)_云服務(wù)研發(fā)成員:秦鵬【原創(chuàng)】
現(xiàn)任LeapCloud服務(wù)與架構(gòu)部負(fù)責(zé)人,負(fù)責(zé)公司云平臺(tái)、云應(yīng)用的后端研發(fā)和維護(hù)工作。有多年分布式、高并發(fā)場(chǎng)景的實(shí)戰(zhàn)經(jīng)驗(yàn);目前在分布式存儲(chǔ)、緩存、中間件、容器技術(shù)、微服務(wù)、公有云等領(lǐng)域均有涉獵。畢業(yè)于上海交通大學(xué),曾供職于SAP,后投身MaxLeap致力于為開發(fā)者提供快穩(wěn)定、可靠的云服務(wù)。
微信公眾號(hào):MaxLeap_yidongyanfa

相關(guān)文章
飛馳在Mesos的渦輪引擎上

作者往期佳作
微服務(wù)實(shí)戰(zhàn):從架構(gòu)到發(fā)布(一)
微服務(wù)實(shí)戰(zhàn):從架構(gòu)到發(fā)布(二)
從應(yīng)用到平臺(tái) – 云服務(wù)架構(gòu)的演進(jìn)過程
基于PaaS和SaaS研發(fā)的商業(yè)云平臺(tái)實(shí)戰(zhàn)

想要了解APP制作、開發(fā)?歡迎加入技術(shù)交流QQ群:480843919

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/25166.html

相關(guān)文章

  • 推薦十款java開源中文分詞組件

    摘要:最初,它是以開源項(xiàng)目為應(yīng)用主體的,結(jié)合詞典分詞和文法分析算法的中文分詞組件。填補(bǔ)了國內(nèi)中文分詞方面開源組件的空白,致力于此并希翼成為互聯(lián)網(wǎng)網(wǎng)站首選的中文分詞開源組件。中文分詞追求分詞的高效率和用戶良好體驗(yàn)。 1:Elasticsearch的開源中文分詞器 IK Analysis(Star:2471) IK中文分詞器在Elasticsearch上的使用。原生IK中文分詞是從文件系統(tǒng)中讀取...

    masturbator 評(píng)論0 收藏0
  • 后端好書閱讀與推薦(續(xù)六)

    摘要:可以通過大數(shù)據(jù)生態(tài)的一系列工具生態(tài)來解決大數(shù)據(jù)問題數(shù)據(jù)分片主要有兩種方式哈希和范圍。哈希的問題是范圍查詢支持不佳,范圍的問題是可能冷熱數(shù)據(jù)不均。 后端好書閱讀與推薦系列文章:后端好書閱讀與推薦后端好書閱讀與推薦(續(xù))后端好書閱讀與推薦(續(xù)二)后端好書閱讀與推薦(續(xù)三)后端好書閱讀與推薦(續(xù)四)后端好書閱讀與推薦(續(xù)五)后端好書閱讀與推薦(續(xù)六) Elasticsearch權(quán)威指南 El...

    shleyZ 評(píng)論0 收藏0
  • 后端好書閱讀與推薦(續(xù)六)

    摘要:可以通過大數(shù)據(jù)生態(tài)的一系列工具生態(tài)來解決大數(shù)據(jù)問題數(shù)據(jù)分片主要有兩種方式哈希和范圍。哈希的問題是范圍查詢支持不佳,范圍的問題是可能冷熱數(shù)據(jù)不均。 后端好書閱讀與推薦系列文章:后端好書閱讀與推薦后端好書閱讀與推薦(續(xù))后端好書閱讀與推薦(續(xù)二)后端好書閱讀與推薦(續(xù)三)后端好書閱讀與推薦(續(xù)四)后端好書閱讀與推薦(續(xù)五)后端好書閱讀與推薦(續(xù)六) Elasticsearch權(quán)威指南 El...

    z2xy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<