分享協同過濾思想簡介 什么是協同過濾?( 六 )


  1. 更新用戶的行為記錄HBase表:UAction
【分享協同過濾思想簡介 什么是協同過濾?】基于(1)獲取中的用戶行為記錄, 當(2)處理完之后, 將行為記錄插入用戶行為表UAction中 。 為了計算簡單方便及保留用戶最近的行為, 用戶行為表中我們可以只保留最近N條(可以選擇的參數, 比如20條)行為, 同時只保留最近一段時間內(比如5天)的行為 。
  1. 為用戶生成個性化推薦
有了上面(1)、(2)、(3)步的基礎, 最后一步是為用戶做推薦了, 我們對計算過程簡單說明如下:
用戶U對標的物的評分

分享協同過濾思想簡介 什么是協同過濾?

文章插圖
可以采用如下公式計算 。

分享協同過濾思想簡介 什么是協同過濾?

文章插圖
其中t是用戶操作過的標的物,

分享協同過濾思想簡介 什么是協同過濾?

文章插圖
是該用戶對標的物t的得分(即圖10中UAction數據結構中的評分r),

分享協同過濾思想簡介 什么是協同過濾?

文章插圖
是標的物t和標的物s之間的相似度, 可以采用如下公式計算, 這里

分享協同過濾思想簡介 什么是協同過濾?

文章插圖
就是標的物關聯表CR中(t,s)對應的得分,

分享協同過濾思想簡介 什么是協同過濾?

文章插圖


分享協同過濾思想簡介 什么是協同過濾?

文章插圖
類似 。

分享協同過濾思想簡介 什么是協同過濾?

文章插圖
當我們計算完了用戶U跟所有標的物的得分之后, 通過對得分降序排列取topN就可以作為U的推薦了 。 當標的物量很大(特別是新聞短視頻類產品)時, 實時計算還是壓力非常大的, 這時我們可以采用一個簡單的技巧, 我們事先從CR表中過濾出跟用戶行為表中至少有一個標的物t有交集的標的物s(即標的物對

分享協同過濾思想簡介 什么是協同過濾?

文章插圖
得分不為零), 只針對這部分標的物計算

分享協同過濾思想簡介 什么是協同過濾?

文章插圖
, 再從這些標的物中選擇得分最大的topN推薦給用戶 。 為什么可以這么做呢?因為如果某個標的物s與用戶行為標的物集合無交集, 那么根據計算

分享協同過濾思想簡介 什么是協同過濾?

文章插圖
的公式,

分享協同過濾思想簡介 什么是協同過濾?

文章插圖
一定為0, 這時計算出的

分享協同過濾思想簡介 什么是協同過濾?

文章插圖
也一定為0 。
上面針對一個用戶怎么實時計算協同過濾做了講解, 那么在一個時間窗口W中有若干個用戶都有操作行為, 這時可以將用戶均勻分配到不同的Partition中, 每個Partition為一批用戶計推薦 。 具體流程可以參考下面圖11 。 為每個用戶計算好推薦后, 可以插一份到HBase中作為一個副本, 另外還可以通過Kafka將推薦結果同步一份到CouchBase集群中, 供推薦Web服務為用戶提供線上推薦服務 。

分享協同過濾思想簡介 什么是協同過濾?

文章插圖
圖11:在同一時間窗口W中為多個用戶生成個性化推薦
近實時的協同過濾主要用于對時效性要求比較高的產品形態, 比如新聞、短視頻等應用 。 這些應用標的物更新快, 用戶消耗一個標的物(讀一篇文章、看一段短視頻)所花的時間較短, 這類應用一般是用于填補用戶的碎片化時間的 。 而對于電商、視頻等產品, 近實時的協同過濾不是必須的 。
上面我們講解的只是近實時協同過濾的一種實現方案, 其實近實時協同過濾有很多可行的實現方案, 我們的實現方案跟參考文獻6中的covisitation counts方案思路本質上是一致的 。 讀者也可以閱讀參考文獻5, 騰訊給出了另外一個利用Storm來實時實現協同過濾的方案, 思路是非常值得借鑒的 。 另外參考文獻6中Google實現了一個新聞的協同過濾算法, 通過MinHash算法基于用戶行為來近實時計算用戶相似度, 最終通過類似基于用戶的協同過濾的算法來為用戶推薦 。 參考文獻7、8也對怎么增量做協同過濾給出了獨特的方法和思路 。
五、協同過濾算法的應用場景協同過濾是非常重要的一類推薦算法, 我們在第三、第四節介紹了批處理(離線)協同過濾和近實時協同過濾的工程實現方案, 相信大家對怎么基于Spark及HBase技術實現協同過濾有了比較清晰的認知 。 那么協同過濾算法可以用于哪些推薦業務場景呢?它主要的及延伸的應用場景有如下3類:

推薦閱讀