實現一個簡單的推薦系統模型-基於流行度的推薦模型

2020-12-07 騰訊網

搭建一個最簡單的推薦系統,應該如何入手呢?

推薦系統目前已經深入到了網際網路的各類產品中。不管是到電子商務網站購物,還是到新聞閱讀網站獲取信息,甚至是在出行的時候希望聽到不同的音樂,不同種類的推薦系統都在我們的生活中發揮著舉足輕重的作用。我們就來聊一個最基本的推薦模型:

基於流行度的推薦模型

最簡單的流行度估計

什麼是基於流行度(Popularity-based)?通俗地說,就是什麼內容吸引用戶,就給用戶推薦什麼內容。

這裡面其實有一個隱含的假設,那就是物品本身的質量好壞和流行度有一定的正比關係。什麼意思呢?就是說好的東西,關注的人自然就多,自然就會有更多的談論。當然,這是一個主觀的假設,並不是所有質量高的物品都會有很高的流行度。然而,在不需要過多其他信息和假設的情況下,流行度可以算是衡量物品質量好壞的一個最簡單的測度。

如果我們能夠在每一個時間點上準確地估計到一個物品的流行度,就只需要按照流行度的數值從高到低排序顯示所有的物品就可以了。

然而,這裡牽涉到一個問題,那就是如何判斷一個物品在任何時間點上的流行度呢?有兩個重要的因素影響著物品流行度的估計,那就是時間和位置

先來說下時間因素。用戶訪問每一個應用或者服務都有一定的規律,這種規律導致每一個應用的流量規律也不一樣。比如,人們可能更傾向於在早上或者傍晚打開新聞網站,看一看一天都發生了什麼事情。因此,任何文章投放到這兩個時段自然就會有比較高的關注度。這並不代表這些文章就要好於其他的文章,可能僅僅是由於時間的關係。因此,我們在對流行度建模的時候就需要考慮時間的因素。

另外一個重要的因素是位置。這個「位置」並不是真正的地理位置,而是在一個服務或者網站的什麼位置顯示你的物品。因為用戶心理對於不同位置的感受,在很多類型的服務中常常都有隱含的「位置偏差」(Position Bias)。

這些偏差給我們估計某個物品的流行度帶來了很大的困難。比如說,在絕大多數的搜尋引擎服務中,排名第一的物品所受到的關注度很可能大大高於排名第二和之後的物品。因此,一個物品只要放到第一的位置,關注度自然就會升高。當然,這並不能完全代表這個物品本身的屬性。

因此,我們在估計物品的流行度時就需要考慮上面所說的這兩個重要因素。

要解決剛才說的兩個問題,我們就不能使用絕對數值來對流行度建模。比如我們使用在單位時間內點擊的數目,購買的數目,或者點讚的數目,都會受到剛才所說的兩種偏差的影響。假設一篇文章在9點到10點這個時段被點擊了100次,在10點到11點這個時段被點擊了50次,這並不能代表這個文章在10點到11點這個時段就變得不受歡迎了,很可能是這個時段的總的用戶量比較多。

因此,對於流行度的衡量,我們往往使用的是一個「比值」(Ratio),或者是計算某種「可能性」(Probability)。也就是說,我們計算在總的用戶數是N的情況下,點擊了某個文章的人數。這個比值,如果是點擊,往往叫做點擊率;然而,點擊率本身雖然解決了一部分時間和位置偏差所帶來的影響,但是點擊率的估計所需要的數據依然會受到偏差的影響。因此,我們往往希望能夠建立無偏差的數據。

關於如何能夠無偏差地估計,這是一個研究課題,我們今天不詳細展開。不過,有一種比較經濟的方法可以收集沒有偏差的數據,那就是把服務的流量分成兩個部分。

一個部分,利用現在已有的對物品流行度的估計來顯示推薦結果。另外一個部分,則隨機顯示物品。這種方法是一種特殊的EE算法(Exploitation & Exploration),叫「epsilon貪心」(epsilon-Greedy)。

根據這樣的方式搜集的數據可以認為是沒有位置偏差的。我們從隨機顯示物品的這部分流量中去估計流行度,然後在另外一個部分的流量裡去顯示物品。

如果從數學上對點擊率建模,其實可以把一個物品在顯示之後是否被點擊看成是一個「伯努利隨機變量」,於是對點擊率的估計,就變成了對一個伯努利分布參數估計的過程。

有一種參數估計的方法叫做「最大似然估計法」(Maximum Likelihood Estimation)。簡而言之,就是說,希望找到參數的取值可以最大限度地解釋當前的數據。我們利用最大似然法就可以求出在某一段時間內的點擊率所代表的伯努利分布的參數估計。這個估計的數值就是某個物品當前的點擊總數除以被顯示的次數。通俗地講,如果我們顯示某個物品10次,被點擊了5次,那麼在最大似然估計的情況下,點擊率的估計值就是0.5。

顯然,這樣的估計有一定的局限性。如果我們並沒有顯示當前的物品,那麼,最大似然估計的分母就是0;如果當前的物品沒有被點擊過,那麼分子就是0。在這兩種情況下,最大似然估計都無法真正體現出物品的流行度。

高級流行度估計

從統計學的角度來講了講,如何利用最大似然估計法來對一個伯努利分布所代表的點擊率的參數進行估計。

這裡面的第一個問題就是剛才我們提到的分子或者分母為0的情況。顯然,這種情況下並不能很好地反應這些物品的真實屬性。

一種解決方案是對分子和分母設置「先驗信息」。就是說,雖然我們現在沒有顯示這個物品或者這個物品沒有被點擊,但是,我們「主觀」地認為,比如說在顯示100次的情況下,會有60次的點擊。注意,這些顯示次數和點擊次數都還沒有發生。在這樣的先驗概率的影響下,點擊率的估計,或者說得更加精確一些,點擊率的後驗概率分布的均值,就成為了實際的點擊加上先驗的點擊,除以實際的顯示次數加上先驗的顯示次數。你可以看到,在有先驗分布的情況下,這個比值永遠不可能為0。當然,這也就避免了我們之前所說的用最大似然估計所帶來的問題。

利用先驗信息來「平滑」(Smooth)概率的估計,是貝葉斯統計(Bayesian Statistics)中經常使用的方法。如果用更加精準的數學語言來表述這個過程,我們其實是為這個伯努利分布加上了一個Beta分布的先驗概率,並且推導出了後驗概率也是一個Beta分布。這個Beta分布參數的均值,就是我們剛才所說的均值。

在實際操作中,並不是所有的分布都能夠找到這樣方便的先驗分布,使得後驗概率有一個解析解的形式。

另外一個可以擴展的地方就是,到目前為止,我們對於流行度的估計都是針對某一個特定的時段。很明顯,每個時段的估計和前面的時間是有一定關聯的。這也就提醒我們是不是可以用之前的點擊信息,來更加準確地估計現在這個時段的點擊率。答案是可以的。當然,這裡會有不同的方法。

一種最簡單的方法還是利用我們剛才所說的先驗概率的思想。那就是,當前T時刻的點擊和顯示的先驗數值是T-1時刻的某種變換。什麼意思呢?比如早上9點到10點,某個物品有40次點擊,100次顯示。那麼10點到11點,我們在還沒有顯示的情況下,就可以認為這個物品會有20次點擊,50次顯示。注意,我們把9點到10點的真實數據乘以0.5用於10點到11點的先驗數據,這種做法是一種主觀的做法。而且是否乘以0.5還是其他數值需要取決於測試。但是這種思想,有時候叫作「時間折扣」(Temporal Discount),是一種非常普遍的時序信息處理的手法。

總結:

基於流行度的推薦系統的基本原理。

第一, 介紹了為什麼需要基於流行度進行推薦;

第二,詳細介紹了如何對流行度進行估計以及從統計角度看其含義;

第三,一些更加高級的流行度估計的方法。

相關焦點

  • 基於用戶畫像與新聞詞向量的個性化新聞推薦模型
    摘要:目前,由於用戶行為數據的高維稀疏特點以及衡量新聞內容相似性的複雜度較高,本文針對這兩個問題,從分類角度考慮,提出一種基於用戶畫像與新聞詞向量的個性化新聞推薦模型,對用戶的行為數據等進行分析,構建用戶畫像模型,提取用戶畫像特徵,並使用指數衰減模型的Word2Vec框架進行詞向量訓練,結合文本特徵的向量空間模型構建新聞全局特徵
  • 動手搭建一個基於 CNN 的電影推薦系統
    本文中,我們將從深度學習卷積神經網絡入手,基於 Github 的開源項目來完成 MovieLens 數據集的電影推薦系統。什麼是推薦系統?什麼是推薦系統呢?首先我們來看看幾個常見的推薦場景。常見的推薦系統主要包含兩個方面的內容,基於用戶的推薦系統(UserCF)和基於物品的推薦系統(ItemCF)。兩者的區別在於,UserCF 給用戶推薦那些和他有共同興趣愛好的用戶喜歡的商品,而 ItemCF 給用戶推薦那些和他之前喜歡的商品類似的商品。這兩種方式都會遭遇冷啟動問題。
  • 深度CTR預估模型在應用寶推薦系統中的探索
    模型的衍變經歷了從經典機器學習LR、FM再到深度學習DNN、Wide&Deep、雙塔、DIN等的百花齊放。本文將針對應用寶的推薦場景,展開CTR模型探索優化。 本文主要針對以上挑戰,在當下深度CTR預估模型的基礎上展開模型優化探索,通過引入更長周期用戶行為和app描述文本信息,並進一步挖掘用戶行為興趣,有效促進了推薦效果提升。
  • 變分自編碼器如何淘汰經典的推薦系統
    推薦系統可以來拯救我們。推薦系統是一種模型,通過向用戶展示他們可能感興趣的內容,幫助他們探索音樂和新聞等新內容。在Snipfeed,我們每天處理成千上萬的內容,用戶群的要求很高:Gen Z.通過利用最先進的深度學習推薦系統,我們幫助用戶瀏覽他們最喜歡的視頻、新聞、和博客。
  • 使用Python構建一個推薦系統需要幾步
    一種基本方法是應用基於流行度的策略,即推薦最受歡迎的物品。這些可以通過最近整體或區域流行的內容來確定。一旦我們了解了用戶的喜好,推薦物品就會更加容易。另一方面,物品冷啟動意味著將新產品投放市場或添加到系統中。用戶行為是對於確定任何產品的價值的最重要的因素。物品獲得的互動越多,我們的模型就越容易將物品推薦給合適的用戶。我們可以利用基於內容的過濾來解決此問題。
  • Netflix推薦系統模型的快速線上評估方法——Interleaving
    有經驗的算法工程師肯定非常清楚,在一個模型的開發周期中,佔工作量大頭的其實是特徵工程和模型評估及上線的過程。在機器學習平臺已經非常成熟的現在,模型結構的實現和調整反而僅僅是幾行代碼的事情。所以如果能夠將模型評估和線上 AB Test 的效率提高,那一定是大大解放算法工程師效率的事情。
  • 從模型到部署,FPGA該怎樣加速廣告推薦算法
    圖 1:某美食 APP 的推薦頁面這些 APP 都會有類似「猜你喜歡」這類欄目。在使用時會驚嘆「它怎麼直到我喜歡這個」,當然,也會有「我怎麼可能喜歡這個」的吐槽。其實這些推送都是由機器學習搭建的推薦系統預測的結果。今天就介紹一下推薦系統中的重要成員 CTR 預估模型,下面先讓大家對 CTR 預估模型有一個初步認識。
  • 一種基於能量模型的神經網絡架構受限玻爾茲曼機
    ,但近年來在推薦系統中受到了越來越多的關注,在協同過濾推薦等領域表現出越來越重要的作用。基於這樣的啟發,科學家們將這一觀點應用到深度學習中,來度量模型質量。 深度學習模型的目的之一便是對變量之間的依賴關係進行編碼,將變量組合與一個標量能量聯繫起來,而這一能量就作為模型能力的度量。通常情況下,較小的能量意味著更加合理的變量組合。
  • IJCAI 2020|推薦系統中的隱私威脅與對策
    隱私保護問題隨著推薦系統對個人數據需求的增加而變得愈發重要。聯邦學習作為一種解決隱私問題的重要技術,通過在各個參與方本地訓練模型並交換參數,來實現在隱私數據不出本地的前提下,多方合作構建推薦系統。但是簡單的參數傳遞仍然存在隱私洩漏的風險。微眾銀行AI營銷團隊聯合香港科技大學研究了不同聯邦推薦場景下推薦系統中的潛在隱私風險,並提供了解決方案。
  • 高達模型工具套裝是坑嗎?新手模型工具推薦
    emmm……我又回來啦,近日在貼吧裡看到有人聊到模型工具巴拉巴拉的作為入坑n年操壞無數剪鉗筆刀的廢物大白就想分享下關於組裝模型的工具有什麼好的推薦,讓小白少走彎路,早日獲得GBWC冠軍,迎娶白富美,走上膠佬巔峰
  • 一種基於線性化直升機數學模型的仿真系統
    摘要:為了配合飛行控制系統的設計和開發,本文設計了一種基於線性化直升機數學模型的半物理仿真系統。重點講述了仿真系統的系統結構以及各個組成部分的功能,描述了線性化直升機仿真模型的基本原理和實現過程,並以航線飛行為例給出了仿真過程和仿真結果。實際使用表明,本系統具有結構簡單、仿真準確、可靠性高的特點,達到了設計要求。
  • 深度解析數據挖掘在推薦系統中的應用
    在移動網際網路時代, 我們會接收到很多由推薦系統推薦過來的信息。比如在逛淘寶、京東時,你會看到「猜你喜歡」這樣的推薦商品; 刷今日頭條、抖音時會首選看推薦的新聞、短視頻,接收來自推薦系統的信息似乎已經成了一種習慣。實際上,在構建推薦系統的過程中會用到大量的數據挖掘算法。
  • 基於PredictionIO的推薦引擎打造,及大規模多標籤分類探索
    PredictionIO尹緒森首先介紹了PredictionIO,他表示,推薦系統打造過程中,除下Spark,系統還需要其他組件,而PredictionIO就是基於Spark一個完整的端到端Pipeline,讓用戶可以非常簡單的從零開始搭建一個推薦系統。
  • LBS推薦系統的設計方法
    由於推薦系統是興趣點系統的核心,所以接下來,我們將介紹推薦系統。推薦系統是一個很龐大的課題,將分成兩期予以介紹:本期講述推薦系統的設計方法,包含推薦系統的數學基礎和設計原理。LBS應用的推薦系統的原理與這些典型的推薦系統應用的基本原理相同,比如:美團/糯米的興趣點推薦,淘寶/支付寶口碑的興趣點推薦。希望通過這兩期的介紹,讀者可以明白一個推薦系統的設計原理,以及如何應用。在本期中我們將首先講述推薦系統的前世今生,之後講述推薦系統的數學基礎,最後講述推薦系統的設計原理。
  • CIKM2019 挑戰杯冠軍方案:層次GNN模型在推薦中的應用
    CIKM 是中國計算機學會(CCF)推薦的資料庫/數據挖掘/內容檢索領域的 B 類會議。簡要分析僅僅看題目描述我們可以發現,這個題目本質上是一個召回預估問題。更具體的,這個問題應該以 u-i 對為輸入,經過一定模型的判斷,最終給出一個 u-i 對對應的分數,再根據每個 user 對應的 u-i 對分數從大到小的排序,取出 top50 的 item 作為最終得到預測點擊商品集合。
  • 有監督學習:從過去到現在的模型流行度(深度翻譯好文)!
    由於監督學習的可用方法很多,因此經常會提出以下問題:**最佳模型是什麼?**眾所周知,這個問題很難回答,因為正如喬治·博克斯(George Box)所說的那樣,所有模型都是錯誤的,但有些模型是有用的。特別是,模型的實用性主要取決於手頭的數據。因此,這個問題沒有普遍的答案。以下是一個更容易回答的問題:什麼是最受歡迎的模型?。
  • 在推薦系統中,我還有隱私嗎?聯邦學習:你可以有
    這種內容過濾的方法具有以下特點:一是,方法原理簡單、易於實現,直接根據用戶點擊的數據進行分析,因此不存在稀疏性和冷啟動的問題。二是,直接基於 item 進行特徵構建和推薦,推薦準確度過高,且不受其它用戶熱門推薦的影響。三是,所依賴的 item、特徵等直接影響了推薦效果,必須保證特徵準確且在具體的應用場景中是真實有效的。
  • 基於深度神經網絡的脫硫系統預測模型及應用
    關鍵詞:燃煤電廠;脫硫系統;計算機模擬;深度學習;神經網絡;預測;模型應用;智慧環保;當前,國家正加快推進以 5G、人工智慧、工業網際網路、物聯網為代表的新型基礎設施建設(新基建),電力行業的智能化建設也蓬勃發展。國內大型火力發電廠很早就實現了廠級 DCS 數據監控,歷史運行數據豐富,為實現數據驅動的神經網絡建模提供了有利條件。
  • 論文推薦|基於系統聚類-加權馬爾科夫耦合模型滑坡預警 方法研究與...
    (3)提出了以預警區域敏感度、預警正確率與預測共識率為評估函數來檢驗滑坡預警模型的正確性和有效性,結合經典滑坡案例進行模型的驗證對比分析,對滑坡預警方法提供了借鑑意義。針對現有滑坡預警理論與方法仍存在的可信度較低、錯誤率高及預警不及時等問題,基於馬爾科夫鏈理論和系統聚類基本思想,視滑坡過程中的位移速度演變為馬爾科夫過程,運用聚類分析將GPS 速度觀測信號轉換為狀態信號,從隨機過程角度對滑坡位移加速度a>0 這一滑坡判據進行了新的描述。
  • 論文推薦王苗苗:無縫線性回歸與預測模型
    對此,本文提出了一種嚴格考慮所有變量觀測誤差的無縫線性回歸和預測模型,該模型將回歸模型的建立和因變量預測聯合處理,在建立回歸模型過程中對待預測自變量的觀測誤差進行估計並修正,從而提高了模型預測效果。理論證明,現有的幾種線性回歸模型都是無縫線性回歸和預測模型的特例。試驗結果表明,無縫線性回歸和預測模型的預測效果優於現有的幾種模型,尤其在變量觀測誤差相關性較大時,無縫模型對預測效果的改善更為顯著。