產品經理需要了解的推薦演算法之——個性化推薦演算法2(基於用戶)

上上文:產品經理需要了解的推薦演算法之--熱度推薦原理和實施 - 知乎專欄

上文:產品經理需要了解的推薦演算法之--個性化推薦演算法1(基於內容) - 知乎專欄

3.2 基於用戶的協同推薦

終於,經過團隊的努力,你的產品已經有了大量活躍用戶了,這時候你開始不滿足於現有的演算法,雖然基於內容的推薦已經很精準了,但總是少了那麼一點性感,因為你所有給用戶的內容都是基於他們的閱讀習慣推薦的,沒能給用戶「不期而遇」的感覺。

於是你就開始做基於用戶的協同過濾了。

基於用戶的協同過濾推薦演算法,簡單來講就是依據用戶A的閱讀喜好,為A找到與他興趣最接近的群體,所謂「人以群分」,然後把這個群體里其他人喜歡的,但是A沒有閱讀過的內容推薦給A;舉例我是一個足球迷,系統找到與我類似的用戶都是足球的重度閱讀者,但與此同時,這些「足球群體」中有一部分人有看NBA新聞的習慣,系統就可能會給我推薦NBA內容,很可能我也對NBA也感興趣,這樣我在後台的興趣圖譜就更完善了。

1)用戶群體劃分

做基於用戶的協同過濾,首先就要做用戶的劃分,可以從三方面著手:

a. 外部數據的借用

這裡使用社交平台數據的居多,現在產品的登錄體系一般都借用第三方社媒的登錄體系,如國外的Facebook、Twitter,國內的微信、微博,借用第三方賬戶的好處多多,例如降低門檻,方便傳播等,還能對個性化推薦起到重要作用。因為第三方賬戶都是授權獲取部分用戶信息的,往往包括性別,年齡,工作甚至社交關係等,這些信息對用戶群劃分很有意義。

此外還有其他的一些數據也能借用,例如IP地址,手機語種等。

使用這些數據,你很容易就能得到一個用戶是北京的還是上海的,是大學生還是創業者,並依據這些屬性做準確的大類劃分。比如一篇行業投資分析出來後,「上海創業圈」這個群體80%的用戶都看過,那就可以推薦給剩下的20%。

b. 產品內主動詢問

常見在產品首次啟動的時候,彈框詢問用戶是男是女,職業等,這樣能對內容推薦的冷啟動提供一些幫助,但總體來說性價比偏低,只能詢問兩三個問題並對用戶的推薦內容做非常粗略的劃分,同時要避免打擾到用戶;這種做法算是基於用戶個性化的雛形。

c. 對比用戶特徵

前文已經提到過,新聞的特徵加用戶的閱讀數據能得到用戶的特徵,那就可以通過用戶特徵的相似性來劃分群體。

2)內容推薦實施

我們結合一個很小的實例來了解用戶協同過濾的原理,包括如何計算用戶之間的相似性和如何做出推薦。假設有A,B,C,D,E共5個用戶,他們各自閱讀了幾篇新聞並做出了閱讀,贊,收藏,評論,分享操作,我們對這幾種行為賦予的分數分別為1,2,3,4,5分,這樣用戶對每條新聞都有自己的得分,其中「-」表示未閱讀,得分如下:

接下來,我們需要給用戶E推薦4,5,6中的哪一篇?

用戶的閱讀特徵向量由用戶所有的閱讀數據決定,我們以用戶E閱讀過的新聞數據作為參考標準,來找到與E最相似的用戶。

多維向量的距離需要通過歐幾里得距離公式來計算,數值越小,向量距離約接近

算出結果

distance(E,A)=4.123 (用戶A沒有閱讀news2,因此news2的數據不能用來計算與用戶E的相似度,這裡取1,3)

distance(E,B)=3.162

distance(E,C)=3.742

distance(E,D)=1.414

因此得出結果用戶D是與用戶E閱讀喜好最接近的那個,應該優先歸為同一類用戶。最終結論根據用戶D的閱讀數據,優先推薦news4。

3)內容選取

我們通過閱讀特徵向量把用戶做群體劃分後,接下來就是如何獲取新聞推薦的優先順序。上面的例子裡面只需要選出一個相似用戶,並且用戶A,B,C,D都只閱讀news4,5,6中的一條,所以比較簡單,但現實情況中,同一個用戶群體閱讀的新聞多且隨機,用戶交互更是錯綜複雜,如何得出推薦新聞的優先順序呢?

假設用戶X在系統歸屬於群體A,這個群體有n個用戶,分別為A0,A1,A2...An,這些用戶的集合用S(X,n)表示;

a. 首先,我們需要把集合中所有用戶交互過(閱讀,評論等)的新聞提取出來;

b. 需要剔除掉用戶X已經看過的新聞,這些就不用再推薦了,剩下的新聞集合有m條,用N(X,m)來表示;

c. 對餘下的新聞進行評分和相似度加權的計算,計算包括兩部分,一是用戶X與S(X,n) 每一個用戶的相似性,二是每個用戶對新聞集N(X,m)中每條新聞的喜好,這樣就能得到每條新聞相對於用戶X的最終得分;

d. 將N(X,m)中的新聞列表按照得分高低的順序推薦給用戶。

4)優缺點

相比於基於內容的推薦演算法,基於用戶的協同過濾同樣優缺點明顯。

優點主要在於對分詞等演算法的精確度無太大要求,推薦都是基於用戶的行為數據去不斷學習和完善;同時能發現用戶的潛在閱讀興趣,能「製造驚喜」;

而缺點則是啟動的門檻高,用戶量不夠時幾乎無法開展;並且學習量不夠時推薦結果較差。

4 總結

個性化推薦的演算法網上有很多資料,也有很多其他的實現方法,因為筆者了解也有限,所以也不誤導大家了。

熱度和個性化推薦演算法,作為大部分內容型產品的核心賣點之一,依然在不斷地進化和完善中。沒有哪種演算法是完美的,甚至沒有哪種演算法是一定優於其他的,在實際使用中,很多產品都是多演算法結合去做好內容推薦。

而產品經理在演算法的實施中,絕對不是一句「我們要做個性化推薦」就完事的,必須深入演算法內部,對演算法的原理做深入了解,然後結合自己的產品特徵來部署和優化。

因此我針對產品經理整理了這一篇相對粗淺的演算法相關的介紹,如有對這些內容感興趣的,歡迎探討!如有描述不當之初,敬請指正,感激不盡!

推薦閱讀:

論文引介 | Version-Aware Rating Prediction for Mobile App Recommendation
《推薦系統實踐》筆記
推薦系統中基於深度學習的混合協同過濾模型
為什麼豆瓣的評價只有5顆星呢?而不是類似Mtime電影的10顆星呢?

TAG:个性化推荐 | 协同过滤 | 产品经理 |