<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)在您可以設置密碼以方便用郵箱登錄
      立即設置 以后再說
      主站蜘蛛池模板: 亚洲成a人片77777kkkk| 国产呦交精品免费视频| 欧美成人精品第一区二区三区| 2020精品国产自在现线看| 国产乱子伦无套一区二区三区 | 久久一日本道色综合久久| 99久久免费国产精精品| 一本久道久久综合狠狠躁av| 色婷婷久久| 精品无码av无码专区| 亚洲中文字幕精品久久久久久动漫| 久久精品国产字幕高潮| 亚洲精品一区中文字幕乱码| 少妇被粗大的猛烈进出动视频 | 中文国产成人精品久久不卡| 顺义区| 久久精品私人影院免费看| 亚洲成人首页| 亚洲青青草视频免费观看| 久久综合老鸭窝色综合久久| 亚洲a∨无码一区二区三区| 日韩少妇内射免费播放| 大地资源中文第三页| 中文字幕无码不卡在线| 欧产日产国产精品精品| 亚洲一区二区三区四区| 国产精品无需播放器在线观看| 人妻少妇精品无码专区二区| 越南毛茸茸的少妇| 午夜成人理论无码电影在线播放| 成人欧美一区二区三区1314| 久久亚洲人成网站| 久久99日韩国产精品久久99| 国产av无码专区亚洲awww| 精品日韩av在线播放| 亚洲图片自拍偷图区| 日韩精品久久久久久久电影蜜臀 | 激情久久久| 国产91四大| 久久国产自拍一区二区三区| 亚洲欧洲日产国无高清码图片|