<label id="jgr5k"></label>
    <legend id="jgr5k"><track id="jgr5k"></track></legend>

    <sub id="jgr5k"></sub>
  1. <u id="jgr5k"></u>
      久草国产视频,91资源总站,在线免费看AV,丁香婷婷社区,久久精品99久久久久久久久,色天使av,无码探花,香蕉av在线
      您正在使用IE低版瀏覽器,為了您的雷峰網賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
      此為臨時鏈接,僅用于文章預覽,將在時失效
      人工智能開發(fā)者 正文
      發(fā)私信給skura
      發(fā)送

      0

      如何搭建增量推薦系統(tǒng)?

      本文作者: skura 2020-02-21 10:32
      導語:理想情況下,推薦系統(tǒng)應該能夠適應變化

      如何搭建增量推薦系統(tǒng)?

      學習本教程的先決條件              

      盡管我會盡量減少數學術語的使用,但本文希望讀者熟悉一些概念,如矩陣分解、嵌入空間以及基本的機器學習術語。這篇文章并不是推薦系統(tǒng)的介紹,而是對它們的增量變體的介紹。在任何情況下,本文的主要受眾是機器學習和推薦系統(tǒng)領域的初學者。              

      簡介           

      開始一個機器學習項目,數據科學家收集數據,對其進行處理,訓練模型并將其部署到生產中。當模型的性能開始惡化時,數據科學家通常會從頭開始重復這個循環(huán)。在這個時候,他們才有新的數據示例來對模型進行改進以提高其性能。然而,這通常是一種適得其反的做法,其效率也很低下,特別在那些根據當前數據做出的決策至關重要的業(yè)務領域來說尤其如此。              

      現(xiàn)在,進入推薦系統(tǒng)的世界吧,在這里,用戶的偏好經常會隨著季節(jié)、預算、時尚趨勢等發(fā)生變化。此外,客戶數量和庫存造成了所謂的冷啟動問題,即系統(tǒng)沒有足夠的信息使消費者與產品或服務相匹配。推薦系統(tǒng)在理想情況下應該適應這些變化,改進其模型以適應當前的狀態(tài),同時要對數據進行一次傳遞。這就是漸進式學習的理念。              

      在本文中,我們將探索在實踐中將增量學習的思想應用到推薦系統(tǒng)中。我們使用一個基于 Pytorch 的 Python 庫 CF Step,重現(xiàn)了 Jo?o Vinagre 等人發(fā)表的論文「Fast incremental matrix factorization for recommendation with positive-only feedback」中的結果。接下來,我們將通過應用幾個技巧來實現(xiàn)更高的目標。              

      快速增量矩陣分解              

      我們將要實現(xiàn)的算法使用隱式的、僅為正的反饋。讓我們試著解開這兩個關鍵字的神秘面紗。

      隱式反饋意味著用戶從來沒有對他們交互的項目表達過直接的意見,比如評級。隱式反饋的一個例子是,一個顧客買了多少次某個產品,或者花了多少分鐘看了某個電影。顧客購買的產品或使用的服務越多,我們就越有信心認為,這是一種偏好。僅為正的反饋是一個與隱式反饋一起使用的術語。這是因為,在隱式反饋的情況下,我們很難知道是什么構成了消極互動。用戶不與項目交互并不意味著什么,想象一下超市里的消費者,如果他們尚未購買特定產品,我們無法確定原因。              

      返回到我們的實現(xiàn),僅為正的反饋意味著用戶項交互矩陣 R 只包含布爾值,其中正值表示喜歡,負值被視為不確定。這個假設有兩個主要的含義:R 的稀疏性是會保持的,因為在訓練過程中只使用了正反饋;對于任何用戶項交互,負值都是完美的推薦候選者。              

      算法與方法              

      現(xiàn)在讓我們更仔細地看一下本文中提出的增量隨機梯度下降(ISGD)算法。

      如何搭建增量推薦系統(tǒng)?

      ISGD——增量 SGD              

      我們擁有的數據是元組或用戶項交互數據。記住,這些都是積極的交互。算法的輸入是三個數字:feat (用戶或項目嵌入空間的維數)、λ(正則化系數)和 η(學習速率)。算法的輸出是兩個嵌入矩陣:A 表示用戶,B 表示項目。這些矩陣的維數是 A 的 number_of_users x feat 和 B 的 number_of_items x feat。然后我們有幾個不同的步驟:      

      • 檢查活躍用戶是否是已知的。如果不是,則創(chuàng)建一個具有隨機潛在特征的新用戶,該用戶從均值為 0、標準差為 1 的正態(tài)分布中提取。對活動項執(zhí)行相同的操作。              

      • 計算損失。因為我們只需要處理積極的反饋,所以目標總為 1。因此,我們只需要從 1 中減去我們的預測值。   

      • 使用通用規(guī)則更新活躍用戶的潛在特征(用戶嵌入矩陣中的參數)。對活動項執(zhí)行相同的操作。    

      • 轉到下一個數據點。這樣,我們可以處理任意長度的數據流。              

      實現(xiàn)與評估              

      對于這個實現(xiàn),我們將使用 Python 庫 CF Step 和眾所周知的 Movielens 數據集(https://grouplens.org/datasets/movielens/ )。CF Step 是一個開源庫,用 Python 編寫并在 Pytorch 上構建,它支持增量學習推薦系統(tǒng)的快速實現(xiàn)。該庫是歐洲研究項目 CloudDBAppliance 的副產品。你可以通過運行以下命令輕松安裝庫:              

      pip install cf-step              

      接下來,下載 movielens 數據集,并將 ratings.dat 文件提取在一個方便的目錄下,例如 Linux 中的 tmp 文件夾。對于這個實現(xiàn),我們只需要這個文件。其余文件(users.dat 和 movies.dat)包含用戶和電影的元數據。我們將使用 pandas 加載內存中的文件:

      如何搭建增量推薦系統(tǒng)?

      如你所見,我們將用戶和電影 ID 轉換為類別,以便提取類別代碼。現(xiàn)在,我們不必為嵌入矩陣的生成創(chuàng)建單獨的詞匯表。我們只需要使用用戶和電影編碼,而不是 ID。最后,我們總是通過這個數據幀在代碼和 ID 之間建立連接,以找到原始用戶和電影。現(xiàn)在,讓我們看看我們正在處理的數據中的不重復的用戶和電影的數量。 

      如果我們打印這些數字,我們將看到有 6040 個用戶和 3706 部電影。接下來,我們將按時間戳對數據進行排序,以模擬事件流。              

      正如我們所討論的,該算法只支持正反饋。因此,我們將把 5 分作為正反饋,并放棄其他任何評分。我們希望用 1 表示喜歡,用 0 表示不喜歡,并創(chuàng)建一個名為 preference 的新列來保留它們。然后,我們篩選出 preference == 1 的數據項。

      如何搭建增量推薦系統(tǒng)?

      接下來,讓我們初始化我們的模型。為此,我們需要一個模型架構、一個目標函數(即損失函數)和一個優(yōu)化器。我們將使用 SimpleCF 網絡作為模型架構,這是 CF Step 提供的內置神經網絡架構。對于目標函數,我們將使用一個簡單的 lambda 函數,它接受一個預測和一個目標,并從目標減去預測。在我們的例子中,目標總是 1。對于優(yōu)化器,我們將使用 Pytorch 的 SGD 來實現(xiàn)。我們選擇的因子有 128 個,學習速率是 0.06。現(xiàn)在我們準備初始化 Step 模型。              

      評估方法如下:             

      • 通過在前 20% 的數據上對模型進行訓練來引導它。              

      • 模擬數據流,并使用 recall@k 作為度量來評估模型的性能。              

      • 如果用戶是已知的,則進行預測并計算此預測的 recall@kf。然后,使用這個用戶項交互,遞增地訓練算法。

      • 如果用戶是未知的,只需使用此用戶項交互以增量方式訓練算法。              

      為此,讓我們獲取前 20% 的數據,創(chuàng)建數據加載器并批量擬合模型。              

      然后,我們得到剩余的數據并創(chuàng)建一個不同的數據集。              

      最后,模擬流并使用 recall@10 評估模型。這一步在 GPU 上需要 5 到 6 分鐘。              

      我們可以使用下面的代碼可視化我們的訓練結果。為此,我們將使用一個 5K 滑窗的移動平均值,這和他們在論文中的做法是一樣的。我們可以看到,這個圖和 movielens 數據集的呈現(xiàn)結果類似。要保存模型,請使用 model.save() 內置方法并傳遞有效路徑。

      如何搭建增量推薦系統(tǒng)?

      結論              

      在這篇文章中,我們提出了增量學習在推薦系統(tǒng)中的重要性,并重現(xiàn)了 Jo?o Vinagre 等人發(fā)表的論文「Fast incremental matrix factorization for recommendation with positive-only feedback」中的結果。我們介紹了 Python 的 CF Step 庫,這是一個開源庫,它支持增量學習推薦系統(tǒng)的快速實現(xiàn)。接下來,我們將進一步討論這個問題,并嘗試提高算法的準確性。

      via:https://towardsdatascience.com/building-an-incremental-recommender-system-8836e30afaef

      雷鋒網雷鋒網雷鋒網                   

      雷峰網版權文章,未經授權禁止轉載。詳情見轉載須知

      如何搭建增量推薦系統(tǒng)?

      分享:
      相關文章
      當月熱門文章
      最新文章
      請?zhí)顚懮暾埲速Y料
      姓名
      電話
      郵箱
      微信號
      作品鏈接
      個人簡介
      為了您的賬戶安全,請驗證郵箱
      您的郵箱還未驗證,完成可獲20積分喲!
      請驗證您的郵箱
      立即驗證
      完善賬號信息
      您的賬號已經綁定,現(xiàn)在您可以設置密碼以方便用郵箱登錄
      立即設置 以后再說
      主站蜘蛛池模板: 亚洲视屏| 么公的好大好硬好深好爽视频| 亚洲av日韩av永久无码电影| 久久精品国产亚洲AV麻豆网站| 国产精品久久777777| 泸州市| 日本熟妇中文字幕三级| 熟女精品激情免费视频| 国产suv精品一区二区883| 国产熟人av一二三区| 亚洲黄色成人网站| 安吉县| 日本va欧美va欧美va精品| 精品福利导航| 人妻精品动漫H无码中字| 狠狠色狠狠色综合久久蜜芽| √新版天堂资源在线资源| 钦州市| 国产精品99久久久久久董美香| 日本视频一两二两三区| 中文字幕在线无遮挡| 国产性猛交xxxx乱大的交| 国产成人精品无码播放| 亚洲乱码一区av春药高潮| 狠狠综合av一区二区| 国产在线拍揄自揄拍无码视频| 国产微拍一区二区三区四区| 台东市| 日本一区不卡高清更新二区| 欧美精品在线观看视频| 婷婷五月综合丁香在线| 亚洲日韩AV无码专区影院| 精品国产AV无码一区二区三区 | 亚洲日韩久久综合中文字幕| 国产黄拍| 一本色道久久综合精品婷婷| 亚洲男人皇宫| 成人精品一| 国产成人无码A区在线观看视频| 国产偷国产偷亚洲高清午夜| 全部av―极品视觉盛宴|