推薦系統起手式-幾種簡單推薦模型(基於流行度的推薦)

從今天起,寒山叟將給帶領你們進入另外一個重要領域,那就是推薦系統。寒山叟將會針對各類推薦系統,從算法原理和工程架構方面給你們一一作介紹,但願對正在學習或工業實踐中的你有所幫助,也歡迎你們留言探討,指正不足。html

基於流行度的推薦算法

1.簡介架構

什麼是基於流行度的推薦?就是推薦模型的創建是圍繞計算內容的流行度展開的,也就是說基於流行度推薦的核心就是計算內容的流行度。通熟講就是什麼內容流行度越高,就給用戶推薦什麼。本質上就是什麼內容對用戶吸引力高,就給用戶推薦什麼。那什麼是流行度呢?也就是咱們一般說的「熱度」。咱們在各個互聯網產品中最多見到基於流行度推薦的形式就是某某榜TOP(N)。好比微博的熱搜榜,酷我音樂排行榜,電商網站熱搜榜、某某類商品銷量排行榜等等都四處可見。固然這裏咱們須要注意,咱們不能把基於流行度的推薦說成是TOP(N),TOP(N)是一種產品形式,而流行度推薦指的是一類圍繞流行度計算而產生的推薦模型。
學習

2.影響流行度的因素測試

在物理上「熱度」受時間和空間的限制,好比燒的炙紅的鐵塊距離你10cm和10m感覺到的熱度是不一樣的,一樣的距離你10分鐘和10小時感覺到的熱度也是不一樣的。言歸正傳,咱們看下在推薦中內容的熱度是怎樣受到時間和空間因素影響的。咱們作推薦的目標是將相對於用戶最好的內容推薦給用戶,這裏咱們作一個假設,質量越好的內容,他的流行度就越高,一般咱們是這麼理解的。然而事實卻不是這樣的,內容質量雖然會很大程度上決定流行度,可是時間和空間纔是流行度的幕後推手。網站

下面咱們來講一下時間因素,時間因素咱們分兩方面看。首先,用戶訪問一個應用或服務,是有時間偏好的,這種時間偏好致使不一樣的應用或服務在時間維度有不一樣的「流量規律」。好比新聞類網站咱們通常會集中在早晨和晚上時段查看,任何新聞投放在這一時段都會有比較好的關注度,咱們不能說投放在中午的新聞就是質量差。其次,內容熱度隨着時間的推移是會發生衰減的。好比去年熱賣的商品與今年銷售的新品誰的質量高,咱們也不能下定論。總結:內容的質量必定程度決定內容的熱度,因爲應用在時間維度的流量差別會致使內容流行度差別很大,內容熱度在時間維度上的天然衰減也會致使流行度差別,因此咱們考察流行度首先要限制時間因素,即:某一時間段的流行度。spa

接着咱們來講一下空間因素,空間因素咱們分兩方面看。首先,用戶訪問一個應用或服務,進入不一樣位置的用戶多少是有經常都有隱含的差別,這就決定了,訪問應用位置的流量是有差別的。好比新聞類網站咱們通常會集中看首頁首航有啥文章,任何文章投放在這一位置都會有比較好的關注度,咱們不能說投放在犄角旮旯的文章就是質量差。其次,內容熱度隨着物理空間的遷移是而發生衰減的。好比美國人可能不會關心鹿晗和關曉彤談戀愛,可是中國人會,因此在應用國際版上的某內容的流行度也會發生變化,固然其中也有政策差別的影響。總結:內容的質量必定程度決定內容的熱度,因爲應用在空間維度的流量差別會致使內容流行度差別很大,內容熱度在空間維度上的天然衰減也會致使流行度差別,因此咱們考察流行度首先要限制空間因素,即:某一位置的流行度。htm

最後咱們總結一下:空間和時間會帶來應用訪問流量差別,間接影響了特定內容的流行度,當咱們進行流行度計量的時候,要限定時間和空間維度,不然流行度不能反映內容質量。blog

3.流行度的度量get

上面咱們討論了時間和空間因素對流行度計算的影響。因此咱們在度量流行度的時候,要排除時間和空間的影響,這裏咱們就不能用某一指標的絕度數量來表示。咱們知道時空因素影響流行度是經過流量密度來施加的,因此咱們要用一個相對值(比值)或某種可能性(機率)來度量流行度,用戶激發熱度行爲數/用戶數。好比咱們常說的點擊率、購買率、閱讀率、觀看率等等,如下咱們統稱爲點擊率。然而,點擊率自己雖然解決了一部分時間和位置誤差所帶來的影響,可是點擊率的估計所須要的數據依然會受到數據誤差的影響。所以,咱們每每但願可以創建無誤差的數據(這也是一個熱門的研究課題,有興趣你能夠了解一下:數據驅動-重疊實驗平臺構建,這裏就不展開論述了)。這裏我介紹一種常見的處理方式能夠收集沒有誤差的數據,就是將線上流量進行分桶,一個桶利用如今已有的對物品流行度的估計展現推薦結果內容,一個桶展現隨機內容,這種方法是一種特殊的EE 算法(Exploitation & Exploration),業界稱之爲「epsilon 貪心」(epsilon-Greedy)。 以後咱們討論的主題都是在無偏置的流量前提下。

4.流行度預估建模計算

下面我說一種簡單的CTR預估問題建模思想。從數學角度講點針對點擊率的建模,其實就是把內容展現後是否被用戶點擊,看做一個「伯努利隨機變量」,點擊率預估就變成了對「伯努利分佈參數估計」的問題,好比這時候咱們能夠用「極大似然估計」的方法,試着找到能最大限度解釋當前數據的參數。咱們利用最大似然法就能夠求出在某一段時間內的點擊率所表明的伯努利分佈的參數估計。這個估計的數值就是某個物品當前的點擊總數除以被顯示的次數。通俗地講,若是咱們顯示某個物品 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),是一種很是廣泛的時序信息處理的手法。

針對CTR預估還有好多思路和經驗!你若是有興趣,期待咱們在廣告裏能夠繼續探討。

相關文章
相關標籤/搜索