推薦系統研究-筆記
維基百科對推薦系統的解釋:推薦系統是一種資訊過濾系統,用於預測使用者對物品的“評分”或“偏好”。推薦的物件包括:電影、音樂、新聞、書籍、學術論文、搜尋查詢、分眾分類、以及其他產品。
推薦系統首先收集使用者的歷史行為資料,然後透過預處理的方法得到使用者-評價矩陣,再利用機器學習領域中相關推薦技術形成對使用者的個性化推薦。有的推薦系統還蒐集使用者對推薦結果的反饋,並根據實際的反饋資訊實時調整推薦策略,產生更符合使用者需求的推薦結果。
推薦系統的本質是解決資訊過載的問題,代表性的解決方案是分類目錄和搜尋引擎。分析使用者的歷史行為給使用者的興趣建模。
推薦系統主要利用使用者的行為資料,分析使用者的行為日誌,從而提供不同的推薦頁面,提高使用者的滿意度以及網站的點選率和轉化率。
常見的推薦系統的推薦形式主要有三種:個性化推薦、相關推薦、熱門推薦。
個性化推薦:經常以“猜你喜歡”、“發現”等形式在頁首出現;
相關推薦:經常以“相關推薦”、“看了又看”等形式放在內容詳情頁;
熱門推薦:按照各類資料的統計結果進行推薦。
推薦系統的核心——推薦演算法。推薦演算法最早在1992年就提出來了,但是發展起來是網際網路爆發之後。
基於使用者資訊的推薦:
這是最為簡單的一種推薦演算法,它只是簡單的根據系統使用者的基本資訊發現使用者的相關程度,然後將相似使用者喜愛的其他物品推薦給當前使用者。
如下圖:
描述:系統首先根據使用者的型別,比如按照年齡、性別、興趣愛好等資訊進行分類。根據使用者的這些特點計算形成相似度和匹配度。如圖,發現使用者A和B的性別一樣,年齡段相似,於是推薦A喜歡的商品給C。
優點:
不需要歷史資料,沒有冷啟動問題;
不依賴與物品的屬性,因此其他領域的問題都可無縫接入。
缺點:
演算法比較粗糙,效果很難令人滿意,只適合簡單的推薦。
基於內容的推薦(我們的口譯專案能很快使用這個演算法實現推薦功能)
基於內容的推薦是建立在產品的資訊上作出推薦的,而不需要依賴使用者對專案的評價意見,更多地需要用機器學習的方法從關於內容的特徵描述忠的事例中得到使用者的興趣資料。
如下圖:
描述:系統首先對商品書籍的屬性進行建模,途中用型別作為屬性。在實際應用中,只根據型別顯然過於粗糙,還需要考慮其他資訊。透過相似度計算,發現書籍A和C相似度較高,應為他們都屬於武俠小說類。系統還會發現使用者A喜歡資料A,因此得出結論,使用者A很可能對書籍C也感興趣。於是將書籍C推薦給A。
優點:
對使用者興趣可以很好的建模,並透過對商品和使用者新增標籤,可以獲得更好的精確度;
能為具有興趣愛好的使用者進行推薦。
缺點:
物品的屬性有限,難以區分商品資訊的品質;
物品相似度的衡量標準只考慮到了物品本省,有一定的片面性;
不能為使用者發現新的感興趣的產品。
協同過濾推薦
協同過濾的場景:要為某使用者推薦他真正感興趣的內容、商品,首先要找到於此使用者有相似興趣的其他使用者,然後將他們感興趣的內容推薦給該使用者。核心思想就是基於其他使用者對某一個內容的評價來向目標客戶繼續推薦。
基於協同過濾的推薦系統可以說是從使用者的角度來進行相應的自動推薦,即使用者獲得的推薦是系統從購買模式或瀏覽記錄行為等隱式獲得的。
協同過濾又分為兩種UserCF、ItemCF。
3.1 UserCF(基於User的協同過濾)簡介:
前提:需要在建立使用者賬號的同時,新增個性化興趣愛好→以便計算使用者之間的相似度。
其後:使用者需要對不同的題型打分(感興趣程度、也可以更改為做題次數、瀏覽次數),這樣方便→後續給使用者推薦題型。
大致的流程:計算使用者之間的相似度→根據相似使用者對題A的評分,得到本使用者對題A的最終評分→更具使用者的評分對對用進行推薦。
存在的問題:
資料稀疏性:如果題型庫非常大,使用者又比較少,不同使用者之間喜歡的題型重疊性較低,導致演算法無法找到一個使用者的鄰居,即偏好相似度的使用者,即使找到了,準確性也可能不會太高。不適用於酒店預訂,大件商品購買等低頻應用。
使用者相似度維護難度大:基於使用者協同過濾需要維護使用者相似度矩陣,以便快速找出Topn相似使用者,該矩陣的儲存開銷非常大,儲存空間隨著使用者數量的增加而增加,不適合使用者數量大的情況使用。
適合場景:使用者少,物品多,時效性較強的場景。(如新聞推薦)
3.2 ItemCF(基於Item的協同過濾)簡介:
前提:需要使用者給其他題型評分,計算不同題之間的相似度(有多種計算公式)。
其後:根據上述的資料,就能計算了,得出喜歡評分,最終進行推薦。
優點:
Item-based演算法的預測結果比User-based演算法的質量要高一點。
由於Item-based演算法可以預先計算好物品的相似度,所以線上的預測效能要比User-based演算法高。
缺點:
資料稀疏性(因此適用於User遠大於Item數量的場景,相似度演算法導致的,否則適用於UserCF,行數越多,相似度大於0的數列就越多)
物品相似度維護難度大(符合上面應用場景時,相對來說好一點)
若m個User、n個Item、m>>n
User相似度矩陣:m*m
Item相似度矩陣:n*n
3.3 UserCF 和ItemCF的總結:
區別:
共同缺點:不能徹底解決資料稀疏性問題、泛化能力弱、無法利用更多的資訊。
協同過濾與前兩種演算法的區別:
協同過濾vs基於使用者統計資訊推薦
基於使用者的協同過濾推薦機制和基於使用者統計資訊推薦機制都是計算使用者的相似度,並基於“鄰居”使用者群計算推薦,但不同的是如何計算使用者的相似度。基於使用者統計資訊只考慮使用者本身的特徵,而基於使用者的協同過濾機制是在使用者的歷史偏好的資料上計算使用者的相似度,它的基本假設是,喜歡類似物品的使用者可能有相同或相似的興趣愛好。
協同過濾vs基於內容過濾
基於專案的協同過濾推薦和基於內容的推薦其實都是基於物品相似度預測推薦,只是相似度計算的方法不一樣,前者是從使用者的歷史偏好推斷,而後者的基於物品本省的屬性特徵資訊。
專案一:(可能是實際參考的專案)
使用java編寫的基於使用者的協同過濾演算法(UserCF)和基於物品(此應用中指電影)的協同過濾(ItemtemCF) 利用統計學的相關係數經常皮爾森(pearson)相關係數計算相關係數來實現千人千面的推薦系統。
如果使用協同過濾可以參考他的專案程式碼。(這個程式碼也是記錄二原文所對應的原始碼)
專案地址: 推薦演算法 recommend-system: java利用 皮爾森(pearson)相關係數實現千人千面的推薦演算法系統 (gitee.com)
配合使用的文章:推薦系統(Recommendation system )介紹 - AnnieJ - 部落格園 (cnblogs.com)
專案二:
PaddleRec 提供的大規模推薦演算法庫,一站式開箱即用工具。
由於PaddleRec此前未接觸,可能需要花費一段時間學習後才能運用到口譯專案中。
專案地址:https://link.zhihu.com/?target=https%3A//github.com/PaddlePaddle/PaddleRec
專案三:
這是一個推薦系統講解的影片,很正式。(來自小紅書推薦系統大佬)
真正學會搭建推薦系統一定要將它刷完。
專案介紹:wangshusen/RecommenderSystem (github.com)
專案四:
這是阿里巴巴開源的推薦演算法框架,感覺只能用來學習,真正實現起來一個人在短時間內很難完成。(空閒時觀看)
專案地址:https://link.zhihu.com/?target=https%3A//github.com/alibaba/EasyRec
專案五:
易用、強大的PyTorch推薦系統開源庫。
文章地址:伯樂:一個易用、強大的PyTorch推薦系統開源庫 - 知乎 (zhihu.com)
一:若選擇搭建基於內容的推薦演算法的推薦系統
情況說明:使用該方案不需要新新增新屬性,可以直接根據現有的“語料型別”、“使用者收藏”實現粗糙的推薦系統。
優點:簡單、能夠快速搭建好一個具有推薦功能的推薦系統。
缺點:推薦功能較簡單、可能不是很準確。
二:搭建基於協同過濾演算法的推薦系統
情況說明:實現起來較複雜,對現有功能改動較大,需要維護一張使用者-評分矩陣。需要新新增喜歡程度的評分功能(使用者對題型的喜歡程度,可以是評分形式),後續還需要完善使用者個人資訊(興趣愛好、答題時間分佈等個人資訊),還需要對使用者的一些隱式資訊(瀏覽記錄、點選記錄、頁面停留時間)進行收集和維護,以便為後續的推薦功能提供資料。
優點:能夠得到一個企業級的推薦系統,推薦精度高。
缺點:實現起來較複雜,對現有專案修改較高,耗時週期長。
對推薦系統的講解:10-實現推薦功能 - 起跑線小言 - 部落格園 (cnblogs.com)
推薦系統影片講解(來自小紅書推薦系統的大佬):概要01:推薦系統的基本概念_嗶哩嗶哩_bilibili
推薦系統介紹,主要參考的文章: 推薦系統(Recommendation system )介紹 - AnnieJ - 部落格園 (cnblogs.com)
協同過濾的講解影片:5.【ItemCF】基於Item的協同過濾_嗶哩嗶哩_bilibili
《深度學習推薦系統》書籍:https://singlelogin.re/book/21391392/231899/深度學習推薦系統.html
開源推薦演算法專案:13個精選開源推薦系統及演算法,值得收藏 - 知乎 (zhihu.com)