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


為了避免誤解, 這里簡單解釋一下隱式反饋, 只要不是用戶直接評分的操作行為都算隱式反饋, 包括瀏覽、點擊、播放、收藏、評論、點贊、轉發等等 。 有很多隱式反饋是可以間接獲得評分的, 后面會講解 。 如果不間接獲得評分, 就用0、1表示是否操作過 。
在真實業務場景中用戶數和標的物數一般都是很大的(用戶數可能是百萬、千萬、億級, 標的物可能是十萬、百萬、千萬級), 而每個用戶只會操作過有限個標的物, 所以用戶行為矩陣是稀疏矩陣 。 正因為矩陣是稀疏的, 會方便我們進行相似度計算及為用戶做推薦 。
圖2:用戶對標的物的操作行為矩陣
相似度的計算可以采用cosine余弦相似度算法來計算兩個向量

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

文章插圖
(可以是上圖的中行向量或者列向量)之間的相似度:

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

文章插圖
計算完了用戶(行向量)或者標的物(列向量)之間的相似度, 那么下面說說怎么為用戶做個性化推薦 。
1.基于用戶的協同過濾
根據上面算法思想的介紹, 我們可以將與該用戶最相似的用戶喜歡的標的物推薦給該用戶 。 這就是基于用戶的協同過濾的核心思想 。
用戶u對標的物s的喜好度sim(u,s)可以采用如下公式計算, 其中U是與該用戶最相似的用戶集合(我們可以基于用戶相似度找到與某用戶最相似的K個用戶),

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

文章插圖
是用戶

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

文章插圖
對標的物s的喜好度(對于隱式反饋為1, 而對于非隱式反饋, 該值為用戶對標的物的評分),

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

文章插圖
是用戶

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

文章插圖
與用戶u的相似度 。

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

文章插圖
有了用戶對每個標的物的評分, 基于評分降序排列, 就可以取topN推薦給用戶了 。
2.基于標的物的協同過濾
類似地, 通過將用戶操作過的標的物最相似的標的物推薦給用戶, 這就是基于標的物的協同過濾的核心思想 。
用戶u對標的物s的喜好度sim(u,s)可以采用如下公式計算, 其中S是所有用戶操作過的標的物的列表,
是用戶u對標的物

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

文章插圖
的喜好度,

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

文章插圖
是標的物

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

文章插圖
與s的相似度 。

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

文章插圖
有了用戶對每個標的物的評分, 基于評分降序排列, 就可以取topN推薦給用戶了 。
從上面的介紹中我們可以看到協同過濾算法思路非常直觀易懂, 計算公式也相對簡單, 并且后面兩節我們也會說明它易于分布式實現, 同時該算法也不依賴于用戶及標的物的其他metadata信息 。 協同過濾算法被Netflix、Amazon等大的互聯網公司證明效果也非常好, 也能夠為用戶推薦新穎性內容, 所以一直以來都在工業界得到非常廣泛的應用 。
三、離線協同過濾算法的工程實現雖然協同過濾算法原理非常簡單, 但是在大規模用戶及海量標的物的場景下, 單機是難以解決計算問題的, 我們必須借助分布式技術來實現, 讓整個算法可以應對大規模數據的挑戰 。 在本節, 我們基于主流的Spark分布式計算平臺相關的技術來詳細講解協同過濾算法的離線(批處理)實現思路, 供大家參考(讀者可以閱讀參考文獻1、2、3、4了解協同過濾算法原理及工業應用), 同時會在下一節講解在近實時場景下怎么在工程上實現協同過濾算法 。
在這里我們只講解基于標的物的協同過濾算法的工程實現方案, 基于用戶的協同過濾思路完全一樣, 不再贅述 。
為了簡單起見, 我們可以將推薦過程拆解為2個階段, 先計算相似度, 再為用戶推薦 。 下面分別介紹這兩個步驟怎么工程實現 。
1.計算topK相似度
本步驟我們計算出任意兩個標的物之間的相似度, 有了任意兩個標的物之間的相似度, 那么我們就可以為每個標的物計算出與它最相似的K個標的物了 。

推薦閱讀