今天這篇文章,主要是用來給大家解答一個問題,就是關于怎么用Python去實現一個功能,需要用到的算法是MostPopular算法,具體給大家詳細的解答下。
推薦系統MostPopular算法的Python實現
MostPopular算法的是指對每個用戶都選擇出當前流行度最高的Top-K個物品進行推薦,在推薦的時候,需要去除用戶原先就瀏覽過的項目。
算法代碼如下
#MostPop defMostPopular(pop_dict,I,K): ''' pop_dic:流行度字典,存儲了每個item:pop_value的鍵值對。 I:用戶可以選擇的Item空間(需去除已經看過的item) K:Top-K值,推薦出K個item給用戶 ''' pop_dict_sort=sorted(pop_dict.items(),key=lambdakv:(kv[1],kv[0]),reverse=True) foreach_iteminpop_dict_sort: ifeach_item[0]notinI: pop_dict_sort.remove(each_item) return[i[0]foriinpop_dict_sort[:K]]
在ML-1M數據集上的測試結果(100個用戶)
Precision:0.05399999999999998
Recall:0.0659683173313864
HR:0.08
NDCG:0.2668352016595219
ARP:25.750500000000002
推薦系統的幾種常用算法總結
之前也做過一些關于推薦系統的項目,下面就來系統的總結一下。
一、什么是推薦系統?
引用百度百科的一段解釋就是:“利用電子商務網站向客戶提供商品信息和建議,幫助用戶決定應該購買什么產品,模擬銷售人員幫助客戶完成購買過程。個性化推薦是根據用戶的興趣特點和購買行為,向用戶推薦用戶感興趣的信息和商品。”
在這個數據過載的時代,信息的消費者需要從海量的信息中找到自己所需要的信息,信息的生產者要讓自己生產的信息在海量的信息中脫穎而出,這時推薦系統就應運而生了。對用戶而言,推薦系統不需要用戶提供明確的目標;對物品而言,推薦系統解決了2/8現象的問題(也叫長尾效應),讓小眾的物品可以展示到需要它們的用戶面前。
二、推薦系統要解決的問題?
1、幫助用戶找到想要的物品如:書籍、電影等
2、可以降低信息過載
3、有利于提高站點的點擊率/轉化率
4、有利于對用戶進行深入了解,為用戶提供個性化服務
三、推薦系統的發展趨勢?
推薦系統的研究大致可以分為三個階段,第一階段是基于傳統的服務,第二階段是基于目前的社交網絡的服務,第三階段是即將到來的物聯網。
這其中產生了很多基礎和重要的算法,例如協同過濾(包括基于用戶的和基于物品的)、基于內容的推薦算法、混合式的推薦算法、基于統計理論的推薦算法、基于社交網絡信息(關注、被關注、信任、知名度、信譽度等)的過濾推薦算法、群體推薦算法、基于位置的推薦算法。
其中基于鄰域的協同過濾推薦算法是推薦系統中最基礎、最核心、最重要的算法,該算法不僅在學術界得到較為深入的研究,而且在業界也得到非常廣泛的應用,基于鄰域的算法主要分為兩大類,一類是基于用戶的協同過濾算法,另一類是基于物品的協同過濾算法,除此之外,基于內容的推薦算法應用也非常廣泛等等,因此下文將對涉及推薦系統的常用算法進行詳細介紹。
1、基于流行度的推薦算法
2、基于協同過濾的推薦算法(UserCF與ItemCF)
3、基于內容的推薦算法
4、基于模型的推薦算法
5、基于混合式的推薦算法
四、基于流行度的推薦算法
基于流行度的算法非常簡單粗暴,類似于各大新聞、微博熱榜等,根據PV、UV、日均PV或分享率等數據來按某種熱度排序來推薦給用戶。
注:獨立訪客(UV)、訪問次數(VV)兩個指標有什么區別?
①訪問次數(VV):記錄1天內所有訪客訪問了該網站多少次,相同的訪客有可能多次訪問該網站,且訪問的次數累加。
②獨立訪客(UV):記錄1天內所有訪客訪問了該網站多少次,雖然相同訪客能多次訪問網站,但只計算為1個獨立訪客。
?、跴V訪問量(PageView):即頁面訪問量,每打開一次頁面或者刷新一次頁面,PV值+1。
1、優點:該算法簡單,適用于剛注冊的新用戶
2、缺點:無法針對用戶提供個性化的推薦
3、改進:基于該算法可做一些優化,例如加入用戶分群的流行度進行排序,通過把熱榜上的體育內容優先推薦給體育迷,把政要熱文推給熱愛談論政治的用戶。
五、基于用戶的協同過濾推薦算法
當目標用戶需要推薦時,可以先通過興趣、愛好或行為習慣找到與他相似的其他用戶,然后把那些與目標用戶相似的用戶喜歡的并且目標用戶沒有瀏覽過的物品推薦給目標用戶。
1、基于用戶的CF原理如下:
?、俜治龈鱾€用戶對物品的評價,通過瀏覽記錄、購買記錄等得到用戶的隱性評分;
?、诟鶕脩魧ξ锲返碾[性評分計算得到所有用戶之間的相似度;
?、圻x出與目標用戶最相似的K個用戶;
?、軐⑦@K個用戶隱性評分最高并且目標用戶又沒有瀏覽過的物品推薦給目標用戶。
2、優點:
?、倩谟脩舻膮f同過濾推薦算法是給目標用戶推薦那些和他有共同興趣的用戶喜歡的物品,所以該算法推薦較為社會化,即推薦的物品是與用戶興趣一致的那個群體中的熱門物品;
?、谶m于物品比用戶多、物品時效性較強的情形,否則計算慢;
?、勰軐崿F跨領域、驚喜度高的結果。
3、缺點:
①在很多時候,很多用戶兩兩之間的共同評分僅有幾個,也即用戶之間的重合度并不高,同時僅有的共同打了分的物品,往往是一些很常見的物品,如票房大片、生活必需品;
②用戶之間的距離可能變得很快,這種離線算法難以瞬間更新推薦結果;
③推薦結果的個性化較弱、較寬泛。
4、改進:
①兩個用戶對流行物品的有相似興趣,絲毫不能說明他們有相似的興趣,此時要增加懲罰力度;
②如果兩個用戶同時喜歡了相同的物品,那么可以給這兩個用戶更高的相似度;
?、墼诿枋鲟従佑脩舻钠脮r,給其最近喜歡的物品較高權重;
④把類似地域用戶的行為作為推薦的主要依據。
六、基于物品的協同過濾推薦算法
當一個用戶需要個性化推薦時,舉個例子由于我之前購買過許嵩的《夢游計》這張專輯,所以會給我推薦《青年晚報》,因為很多其他用戶都同時購買了許嵩的這兩張專輯。
1、基于物品的CF原理如下:
?、俜治龈鱾€用戶對物品的瀏覽記錄;
?、谝罁g覽記錄分析得出所有物品之間的相似度;
③對于目標用戶評價高的物品,找出與之相似度最高的K個物品;
④將這K個物品中目標用戶沒有瀏覽過的物品推薦給目標用戶
2、優點:
?、倩谖锲返膮f同過濾推薦算法則是為目標用戶推薦那些和他之前喜歡的物品類似的物品,所以基于物品的協同過濾推薦算法的推薦較為個性,因為推薦的物品一般都滿足目標用戶的獨特興趣。
?、谖锲分g的距離可能是根據成百上千萬的用戶的隱性評分計算得出,往往能在一段時間內保持穩定。因此,這種算法可以預先計算距離,其在線部分能更快地生產推薦列表。
?、蹜米顝V泛,尤其以電商行業為典型。
?、苓m于用戶多、物品少的情形,否則計算慢
⑤推薦精度高,更具個性化
?、迌A向于推薦同類商品
3、缺點:
?、俨煌I域的最熱門物品之間經常具有較高的相似度。比如,基于本算法,我們可能會給喜歡聽許嵩歌曲的同學推薦汪峰的歌曲,也就是推薦不同領域的暢銷作品,這樣的推薦結果可能并不是我們想要的。
?、谠谖锲防鋯印祿∈钑r效果不佳
?、弁扑]的多樣性不足,形成信息閉環
4、改進:
?、偃绻菬衢T物品,很多人都喜歡,就會接近1,就會造成很多物品都和熱門物品相似,此時要增加懲罰力度;
?、诨钴S用戶對物品相似度的貢獻小于不活躍的用戶;
③同一個用戶在間隔很短的時間內喜歡的兩件商品之間,可以給予更高的相似度;
?、茉诿枋瞿繕擞脩羝脮r,給其最近喜歡的商品較高權重;
?、萃粋€用戶在同一個地域內喜歡的兩件商品之間,可以給予更高的相似度。
七、基于內容的推薦算法
協同過濾算法僅僅通過了解用戶與物品之間的關系進行推薦,而根本不會考慮到物品本身的屬性,而基于內容的算法會考慮到物品本身的屬性。
根據用戶之前對物品的歷史行為,如用戶購買過什么物品、對什么物品收藏過、評分過等等,然后再根據計算與這些物品相似的物品,并把它們推薦給用戶。例如某用戶之前購買過許嵩的《尋寶游戲》,這可以說明該用戶可能是一個嵩鼠,這時就可以給該用戶推薦一些許嵩的其他專輯或著作。
1、基于內容的推薦算法的原理如下:
①選取一些具有代表性的特征來表示每個物品
?、谑褂糜脩舻臍v史行為數據分析物品的這些特征,從而學習出用戶的喜好特征或興趣,也即構建用戶畫像
③通過比較上一步得到的用戶畫像和待推薦物品的畫像(由待推薦物品的特征構成),將具有相關性最大的前K個物品中目標用戶沒有瀏覽過的物品推薦給目標用戶
2、優點:
①是最直觀的算法
?、诔=柚谋鞠嗨贫扔嬎?/p>
?、酆芎玫亟鉀Q冷啟動問題,并且也不會囿于熱度的限制
3、缺點:
①容易受限于對文本、圖像、音視頻的內容進行描述的詳細程度
②過度專業化(over-specialisation),導致一直推薦給用戶內容密切關聯的item,而失去了推薦內容的多樣性。
?、壑黝}過于集中,驚喜度不足
八、基于模型的推薦算法
基于模型的推薦算法會涉及到一些機器學習的方法,如邏輯回歸、樸素貝葉斯分類器等?;谀P偷乃惴ㄓ捎诳焖佟蚀_,適用于實時性比較高的業務如新聞、廣告等,而若是需要這種算法達到更好的效果,則需要人工干預反復的進行屬性的組合和篩選,也就是常說的FeatureEngineering。而由于新聞的時效性,系統也需要反復更新線上的數學模型,以適應變化。
九、基于混合式的推薦算法
現實應用中,其實很少有直接用某種算法來做推薦的系統。在一些大的網站如Netflix,就是融合了數十種算法的推薦系統。我們可以通過給不同算法的結果加權重來綜合結果,或者是在不同的計算環節中運用不同的算法來混合,達到更貼合自己業務的目的。
十、推薦結果列表處理
1、當推薦算法計算得出推薦結果列表之后,我們往往還需要對結果進行處理。比如當推薦的內容里包含敏感詞匯、涉及用戶隱私的內容等等,就需要系統將其篩除;
2、若多次推薦后用戶依然對某個物品毫無興趣,就需要將這個物品降低權重,調整排序;
3、有時系統還要考慮話題多樣性的問題,同樣要在不同話題中篩選內容。
十一、推薦結果評估
當一個推薦算法設計完成后,一般需要用查準率(precision),查全率(recall),點擊率(CTR)、轉化率(CVR)、停留時間等指標進行評價。
查準率(precision):推薦給用戶且用戶喜歡的物品在推薦列表中的比重
查全率(recall):推薦給用戶且用戶喜歡的物品在用戶列表中的比重
點擊率(CTR):實際點擊了的物品/推薦列表中所有的物品
轉化率(CVR):購買了的物品/實際點擊了的物品
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/127653.html
摘要:上一篇文章指南下一篇文章為在集合上執行基本的聚合任務提供了一些命令。也可以給傳遞一個查詢文檔,會計算查詢結果的數量對分頁顯示來說總數非常必要共個,目前顯示個。使用時必須指定集合和鍵。指定要進行分組的集合。 上一篇文章:MongoDB指南---17、MapReduce下一篇文章: MongoDB為在集合上執行基本的聚合任務提供了一些命令。這些命令在聚合框架出現之前就已經存在了,現在(大多...
摘要:上一篇文章指南下一篇文章為在集合上執行基本的聚合任務提供了一些命令。也可以給傳遞一個查詢文檔,會計算查詢結果的數量對分頁顯示來說總數非常必要共個,目前顯示個。使用時必須指定集合和鍵。指定要進行分組的集合。 上一篇文章:MongoDB指南---17、MapReduce下一篇文章: MongoDB為在集合上執行基本的聚合任務提供了一些命令。這些命令在聚合框架出現之前就已經存在了,現在(大多...
摘要:其他語言數據結構跟算法一樣是在開始寫代碼的時候用得很少,都有著包裝好的現成東西供你使用,但同樣是面試和崗位上升會用得到,我就不說數據結構對代碼有多少好處,請記住一句話能夠實現個功能和能夠最優地實現個功能,是完全不同級別的要求。 ...
摘要:大家好,我是一行今天給大家聊聊一行在讀研里最成功的投資,那必然是鍵盤邊上的每一本技術書啦畢竟股票基金這種投資即使賺了錢,過段時間就得還回去,非常的神奇但是讀過的每一本技術書籍,都內化在手指上了,只要給個鍵盤,就能給它實 ...
閱讀 911·2023-01-14 11:38
閱讀 878·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1982·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 819·2023-01-14 10:18
閱讀 499·2023-01-14 10:09
閱讀 572·2023-01-14 10:02