小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

如何動(dòng)手設(shè)計(jì)和構(gòu)建推薦系統(tǒng)?看這里

 fanfl0517 2019-11-14
關(guān)于推薦系統(tǒng),我們之前已經(jīng)在相關(guān)文章中介紹了其概念、原理、目的等。本文中,作者進(jìn)一步拓展,詳細(xì)描述了設(shè)計(jì)和構(gòu)建推薦系統(tǒng)的流程。最后,她還附上了一些推薦系統(tǒng)專用的 Python 庫,以簡化流程。

如何動(dòng)手設(shè)計(jì)和構(gòu)建推薦系統(tǒng)?看這里

選擇太少不好,但選擇太多會(huì)導(dǎo)致癱瘓。

你聽說過著名的果醬實(shí)驗(yàn)嗎?在 2000 年,來自哥倫比亞大學(xué)和斯坦福大學(xué)的心理學(xué)家 Sheena Iyengar 和 Mark Lepper 基于現(xiàn)場實(shí)驗(yàn)提出了一項(xiàng)研究。

平常,消費(fèi)者在當(dāng)?shù)厥称肥袌龅囊患腋邫n雜貨店購物,那里有個(gè)試吃攤位提供了 24 種果醬。某天,同樣的試吃攤位只提供了 6 種果醬。

這項(xiàng)實(shí)驗(yàn)的目的是判斷哪種情況能獲得更高的銷量,預(yù)想的是更多種類的果醬能吸引更多的人,從而帶來更多的生意。然而,研究人員觀察到一種奇怪的現(xiàn)象:盡管擺上 24 種果醬時(shí)攤位吸引了更多人的興趣,但與只呈上 6 種果醬時(shí)相比,銷售額反而更低(大約是后者的十分之一)。

如何動(dòng)手設(shè)計(jì)和構(gòu)建推薦系統(tǒng)?看這里

圖源:The Paradox of Choice

所以為什么會(huì)這樣?其實(shí)大量的選擇看起來確實(shí)很有吸引力,但是過量的選擇有時(shí)會(huì)讓客戶感到困惑和阻礙。因此,即使網(wǎng)上商店可以訪問數(shù)以百萬計(jì)的商品,但如果沒有好的推薦系統(tǒng),這些選擇也會(huì)弊大于利。

在上一篇關(guān)于推薦系統(tǒng)的文章中,我們概述了神奇的推薦系統(tǒng)?,F(xiàn)在讓我們更深入地了解它的架構(gòu)和與推薦系統(tǒng)相關(guān)的各種術(shù)語。

術(shù)語和架構(gòu)

下面是與推薦系統(tǒng)相關(guān)的一些重要術(shù)語。

物品/文檔

這些是系統(tǒng)推薦的實(shí)體,如 Netflix 上的電影,Youtube 上的視頻和 Spotify 上的歌曲。

查詢/上下文

系統(tǒng)利用一些信息來推薦上述物品,這些信息構(gòu)成了查詢信息。查詢信息還可以是以下各項(xiàng)的組合:

  • 用戶信息,可能包括用戶 ID 或用戶先前交互過的物品。
  • 一些額外的上下文信息,如用戶設(shè)備、用戶位置等。

嵌入

嵌入是將分類特征表示為連續(xù)值特征的一種方法。換句話說,嵌入是將高維向量轉(zhuǎn)換到叫做嵌入空間的低維空間。在這種情況下,要推薦的查詢或物品必須映射到嵌入空間。很多推薦系統(tǒng)依賴于學(xué)習(xí)查詢和物品的適當(dāng)嵌入表征。

資源地址:https://developers.google.com/machine-learning/glossary/#embeddings

上面是一個(gè)很好的推薦系統(tǒng)資源,值得一讀。我在上面做了一些總結(jié),但你可以詳細(xì)研究它。它從整體角度描述了推薦系統(tǒng),特別是從谷歌的角度。

架構(gòu)概述

推薦系統(tǒng)常見的架構(gòu)包括以下三個(gè)基本組件:

1. 候選生成

這是推薦系統(tǒng)的第一階段,將用戶過去活動(dòng)中的事件作為輸入,并從一個(gè)大型語料庫中檢索一小部分(數(shù)百)視頻。主要有兩種常見的候選生成方法:

  • 基于內(nèi)容的過濾

基于內(nèi)容的過濾是指根據(jù)物品本身的屬性來推薦物品。系統(tǒng)會(huì)給用戶推薦與其過去喜歡的物品相類似的東西。

  • 協(xié)同過濾

協(xié)同過濾依賴于用戶-物品交互,并且基于相似用戶喜歡類似事物的概念,例如購買某物品的客戶也購買了此物品。

2. 評分

另一個(gè)模型通常以 10 分為滿分進(jìn)一步對候選集進(jìn)行排名和評分,這構(gòu)成了第二階段。以 Youtube 為例,排名網(wǎng)絡(luò)通過豐富的視頻特征和用戶特征獲得期望的目標(biāo)函數(shù),基于此函數(shù)來為每個(gè)視頻評分。按其分?jǐn)?shù)排名,評分最高的視頻將呈現(xiàn)給用戶。

3. 重新排名

這是第三階段,系統(tǒng)會(huì)考慮額外的限制,以確保多樣性,新鮮度和公平性。例如,系統(tǒng)刪除了之前用戶明確不喜歡的內(nèi)容,并且還考慮了網(wǎng)站上的任何新物品。

如何動(dòng)手設(shè)計(jì)和構(gòu)建推薦系統(tǒng)?看這里

典型推薦系統(tǒng)的整體結(jié)構(gòu)

相似度計(jì)算

你如何定義兩個(gè)物品是否相似?事實(shí)證明,基于內(nèi)容的過濾和協(xié)同過濾技術(shù)都應(yīng)用了某種相似性度量。下面來看看兩種度量方法。

假設(shè)有兩部電影-電影 1 和電影 2 屬于兩種不同的類型。我們將兩部電影繪制在二維圖形上,如果電影不屬于某一類別,則賦值為 0;如果電影屬于某一類別,則賦值為 1。

如何動(dòng)手設(shè)計(jì)和構(gòu)建推薦系統(tǒng)?看這里

這里,電影 1(1,1)屬于類別 1 和類別 2,而電影 2(1,0)只屬于類別 2。這些坐標(biāo)可以被看作是向量,這些向量之間的夾角告訴我們它們的相似度。

余弦相似度

計(jì)算兩個(gè)向量之間夾角的余弦,similarity(movie1,movie2) = cos(movie1,movie2) = cos 45,結(jié)果約為 0.7。余弦為 1 時(shí)相似度最高,而余弦為 0 時(shí)表示相似度為 0。

點(diǎn)積

兩個(gè)向量的點(diǎn)積是角的余弦乘以范數(shù)的乘積,即 similarity(movie1,movie2) = ||movie1|| ||movie 2|| cos(movie1,movie2)。

推薦系統(tǒng)流程

典型的推薦系統(tǒng)流程包括以下五個(gè)階段:

如何動(dòng)手設(shè)計(jì)和構(gòu)建推薦系統(tǒng)?看這里

典型的推薦系統(tǒng)流程

假設(shè)我們正在構(gòu)建一個(gè)電影推薦系統(tǒng)。系統(tǒng)沒有關(guān)于用戶或電影的先驗(yàn)知識(shí),只知道用戶通過與電影進(jìn)行交互給出的評分。下面是由電影 ID、用戶 ID 和電影評分組成的數(shù)據(jù)幀。

如何動(dòng)手設(shè)計(jì)和構(gòu)建推薦系統(tǒng)?看這里

電影評分?jǐn)?shù)據(jù)幀

因?yàn)槲覀冎挥凶约捍虺龅脑u分,可能不夠公正,所以我們可以使用協(xié)同過濾來搭建推薦系統(tǒng)。

1. 預(yù)處理

  • 效用矩陣變換

我們要先將電影評分?jǐn)?shù)據(jù)幀轉(zhuǎn)換為用戶-物品矩陣,也稱為效用矩陣(utility matrix)。

如何動(dòng)手設(shè)計(jì)和構(gòu)建推薦系統(tǒng)?看這里

圖源:https://2018./fr/talks/talk-PC-55468/

矩陣的每個(gè)單元格都為用戶對電影的評分。這個(gè)矩陣通??捎靡粋€(gè) scipy 稀疏矩陣來表示,因?yàn)橐恍┨囟ǖ碾娪皼]有評分,所有許多單元格都是空的。如果數(shù)據(jù)稀疏,協(xié)同過濾就沒什么用,所以我們需要計(jì)算矩陣的稀疏度。

如何動(dòng)手設(shè)計(jì)和構(gòu)建推薦系統(tǒng)?看這里

如果稀疏值達(dá)到 0.5 或以上,那么協(xié)同過濾可能就不適合了。這里需要注意的另一個(gè)重點(diǎn)是,空的單元格實(shí)際上代表新用戶和新電影。因此,如果新用戶的比例很高,那么我們可能會(huì)考慮使用其他推薦方法,如基于內(nèi)容的過濾或混合過濾。

  • 歸一化

總是會(huì)有過于積極的用戶(總是打 4 或 5 分)或過于消極的用戶(評分都是 1 或 2)。因此,我們需要對評分進(jìn)行歸一化,以權(quán)衡用戶和物品的偏差。這可以通過均值歸一化來實(shí)現(xiàn)。

如何動(dòng)手設(shè)計(jì)和構(gòu)建推薦系統(tǒng)?看這里

圖源:Normalisation the Ratings

2. 模型訓(xùn)練

數(shù)據(jù)經(jīng)過預(yù)處理后,我們要開始建模構(gòu)建流程。矩陣分解是協(xié)同過濾中常用的一種技術(shù),盡管也有其它方法,如鄰域法(Neighbourhood method)。以下是相關(guān)步驟:

  • 將用戶-物品矩陣分解為兩個(gè)潛在因子矩陣——用戶因子矩陣和物品因子矩陣。

用戶評分是由人生成的電影特征。我們認(rèn)為這些可以直接觀察到的特征很重要。然而,也有一些不可直接觀察到的特定特征,它們在評分預(yù)測中也很重要。這些隱性特征被稱為潛在特征(Latent Features)。

如何動(dòng)手設(shè)計(jì)和構(gòu)建推薦系統(tǒng)?看這里

潛在因子方法的簡單圖示

潛在特征可以被認(rèn)為是用戶和物品之間交互的基礎(chǔ)特性。本質(zhì)上,我們不清楚每個(gè)潛在特征代表什么,但可以假設(shè)一個(gè)特征可能代表一個(gè)用戶喜歡喜劇電影,另一個(gè)潛在特征可能代表該用戶喜歡動(dòng)畫電影等等。

  • 根據(jù)這兩個(gè)潛在矩陣的內(nèi)積(inner product)來預(yù)測缺失評分。

如何動(dòng)手設(shè)計(jì)和構(gòu)建推薦系統(tǒng)?看這里

圖源:https://2018./fr/talks/talk-PC-55468/

這里的潛在因子用 K 表示。這個(gè)重建的矩陣補(bǔ)充了原始用戶-物品矩陣中的空白單元格,因此現(xiàn)在已經(jīng)知道未知的評分了。

但是我們?nèi)绾螌?shí)現(xiàn)上面所示的矩陣分解呢?好吧,事實(shí)證明,有很多方法可以做到這一點(diǎn),方法如下:

  • 交替最小二乘法(ALS)
  • 隨機(jī)梯度下降(SGD)
  • 奇異值分解(SVD)

3.超參優(yōu)化

在調(diào)參之前,我們需要挑選一個(gè)評估指標(biāo)。對于推薦系統(tǒng)來說,普遍的評估指標(biāo)是 Precision@K,它需要查看前 K 個(gè)推薦,并計(jì)算那些推薦中與用戶實(shí)際相關(guān)的推薦所占的比例。

因此,我們的目標(biāo)是找到給出最佳 Precision@K 的參數(shù)或者想要優(yōu)化的任何其它評估指標(biāo)。一旦找到參數(shù),我們就可以重新訓(xùn)練模型,以獲得預(yù)測的評分,并且我們可以使用這些結(jié)果生成推薦。

4. 后處理

然后我們可以對所有預(yù)測的評分進(jìn)行排序,并為用戶獲得前 N 個(gè)推薦。我們還希望排除或過濾掉用戶以前已經(jīng)交互過的物品。就電影而言,沒有必要推薦用戶以前看過或不喜歡的電影。

5. 評估

我們之前已經(jīng)討論過這個(gè)問題,但我們在這里更詳細(xì)地討論一下。評估推薦系統(tǒng)的最佳方法是實(shí)踐。像 A/B 測試這樣的方法是最好的,因?yàn)槲覀兛梢詮恼鎸?shí)的用戶那里得到真實(shí)的反饋。然而,如果這行不通,我們就必須求助于一些離線評估。

在傳統(tǒng)的機(jī)器學(xué)習(xí)中,我們通過分割原始數(shù)據(jù)集來創(chuàng)建一個(gè)訓(xùn)練集和一個(gè)驗(yàn)證集。然而,這對于推薦系統(tǒng)模型不起作用,因?yàn)槿绻覀冊谝粋€(gè)用戶群上訓(xùn)練所有數(shù)據(jù)然后在另一個(gè)用戶群上驗(yàn)證它,模型不會(huì)起作用。

因此,對于推薦系統(tǒng),我們實(shí)際上需要隨機(jī)地屏蔽掉矩陣中一些已知的評分。然后,我們通過機(jī)器學(xué)習(xí)預(yù)測這些屏蔽的評分,然后將預(yù)測評分與實(shí)際評分進(jìn)行比較。

如何動(dòng)手設(shè)計(jì)和構(gòu)建推薦系統(tǒng)?看這里

線下評估推薦系統(tǒng)

早前,我們討論了 Precision 作為評估指標(biāo),這里還有一些其他指標(biāo)可以使用。

如何動(dòng)手設(shè)計(jì)和構(gòu)建推薦系統(tǒng)?看這里

python 庫

有許多專門為了推薦目的而創(chuàng)建的 python 庫可供使用。以下是最受歡迎的幾個(gè):

  • Surprise:python scikit 構(gòu)建和分析推薦的系統(tǒng)。
  • Implicit:針對隱式數(shù)據(jù)集的快速 Python 協(xié)同過濾。
  • LightFM:針對隱式和顯式反饋,通過 Python 實(shí)現(xiàn)的很多流行推薦算法。
  • pyspark.mlibz*.*recommendation:Apache Spark 的機(jī)器學(xué)習(xí) API。

結(jié)論

在本文中,我們討論了推薦在縮小選擇范圍上的重要性。我們還講述了設(shè)計(jì)和構(gòu)建推薦系統(tǒng)的流程。實(shí)際上,Python 可以訪問大量專門的庫來簡化這個(gè)過程。不如嘗試使用一個(gè)來構(gòu)建自己的個(gè)性化推薦引擎吧。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多