久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    如何動手設計和構建推薦系統?看這里

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

    如何動手設計和構建推薦系統?看這里

    選擇太少不好,但選擇太多會導致癱瘓。

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

    平常,消費者在當地食品市場的一家高檔雜貨店購物,那里有個試吃攤位提供了 24 種果醬。某天,同樣的試吃攤位只提供了 6 種果醬。

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

    如何動手設計和構建推薦系統?看這里

    圖源:The Paradox of Choice

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

    在上一篇關于推薦系統的文章中,我們概述了神奇的推薦系統。現在讓我們更深入地了解它的架構和與推薦系統相關的各種術語。

    術語和架構

    下面是與推薦系統相關的一些重要術語。

    物品/文檔

    這些是系統推薦的實體,如 Netflix 上的電影,Youtube 上的視頻和 Spotify 上的歌曲。

    查詢/上下文

    系統利用一些信息來推薦上述物品,這些信息構成了查詢信息。查詢信息還可以是以下各項的組合:

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

    嵌入

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

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

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

    架構概述

    推薦系統常見的架構包括以下三個基本組件:

    1. 候選生成

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

    • 基于內容的過濾

    基于內容的過濾是指根據物品本身的屬性來推薦物品。系統會給用戶推薦與其過去喜歡的物品相類似的東西。

    • 協同過濾

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

    2. 評分

    另一個模型通常以 10 分為滿分進一步對候選集進行排名和評分,這構成了第二階段。以 Youtube 為例,排名網絡通過豐富的視頻特征和用戶特征獲得期望的目標函數,基于此函數來為每個視頻評分。按其分數排名,評分最高的視頻將呈現給用戶。

    3. 重新排名

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

    如何動手設計和構建推薦系統?看這里

    典型推薦系統的整體結構

    相似度計算

    你如何定義兩個物品是否相似?事實證明,基于內容的過濾和協同過濾技術都應用了某種相似性度量。下面來看看兩種度量方法。

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

    如何動手設計和構建推薦系統?看這里

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

    余弦相似度

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

    點積

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

    推薦系統流程

    典型的推薦系統流程包括以下五個階段:

    如何動手設計和構建推薦系統?看這里

    典型的推薦系統流程

    假設我們正在構建一個電影推薦系統。系統沒有關于用戶或電影的先驗知識,只知道用戶通過與電影進行交互給出的評分。下面是由電影 ID、用戶 ID 和電影評分組成的數據幀。

    如何動手設計和構建推薦系統?看這里

    電影評分數據幀

    因為我們只有自己打出的評分,可能不夠公正,所以我們可以使用協同過濾來搭建推薦系統。

    1. 預處理

    • 效用矩陣變換

    我們要先將電影評分數據幀轉換為用戶-物品矩陣,也稱為效用矩陣(utility matrix)。

    如何動手設計和構建推薦系統?看這里

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

    矩陣的每個單元格都為用戶對電影的評分。這個矩陣通常可用一個 scipy 稀疏矩陣來表示,因為一些特定的電影沒有評分,所有許多單元格都是空的。如果數據稀疏,協同過濾就沒什么用,所以我們需要計算矩陣的稀疏度。

    如何動手設計和構建推薦系統?看這里

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

    • 歸一化

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

    如何動手設計和構建推薦系統?看這里

    圖源:Normalisation the Ratings

    2. 模型訓練

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

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

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

    如何動手設計和構建推薦系統?看這里

    潛在因子方法的簡單圖示

    潛在特征可以被認為是用戶和物品之間交互的基礎特性。本質上,我們不清楚每個潛在特征代表什么,但可以假設一個特征可能代表一個用戶喜歡喜劇電影,另一個潛在特征可能代表該用戶喜歡動畫電影等等。

    • 根據這兩個潛在矩陣的內積(inner product)來預測缺失評分。

    如何動手設計和構建推薦系統?看這里

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

    這里的潛在因子用 K 表示。這個重建的矩陣補充了原始用戶-物品矩陣中的空白單元格,因此現在已經知道未知的評分了。

    但是我們如何實現上面所示的矩陣分解呢?好吧,事實證明,有很多方法可以做到這一點,方法如下:

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

    3.超參優化

    在調參之前,我們需要挑選一個評估指標。對于推薦系統來說,普遍的評估指標是 Precision@K,它需要查看前 K 個推薦,并計算那些推薦中與用戶實際相關的推薦所占的比例。

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

    4. 后處理

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

    5. 評估

    我們之前已經討論過這個問題,但我們在這里更詳細地討論一下。評估推薦系統的最佳方法是實踐。像 A/B 測試這樣的方法是最好的,因為我們可以從真實的用戶那里得到真實的反饋。然而,如果這行不通,我們就必須求助于一些離線評估。

    在傳統的機器學習中,我們通過分割原始數據集來創建一個訓練集和一個驗證集。然而,這對于推薦系統模型不起作用,因為如果我們在一個用戶群上訓練所有數據然后在另一個用戶群上驗證它,模型不會起作用。

    因此,對于推薦系統,我們實際上需要隨機地屏蔽掉矩陣中一些已知的評分。然后,我們通過機器學習預測這些屏蔽的評分,然后將預測評分與實際評分進行比較。

    如何動手設計和構建推薦系統?看這里

    線下評估推薦系統

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

    如何動手設計和構建推薦系統?看這里

    python 庫

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

    • Surprise:python scikit 構建和分析推薦的系統。
    • Implicit:針對隱式數據集的快速 Python 協同過濾。
    • LightFM:針對隱式和顯式反饋,通過 Python 實現的很多流行推薦算法。
    • pyspark.mlibz*.*recommendation:Apache Spark 的機器學習 API。

    結論

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

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 亚洲AV日韩精品久久久久久久| 特级无码毛片免费视频尤物| 无码精品人妻一区二区三区中| 日本精品人妻无码77777 | 丰满人妻被黑人猛烈进入| 污污污污污污WWW网站免费| 久久精品国产99国产精品严洲 | 午夜夫妻试看120国产| 中文字幕日韩有码av| 国产萌白酱喷水视频在线观看| 一区二区三区精品视频免费播放 | 亚洲AV旡码高清在线观看| 下面一进一出好爽视频| 东北寡妇特级毛片免费| 亚洲中文在线精品国产| 亚洲欧美激情在线一区| 无码人妻精品一区二区三区下载| 亚洲旡码欧美大片| 日本欧美一区二区三区在线播放| 国产成熟妇女性视频电影| 精品女同一区二区三区免费站| 亚洲国产精品人人做人人爱| 午夜在线观看成人av| 久久99精品久久久久久动态图| 人妻中文字幕不卡精品| 国产亚洲AV无码AV男人的天堂| 超清无码熟妇人妻AV在线电影| 亚洲AV无码乱码国产麻豆| 无码成人午夜在线观看| 日韩精品区一区二区三vr| 久久99精品久久久久久齐齐| 精品国产迷系列在线观看| 亚洲AV片一区二区三区| 亚洲高潮喷水无码AV电影| 午夜无码A级毛片免费视频| 一个人免费视频WWW在线观看| 国产精品午夜福利91| 国产精品亚洲LV粉色| 久久久久高潮综合影院| 国产亚洲精品VA片在线播放| 一本一道av无码中文字幕麻豆|