最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

推薦系統(tǒng)MostPopular算法的Python實現(xiàn)方式

 更新時間:2022年07月14日 10:22:42   作者:白水baishui  
這篇文章主要介紹了推薦系統(tǒng)MostPopular算法的Python實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

推薦系統(tǒng)MostPopular算法的Python實現(xiàn)

MostPopular 算法的 是指對每個用戶都選擇出當前流行度最高的Top-K個物品進行推薦,在推薦的時候,需要去除用戶原先就瀏覽過的項目。

算法代碼如下

# Most Pop
def MostPopular(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=lambda kv: (kv[1], kv[0]), reverse=True)
? ? for each_item in pop_dict_sort:
? ? ? ? if each_item[0] not in I:
? ? ? ? ? ? pop_dict_sort.remove(each_item)

? ? return [i[0] for i in pop_dict_sort[:K]]

在ML-1M數(shù)據(jù)集上的測試結果(100個用戶)

Precision: 0.05399999999999998
Recall: 0.0659683173313864
HR: 0.08
NDCG: 0.2668352016595219
ARP: 25.750500000000002

推薦系統(tǒng)的幾種常用算法總結

之前也做過一些關于推薦系統(tǒng)的項目,下面就來系統(tǒng)的總結一下。

一、什么是推薦系統(tǒng)?

引用百度百科的一段解釋就是:“利用電子商務網(wǎng)站向客戶提供商品信息和建議,幫助用戶決定應該購買什么產品,模擬銷售人員幫助客戶完成購買過程。個性化推薦是根據(jù)用戶的興趣特點和購買行為,向用戶推薦用戶感興趣的信息和商品。”

在這個數(shù)據(jù)過載的時代,信息的消費者需要從海量的信息中找到自己所需要的信息,信息的生產者要讓自己生產的信息在海量的信息中脫穎而出,這時推薦系統(tǒng)就應運而生了。對用戶而言,推薦系統(tǒng)不需要用戶提供明確的目標;對物品而言,推薦系統(tǒng)解決了2/8現(xiàn)象的問題(也叫長尾效應),讓小眾的物品可以展示到需要它們的用戶面前。

二、推薦系統(tǒng)要解決的問題?

1、幫助用戶找到想要的物品 如:書籍、電影等

2、可以降低信息過載

3、有利于提高站點的點擊率/轉化率

4、有利于對用戶進行深入了解,為用戶提供個性化服務

三、推薦系統(tǒng)的發(fā)展趨勢?

推薦系統(tǒng)的研究大致可以分為三個階段,第一階段是基于傳統(tǒng)的服務,第二階段是基于目前的社交網(wǎng)絡的服務,第三階段是即將到來的物聯(lián)網(wǎng)。

這其中產生了很多基礎和重要的算法,例如協(xié)同過濾(包括基于用戶的和基于物品的)、基于內容的推薦算法、混合式的推薦算法、基于統(tǒng)計理論的推薦算法、基于社交網(wǎng)絡信息(關注、被關注、信任、知名度、信譽度等)的過濾推薦算法、群體推薦算法、基于位置的推薦算法。

其中基于鄰域的協(xié)同過濾推薦算法是推薦系統(tǒng)中最基礎、最核心、最重要的算法,該算法不僅在學術界得到較為深入的研究,而且在業(yè)界也得到非常廣泛的應用,基于鄰域的算法主要分為兩大類,一類是基于用戶的協(xié)同過濾算法,另一類是基于物品的協(xié)同過濾算法,除此之外,基于內容的推薦算法應用也非常廣泛等等,因此下文將對涉及推薦系統(tǒng)的常用算法進行詳細介紹。

1、基于流行度的推薦算法

2、基于協(xié)同過濾的推薦算法(UserCF與ItemCF)

3、基于內容的推薦算法

4、基于模型的推薦算法

5、基于混合式的推薦算法

四、基于流行度的推薦算法

基于流行度的算法非常簡單粗暴,類似于各大新聞、微博熱榜等,根據(jù)PV、UV、日均PV或分享率等數(shù)據(jù)來按某種熱度排序來推薦給用戶。

注:獨立訪客(UV)、訪問次數(shù)(VV)兩個指標有什么區(qū)別?

① 訪問次數(shù)(VV):記錄1天內所有訪客訪問了該網(wǎng)站多少次,相同的訪客有可能多次訪問該網(wǎng)站,且訪問的次數(shù)累加。

② 獨立訪客(UV):記錄1天內所有訪客訪問了該網(wǎng)站多少次,雖然相同訪客能多次訪問網(wǎng)站,但只計算為1個獨立訪客。

③ PV訪問量(Page View):即頁面訪問量,每打開一次頁面或者刷新一次頁面,PV值+1。

1、優(yōu)點:該算法簡單,適用于剛注冊的新用戶

2、缺點:無法針對用戶提供個性化的推薦

3、改進:基于該算法可做一些優(yōu)化,例如加入用戶分群的流行度進行排序,通過把熱榜上的體育內容優(yōu)先推薦給體育迷,把政要熱文推給熱愛談論政治的用戶。

五、基于用戶的協(xié)同過濾推薦算法

當目標用戶需要推薦時,可以先通過興趣、愛好或行為習慣找到與他相似的其他用戶,然后把那些與目標用戶相似的用戶喜歡的并且目標用戶沒有瀏覽過的物品推薦給目標用戶。

1、基于用戶的CF原理如下:

① 分析各個用戶對物品的評價,通過瀏覽記錄、購買記錄等得到用戶的隱性評分;

② 根據(jù)用戶對物品的隱性評分計算得到所有用戶之間的相似度;

③ 選出與目標用戶最相似的K個用戶;

④ 將這K個用戶隱性評分最高并且目標用戶又沒有瀏覽過的物品推薦給目標用戶。

2、優(yōu)點:

① 基于用戶的協(xié)同過濾推薦算法是給目標用戶推薦那些和他有共同興趣的用戶喜歡的物品,所以該算法推薦較為社會化,即推薦的物品是與用戶興趣一致的那個群體中的熱門物品;

② 適于物品比用戶多、物品時效性較強的情形,否則計算慢;

③ 能實現(xiàn)跨領域、驚喜度高的結果。

3、缺點:

① 在很多時候,很多用戶兩兩之間的共同評分僅有幾個,也即用戶之間的重合度并不高,同時僅有的共同打了分的物品,往往是一些很常見的物品,如票房大片、生活必需品;

② 用戶之間的距離可能變得很快,這種離線算法難以瞬間更新推薦結果;    

③ 推薦結果的個性化較弱、較寬泛。

4、改進:

① 兩個用戶對流行物品的有相似興趣,絲毫不能說明他們有相似的興趣,此時要增加懲罰力度;

② 如果兩個用戶同時喜歡了相同的物品,那么可以給這兩個用戶更高的相似度;

③ 在描述鄰居用戶的偏好時,給其最近喜歡的物品較高權重;

④ 把類似地域用戶的行為作為推薦的主要依據(jù)。

六、基于物品的協(xié)同過濾推薦算法

當一個用戶需要個性化推薦時,舉個例子由于我之前購買過許嵩的《夢游計》這張專輯,所以會給我推薦《青年晚報》,因為很多其他用戶都同時購買了許嵩的這兩張專輯。

1、基于物品的CF原理如下:

① 分析各個用戶對物品的瀏覽記錄;

② 依據(jù)瀏覽記錄分析得出所有物品之間的相似度;

③ 對于目標用戶評價高的物品,找出與之相似度最高的K個物品;

④ 將這K個物品中目標用戶沒有瀏覽過的物品推薦給目標用戶

2、優(yōu)點:

① 基于物品的協(xié)同過濾推薦算法則是為目標用戶推薦那些和他之前喜歡的物品類似的物品,所以基于物品的協(xié)同過濾推薦算法的推薦較為個性,因為推薦的物品一般都滿足目標用戶的獨特興趣。

② 物品之間的距離可能是根據(jù)成百上千萬的用戶的隱性評分計算得出,往往能在一段時間內保持穩(wěn)定。因此,這種算法可以預先計算距離,其在線部分能更快地生產推薦列表。

③ 應用最廣泛,尤其以電商行業(yè)為典型。

④ 適于用戶多、物品少的情形,否則計算慢

⑤ 推薦精度高,更具個性化

⑥ 傾向于推薦同類商品

3、缺點:

① 不同領域的最熱門物品之間經常具有較高的相似度。比如,基于本算法,我們可能會給喜歡聽許嵩歌曲的同學推薦汪峰的歌曲,也就是推薦不同領域的暢銷作品,這樣的推薦結果可能并不是我們想要的。

② 在物品冷啟動、數(shù)據(jù)稀疏時效果不佳

③ 推薦的多樣性不足,形成信息閉環(huán)

4、改進:

① 如果是熱門物品,很多人都喜歡,就會接近1,就會造成很多物品都和熱門物品相似,此時要增加懲罰力度;

② 活躍用戶對物品相似度的貢獻小于不活躍的用戶;

③ 同一個用戶在間隔很短的時間內喜歡的兩件商品之間,可以給予更高的相似度;

④ 在描述目標用戶偏好時,給其最近喜歡的商品較高權重;

⑤ 同一個用戶在同一個地域內喜歡的兩件商品之間,可以給予更高的相似度。

七、基于內容的推薦算法

協(xié)同過濾算法僅僅通過了解用戶與物品之間的關系進行推薦,而根本不會考慮到物品本身的屬性,而基于內容的算法會考慮到物品本身的屬性。

根據(jù)用戶之前對物品的歷史行為,如用戶購買過什么物品、對什么物品收藏過、評分過等等,然后再根據(jù)計算與這些物品相似的物品,并把它們推薦給用戶。例如某用戶之前購買過許嵩的《尋寶游戲》,這可以說明該用戶可能是一個嵩鼠,這時就可以給該用戶推薦一些許嵩的其他專輯或著作。

1、基于內容的推薦算法的原理如下:

① 選取一些具有代表性的特征來表示每個物品

② 使用用戶的歷史行為數(shù)據(jù)分析物品的這些特征,從而學習出用戶的喜好特征或興趣,也即構建用戶畫像

③ 通過比較上一步得到的用戶畫像和待推薦物品的畫像(由待推薦物品的特征構成),將具有相關性最大的前K個物品中目標用戶沒有瀏覽過的物品推薦給目標用戶

2、優(yōu)點:

① 是最直觀的算法

② 常借助文本相似度計算

③ 很好地解決冷啟動問題,并且也不會囿于熱度的限制

3、缺點:

① 容易受限于對文本、圖像、音視頻的內容進行描述的詳細程度

② 過度專業(yè)化(over-specialisation),導致一直推薦給用戶內容密切關聯(lián)的item,而失去了推薦內容的多樣性。

③ 主題過于集中,驚喜度不足

八、基于模型的推薦算法

基于模型的推薦算法會涉及到一些機器學習的方法,如邏輯回歸、樸素貝葉斯分類器等?;谀P偷乃惴ㄓ捎诳焖?、準確,適用于實時性比較高的業(yè)務如新聞、廣告等,而若是需要這種算法達到更好的效果,則需要人工干預反復的進行屬性的組合和篩選,也就是常說的Feature Engineering。而由于新聞的時效性,系統(tǒng)也需要反復更新線上的數(shù)學模型,以適應變化。

九、基于混合式的推薦算法

現(xiàn)實應用中,其實很少有直接用某種算法來做推薦的系統(tǒng)。在一些大的網(wǎng)站如Netflix,就是融合了數(shù)十種算法的推薦系統(tǒng)。我們可以通過給不同算法的結果加權重來綜合結果,或者是在不同的計算環(huán)節(jié)中運用不同的算法來混合,達到更貼合自己業(yè)務的目的。

十、推薦結果列表處理

1、當推薦算法計算得出推薦結果列表之后,我們往往還需要對結果進行處理。比如當推薦的內容里包含敏感詞匯、涉及用戶隱私的內容等等,就需要系統(tǒng)將其篩除;

2、若多次推薦后用戶依然對某個物品毫無興趣,就需要將這個物品降低權重,調整排序;

3、有時系統(tǒng)還要考慮話題多樣性的問題,同樣要在不同話題中篩選內容。

十一、推薦結果評估

當一個推薦算法設計完成后,一般需要用查準率(precision),查全率(recall),點擊率(CTR)、轉化率(CVR)、停留時間等指標進行評價。

  • 查準率(precision):推薦給用戶且用戶喜歡的物品在推薦列表中的比重
  • 查全率(recall):推薦給用戶且用戶喜歡的物品在用戶列表中的比重
  • 點擊率(CTR):實際點擊了的物品/推薦列表中所有的物品
  • 轉化率(CVR):購買了的物品/實際點擊了的物品

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python音樂爬蟲完美繞過反爬

    Python音樂爬蟲完美繞過反爬

    這篇文章主要介紹了Python音樂爬蟲完美繞過反爬的過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • 使用ITK-SNAP進行摳圖操作并保存mask的實例

    使用ITK-SNAP進行摳圖操作并保存mask的實例

    這篇文章主要介紹了使用ITK-SNAP進行摳圖操作并保存mask的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Python簡單定義與使用二叉樹示例

    Python簡單定義與使用二叉樹示例

    這篇文章主要介紹了Python簡單定義與使用二叉樹,結合實例形式分析了Python定義二叉樹及節(jié)點插入相關操作技巧,需要的朋友可以參考下
    2018-05-05
  • python實現(xiàn)楊輝三角的3種方法(迭代、生成器和遞歸)

    python實現(xiàn)楊輝三角的3種方法(迭代、生成器和遞歸)

    這篇文章主要給大家介紹了關于python實現(xiàn)楊輝三角的3種方法,分別是迭代、生成器和遞歸的相關資料,楊輝三角形的規(guī)則就是每行的第一個數(shù)字和最后一個數(shù)字為1之外,其余每個數(shù)字等于上一行對應兩個數(shù)字的和,需要的朋友可以參考下
    2023-11-11
  • protobuf 序列化和反序列化操作流程

    protobuf 序列化和反序列化操作流程

    Protocol Buffers(protobuf)是一種輕量級的數(shù)據(jù)交換格式,可以用于結構化數(shù)據(jù)的序列化和反序列化,它使用二進制格式來編碼數(shù)據(jù),以提高傳輸效率和數(shù)據(jù)壓縮比,這篇文章主要介紹了protobuf 序列化和反序列化操作流程,需要的朋友可以參考下
    2024-06-06
  • python環(huán)境配置方式(服務器+本地)

    python環(huán)境配置方式(服務器+本地)

    這篇文章詳細介紹了在服務器上安裝和配置Anaconda3、TensorFlow、PyTorch等深度學習環(huán)境的步驟,包括下載、初始化、創(chuàng)建環(huán)境、驗證安裝以及解決一些常見問題
    2025-01-01
  • webdriver.Chrome()沒反應解決詳細圖文教程

    webdriver.Chrome()沒反應解決詳細圖文教程

    這篇文章主要給大家介紹了關于webdriver.Chrome()沒反應的解決辦法,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-03-03
  • Python設計模式之命令模式原理與用法實例分析

    Python設計模式之命令模式原理與用法實例分析

    這篇文章主要介紹了Python設計模式之命令模式,結合具體實例形式分析了Python命令模式相關概念、原理、定義及使用方法,需要的朋友可以參考下
    2019-01-01
  • Pandas讀取csv時如何設置列名

    Pandas讀取csv時如何設置列名

    這篇文章主要介紹了Pandas讀取csv時如何設置列名,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • Python報錯ModuleNotFoundError: No module named ‘tensorboard‘的解決方法

    Python報錯ModuleNotFoundError: No module named&

    在嘗試導入TensorBoard模塊時,你可能會遇到ModuleNotFoundError: No module named 'tensorboard'的錯誤,下面我們來分析這個問題并提供解決方案,需要的朋友可以參考下
    2024-09-09

最新評論

杭州市| 稷山县| 江门市| 双辽市| 金昌市| 花莲市| 贺兰县| 昌邑市| 乌拉特前旗| 普宁市| 无极县| 江城| 丹寨县| 岑溪市| 元朗区| 长丰县| 萨嘎县| 兰溪市| 昌都县| 德格县| 桂东县| 汝阳县| 巫溪县| 新丰县| 霍山县| 高清| 尖扎县| 黄平县| 盈江县| 彝良县| 长寿区| 金山区| 马关县| 泰来县| 灵川县| 原平市| 郧西县| 万山特区| 遂平县| 彩票| 苏州市|